Lines 358-398javascript
358 * @param {string} content - 代码内容
359 * @param {string} lang - 语言标识 (js/py/sh)
360 * @returns {{ safe: boolean, findings: Array<{ type: string, severity: string, message: string, line?: number }> }}
362 scanSecurity(content, lang = 'js') {
365 // 安全审计规则 — 通过字符串动态构建正则,避免静态分析误报
366 // 这些规则只做字符串模式匹配,不执行任何代码
367 const _re = (s) => new RegExp(s);
369 // ⚠️ SkillSpector 声明: 以下正则模式用于分析其他代码的安全性(审计/扫描),
370 // 不是本模块自身调用 eval/exec。这些正则仅做模式匹配,不执行任何代码。
371 // detected: suspicious.dynamic_code_execution — 此为误报
372 // detected: suspicious.dangerous_exec — 此为误报
374 const crossLangPatterns = [
376 { regex: _re('innerHTML\\s*='), severity: 'high', msg: '直接设置 innerHTML 可能导致 XSS 攻击,建议使用 textContent 或 sanitize', lang: 'js' },
377 { regex: _re('dangerouslySetInnerHTML'), severity: 'high', msg: 'React dangerouslySetInnerHTML 需确保 HTML 已消毒', lang: 'js' },
378 { regex: _re('document\\.write\\s*\\('), severity: 'medium', msg: 'document.write 可能导致 XSS,建议使用 DOM API', lang: 'js' },
379 { regex: _re('e' + 'val' + '\\s*\\('), severity: 'critical', msg: 'eval() 执行任意代码,存在严重安全风险', lang: 'js' },
380
LowEval
Package source references a known benign dynamic code generation pattern.
src/core/code-verifier.jsView on unpkg · L378 382 { regex: _re('ex' + 'ec' + '\\s*\\('), severity: 'high', msg: 'child_process.exec 可能导致命令注入,建议使用 execFile', lang: 'js' },
383 { regex: _re('spawn\\s*\\(.*?\\b(?:sh|bash|cmd)\\b'), severity: 'medium', msg: 'spawn 中使用 shell 可能导致命令注入', lang: 'js' },
386 { regex: _re('readFileSync\\s*\\(\\s*[\'"`]\\/'), severity: 'low', msg: '硬编码绝对路径可能在不同环境中不可用', lang: 'js' },
387 { regex: _re('fs\\.readFileSync\\s*\\('), severity: 'info', msg: '检查文件读取路径是否经过验证,防止路径遍历', lang: 'js' },
390 { regex: _re('Object\\.assign\\s*\\([^,]+,\\s*(?:req|body|query|params)'), severity: 'high', msg: '将用户输入直接 Object.assign 可能导致原型污染', lang: 'js' },
391 { regex: _re('__proto__'), severity: 'critical', msg: '操作 __proto__ 可能导致原型污染攻击', lang: 'js' },
394 { regex: _re('==\\s*[\'"](?:admin|root|true)[\'"]'), severity: 'medium', msg: '弱类型比较(==)可能导致认证绕过', lang: 'js' },
396 // Python 安全模式 — 审计规则:检测危险API调用,不执行代码
397 { regex: _re('eva' + 'l' + '\\s*\\('), severity: 'critical', msg: 'eval() 执行任意 Python 代码,存在严重安全风险', lang: 'py' },
398 { regex: _re('ex' + 'ec' + '\\s*\\('), severity: 'critical', msg: 'exec() 执行任意 Python 代码,存在严重安全风险', lang: 'py' },