static-analysis: 大于 1 MB 的文件会被静默丢弃 — 该技能既不设置 --max-target-bytes 选项,也不会报告跳过操作
□ 什麽
Semgrep 跳过大于 “ - max- 目标字节” (默认 1000 000) 和 JSON 输出的文件
- 没有“路径”条目,没有出错,只是空白的“扫描”清单。 这个
semgrep技巧从不提高极限,也从不提及它——而不是在'run-scans.sh'中作为一面旗帜来提及它。
在
SKILL.md'中,而不是参考/扫描-modes.md'中。
结果是对一个从未打开的文件进行`0调查结果 ' 的扫描,即: 与一个干净的文件无法区分。
□再现.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 页:1 打印“ 函数 f () { 文档. write ("" + location.hash+" ); QQn' > big.js python3 -c "open ('big.js','a'). write ((''/' +' padding to push this file through an megbyte' *2 + chr(10) * 1100)" 页面存档备份,存于互联网档案馆. wc-c Big.js # 1012060 (英语).
semgrep --meths=off --config p/JavaScript --json /tmp/big.js | jq-c'.paths, {结果: (. results |长)}'
实际:
贾森
{"被扫描":[ ]
{"结果":0}没有 " 滑动 " 键,没有 " 错误 " ,没有结果。 同一文件的上限:
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
semgrep -- meterms=off --max-target-字节 --5000000 --config p/JavaScript --json /tmp/big.js
{. jq-c'{扫描: (. paths. scanned {长度),结果: [. results []. check id]}'
贾森
{"被扫描":1"结果":["JavaScript.browser.security.raw-html-concat.raw-html-concat"]]一个真正的XSS发现, 隐形在第一跑。
原因只能通过 " -- -- 动词 " 达到,技能不使用:
跳过限制小于 1000000 字节的文件 :
(仅与-max-目标字节旗相接)
• /tmp/big.js□ 影响
scans.json ' 记录调查结果:0 ' 和不包括已丢弃档案的`文件被扫描 ' 数,因此
下游没有任何东西能分辨出"被扫描而干净"和"从未打开"之间的区别. 这个
精确地点击安全扫描最重要的密码库:大型的单文件捆绑、遗留
单层文件,生成或销售文件。 任何超过 1 MB 的文件都会同时退出每个规则 。
" SKILL.md " 中的成功标准8说,必须报告其规则不包含任何内容的扫描。 这是同一类无声隙,目前无法从JSON中检测出.
□ 建议修正
其中任何一个都会关闭;第一个是单行道:
- 在
building argv'中通过明确、可配置的限制,例如:ARGV+=(--最大-目标字节"${SEMGREP MAX TARGET BYTES:2000-000}")'。 - 在 " scans.json " 中逐个查找所跳出的文件,以便它们以方式出现在报告中。
失败'和滑倒'已经这样做了——并注意到`scan-modes.md'中的限度。
证实反对`semgrep 1.176.1'.
内容来源: trailofbits/skills