Three new category loadouts, each = arsenal + an offline-scorable benchmark, opt-in and
honestly scoped (roster marks all 🚧; pacu/frida stay catalog_only, unit-tested non-mintable):
- cloud: aws/az/gcloud + scoutsuite/cloudfox/pmapper; cloud:bench IaC-misconfig detection
- mobile: apkleaks/mobsfscan/drozer/objection/class-dump; mobile:bench static ruleset
- binary/RE: ghidra/objdump/checksec/strings/readelf/gdb; binary:bench decompiled-sink detector
Mobile/binary benches are DETECTOR REGRESSION CHECKS (rules+fixtures co-authored — a pass is a
floor, not a detection rate). No new headline numbers; verify-claims 24/24.
tsc clean; 337 tests; lint 0 errors.
27 lines
958 B
TypeScript
27 lines
958 B
TypeScript
// Types for the binary-vuln benchmark's pure exports (consumed by the vitest test).
|
|
// Runnable logic lives in the sibling .mjs (scripts run under bare `node`, no build step).
|
|
export interface BinaryRule {
|
|
id: string;
|
|
desc: string;
|
|
test: (c: string) => boolean;
|
|
}
|
|
export interface BinaryFixture {
|
|
id: string;
|
|
desc: string;
|
|
clean: boolean;
|
|
expect: string[];
|
|
content: string;
|
|
}
|
|
export interface BinaryCorpus {
|
|
fixtures: BinaryFixture[];
|
|
}
|
|
export interface BinaryScore {
|
|
detection: { hits: number; total: number; rate: number };
|
|
discrimination: { clean: number; falsePositives: number };
|
|
perFixture: Array<{ id: string; clean: boolean; ok: boolean; expected?: string[]; detected: string[] }>;
|
|
}
|
|
export const RULES: BinaryRule[];
|
|
export function loadCorpus(): BinaryCorpus;
|
|
export function detect(content: string): Set<string>;
|
|
export function scoreCorpus(corpus: BinaryCorpus, detectFn?: (content: string) => Set<string>): BinaryScore;
|