四百条发现,哪些值得您花一天时间?
SENTINEL AI 的另一半读取的不是网络,而是项目:源代码、依赖库、遗留的密码、打包方式和已发布的网站。然后判断哪些发现真正需要人来处理。
问题藏身的五个地方
源代码
项目代码中的危险写法和常见错误。
依赖库
来自开放 OSV 数据库、涵盖 PyPI 和 npm 的约 24 万条已公开漏洞。本地文件仅 4 MB,离线检查。每个结果旁都显示数据库的时效。
密码与密钥
误入代码或配置中的凭据。
构建与部署
项目如何构建和运行。
已发布的网站
只有在指定负责人声明其有权测试该地址后才会进行,该声明写入带签名的日志。只发送普通 GET 请求:不提交、不注入、不暴力破解。
来源可以是服务器上的文件夹、压缩包、代码仓库地址或网站地址。
检查之上的那一层
任何工具都能运行检查。难的是判断四百条发现中哪些值得花一天时间,并说清原因。为此我们使用与攻击检测相同的算法。
原因相同的警告归并为一项附带解释的任务。
是证据,不是判决
每项检查给出的都是带权重的证据,而不是定论。
项目的上下文
这是测试代码,这个值是“changeme”,这个包从未被导入,这个库只在开发时安装。
一个原因,一项任务
关于同一个过期库的四十条警告,只是一个决定,而不是四十个。
面向四类读者的解释
是什么、意味着什么、该怎么做,支持六种语言。
同一份带签名的日志
包括是谁发起了检查。
可以直接发送的报告
一个文件:发现了什么、意味着什么、需要修复什么,按重要性排序。可在任何浏览器中打开,可保存为 PDF,发给团队、承包商或管理层。
重要的在前
任务按评分排序,而不是按警告数量。
修复什么
每项任务都有解释和具体措施。
数据库的时效
来自四个月前数据库的结论,就是四个月前的结论,报告会如实写明。
检查做不到的事
发现的原始问题不比专业扫描器多
Semgrep、CodeQL、Trivy 或 ZAP 同样能找出原始问题。价值在于判断哪些发现重要。
看不到逻辑错误
错误的权限,以及系统各部分衔接中的缺陷,任何扫描器都看不到,仍需要人来审视。
结果干净不等于保证
它只说明这些检查没有发现问题,而不是项目就安全了。控制台会在每个结果旁注明这一点。
网站检查只读不写
它发现的是从外部可见的问题,而不是需要发起攻击才能证实的问题。