此脚本旨在扫描大型且多样化的代码库,以查找硬编码凭据或配置文件中的凭据。这些构成严重的安全问题,且极难检测和管理。
本脚本的特定重点是创建一个可直接由开发团队在 CI/CD 流水线中使用的工具,通过当代码中存在凭据时向团队发出警报来管理此问题的修复过程,从而使团队能够立即修复出现的问题。
也可以将该工具用作针对此问题的点扫描器,但由于凭据很可能随时间推移重新出现在代码库中,我们强烈建议将脚本集成到 CI/CD 流程、自动化构建机制或团队定期执行的任何其他定期自动化扫描过程中。
编写此脚本时考虑以下目标:
脚本尝试与其他流行的 SAST 工具提供一定程度的兼容性。
文件开头或附近的文本 "# noqa file" 将抑制该文件中任何进一步问题的报告,"flake8: noqa" 也是如此。
单行上的文本 "# noqa" 将抑制该行问题的报告。 许多其他常见的抑制注释也可用;当前列表如下:
# noinspection
# noqa
#noqa
@SuppressWarnings
DevSkim
NOLINT
NOSONAR
checkmarx
coverity
fortify
noinspection
nosec
safesql
veracode
我们还建议使用注释 "# noqa cred",以向团队成员明确表明误报的具体原因是凭据的存在。此处引用的许多工具(例如 devskim)使用与所用语言或平台相关的特定错误代码,这些代码也用于相同目的。同一行代码可能存在多种不同类型的错误。
我们提醒,抑制 SAST 工具中的真正阳性警报是极差的做法。最佳实践是定期审查代码库中的 SAST/代码检查抑制注释,以确保没有抑制任何“真正阳性”警报。
命令行标志 "-nosuppress" 会使脚本忽略所有抑制注释。