T09 · Insecure Skill Coding Practices
- Location
src/vettr-engine.ts:71- Finding
Target-Controlled .vettrignore Rules Can Bypass Security Scanning
- Content
View full analysis
0 && isExcluded(relativePath, ignorePatterns)) { continue; } ``` ```ts // src/utils/vettrignore.ts:14-24 export function parseVettrignore(content: string): VettrignoreResult { const patterns: string[] = []; const warnings: string[] = []; for (const raw of content.split('\n')) { const line = raw.trim(); if (line === '' || line.startsWith('#')) continue; patterns.push(line); } return { patterns, warnings }; } ``` ```ts // src/utils/vettrignore.ts:99-108 export function isExcluded(filePath: string, patterns: string[]): boolean { // Normalise to forward slashes for consistent matching const normalized = filePath.replace(/\\/g, '/'); for (const pattern of patterns) { const regex = patternToRegex(pattern); if (regex.test(normalized)) return true; } return false; } ``` ### Technical Analysis The scanner automatically trusts `.vettrignore` from the Skill being audited. Because that Skill is potentially attacker-controlled, its author can directly determine which files the security engine inspects. There are no restrictions preventing broad patterns such as `**`, `src/`, `*.js`, or `package.json`. Matching files are silently omitted before source analysis, dependency analysis, network-call extraction, lifecycle-script detection ...[truncated 1882 chars]- Remediation
View remediation
