核心要点钩子白名单与禁用列表;默认禁止 `preinstall`/`postinstall`,仅允许受控 `prepare`。检测危险特征:网络下载、代码注入、进程执行与敏感环境访问。审计输出命中规则与证据,支持例外审批与到期。实现示例type Scripts = { [k: string]: string } const allowHooks = new Set<string>(['prepare']) const denyHooks = new Set<string>(['preinstall','postinstall']) function suspicious(cmd: string): boolean { const r = [ /(curl|wget)\s+https?:\/\//i, /powershell\s+(Invoke-WebRequest|iwr)\s+/i, /node\s+-e\s+/i, /eval\(/i, /Function\(/i, /child_process/i, /require\(['"]child_process['"]\)/i, /process\.env\.[A-Z_]+/, ] return r.some(rx => rx.test(cmd)) } function validateScripts(scripts: Scripts, exceptions: Map<string, number>, now: number): { ok: boolean; errors: string[] } { const errors: string[] = [] for (const [k, v] of Object.entries(scripts)) { const key = `hook:${k}` const until = exceptions.get(key) || 0 if (denyHooks.has(k) && until < now) errors.push(`denied:${k}`) if (!allowHooks.has(k) && !denyHooks.has(k) && suspicious(v) && until < now) errors.push(`suspicious:${k}`) } return { ok: errors.length === 0, errors } } 审计与CI门禁构建前解析 `scripts` 字段;命中禁用或可疑规则即阻断并输出详情。对必要钩子启用例外审批与到期时间;产线默认拒绝未审批项。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部