owasp-dep-scan/blint/loldrivers-rules
- community
Checking that the SKILL.md file is still in the repository.
Periodically re-measure blint's Windows driver rule coverage against the LOLDrivers corpus and draft candidate rules for the gaps. Use when asked to refresh driver/BYOVD detection coverage, after new vulnerable drivers are published, or on a schedule via /loop.
Install
npx vskill@latest install owasp-dep-scan/blint/loldrivers-rulesSKILL.md
LOLDrivers rule coverage loop
Re-measures blint's driver rules against the LOLDrivers corpus of known-vulnerable drivers, then drafts rules for measured gaps. The corpus publishes each sample's imported function list, so import-based rules can be evaluated at scale without downloading any binaries.
This skill never commits and never edits shipped rule files directly. It produces a coverage report plus candidate rules in a staging file for a human to review. A high hit count proves a gap exists, not that a proposed rule is sound.
1. Measure
Add --dataset <file> to reuse a local copy instead of refetching, and --update-snapshot once you have finished a pass so the next run reports only what is new.
Read from the report:
rule_hits— per-rule hit counts. A rule that drops sharply between runs
usually means a regression in the rule, not a change in the corpus.
undetected_count/undetected_percent— samples where no driver rule fires.candidate_imports— imports ranked by frequency among undetected samples.
This is the raw material for new rules.
2. Decide whether there is a real gap
Group candidate_imports into capability clusters by hand before proposing anything. A cluster is rule-worthy when the imports co-occur and together grant a single coherent primitive. For example ZwOpenProcess + PsLookupProcessByProcessId
KeStackAttachProcess+ObOpenObjectByPointeris a cross-process
memory/handle primitive; that is one rule, not four.
Reject a cluster when:
- The imports are ubiquitous plumbing (locks, string helpers, pool allocation).
Extend UNINTERESTING_IMPORTS in the sync script instead.
- An existing rule already covers the capability under a different name. Check
blint/data/annotations/review_imports_pe.yml and review_drivers_win.yml first — overlapping rules inflate apparent coverage without adding signal.
- The capability is normal for the driver class in question. Filesystem and
network filter drivers legitimately import alarming-looking APIs.
3. Draft the rule
Delegate drafting of each accepted cluster to a subagent, one agent per cluster, so the drafts stay independent. Give the agent: the cluster's imports, their undetected-sample counts, and the instruction to match the existing rule style in blint/data/annotations/review_drivers_win.yml.
Every rule needs an id, title, summary, description and check_type. Requirements for the description, which is what a reviewer actually reads:
- State the primitive the imports grant and why it matters in kernel context.
- Name a concrete driver or CVE that exhibits it, when the corpus entry has one
(Category, Tags and the loldrivers Resources field are the sources).
- State the legitimate uses that will cause false positives. Every rule in this
area fires on benign vendor drivers; say so rather than implying certainty.
Write drafts to contrib/loldrivers/candidate-rules.yml, never to the shipped annotation files.
Prefer an IMPORT_REVIEWS rule when a set of import names is sufficient. Use a BINARY_REVIEWS rule with check_type: binary_analysis when the signal depends on a combination or on the absence of something, since import pattern rules cannot express either; that needs a matching branch in _evaluate_binary_analysis in blint/lib/binary_reviews.py.
4. Verify before proposing
A draft is not a candidate until all of these hold:
Load the candidate file with --custom-rules-dir (or copy it into a scratch annotations directory) when re-measuring, and report the before/after undetected_percent. A candidate rule that does not move that number is not worth shipping.
Then report to the user: the coverage delta, each proposed rule with its cluster evidence, and the false-positive exposure you could not rule out. Note explicitly that the corpus contains only known-vulnerable drivers, so it measures recall only — it says nothing about how often a rule fires on benign drivers. Claims about precision need a separate corpus of legitimate signed drivers.
Scheduling
To run this periodically:
Weekly matches the corpus's rate of change; daily mostly re-reports the same gaps. Use --update-snapshot at the end of a pass so subsequent runs surface newly published drivers rather than the whole corpus.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingcontrib/skills/loldrivers-rules/SKILL.md
Popularity
- Repository stars
- 452
- Repository forks
- 47
- 7-day trend score
- 31
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/owasp-dep-scan/blint/loldrivers-rules)