如何知道需要抑制哪些依赖项?基本上,是什么使得与那些相关的依赖关系不同?
举个例子会非常有帮助。
我强烈建议您不要在这里提出与安全相关的问题:您不是在寻找SO的财务建议,这同样适用于安全-聘请安全专家并将所有此类问题发送给他。
关于OWASP:的dependency-check-maven
- 如果发现了易受攻击的依赖项(
failBuildOnAnyVulnerability
、failBuildOnCVSS
等(,那么将其嵌入到构建生命周期中是一个坏主意,因为它会导致构建失败,否则它可能会突然停止整个SDLC,但开发人员不负责SEC的工作。不过,报告是可以的——只要给SEC人员一个机会,通过审查报告和提出建议来参与SDLC - 如果
dependency-check-maven
没有发现任何漏洞,这并不意味着应用程序当前不易受攻击,将来也不会受攻击——不幸的是,安全性不是state
,而是process
,这反过来意味着您需要定期执行此类检查,即使用关于已安装应用程序的详细信息来维护CMDB并针对该CMDB执行检查,或者使用CCD_ 7或其他工具 dependency-check-maven
使用NVD数据库作为漏洞信息的来源,不幸的是,NVD和MITRE实际上都没有进行安全分析——他们只是维护数据库,这导致了研究人员报告";脆弱性";这实际上不是一个漏洞,例如:CVE-2021-31684、CVE-2022-26520,然而,调查此类情况不是开发人员的责任
如果有时间,可以从pom中删除所有依赖项,将它们放在.bak
文件中。
当然,编译会失败,
但随后您将它们逐个添加回,并且只有一个Maven构建在抱怨它们的不足。
然后执行并检查应用程序中的所有内容是否仍然正常工作。
这样,当项目非常旧时,很少会删除两三个依赖项。
每个Maven依赖项都可以提供一些可传递的依赖项。
您的项目中使用的每个依赖项都是相关的,简单地说,没有它,项目就无法编译。您的项目在运行时可能需要一些依赖项。
您可以阅读有关Maven依赖关系机制以及如何排除依赖关系的内容。
您还可以检查的输出
mvn dependency:analyze
mvn dependency:tree
请熟悉Maven依赖插件的文档