Java 字符串输入参数的SSRF CheckMarx漏洞
我正在为我的一个项目运行CheckMarx扫描,它带有一个SSRF漏洞,用于方法的一个输入字符串参数。我的方法如下所示,参数param1抛出了SSRF漏洞 在该方法中,我使用HttpClient GetMethod调用第三方URL,并将param1作为查询字符串参数传递 CheckMarx的SSRF为:Java 字符串输入参数的SSRF CheckMarx漏洞,java,checkmarx,ssrf,Java,Checkmarx,Ssrf,我正在为我的一个项目运行CheckMarx扫描,它带有一个SSRF漏洞,用于方法的一个输入字符串参数。我的方法如下所示,参数param1抛出了SSRF漏洞 在该方法中,我使用HttpClient GetMethod调用第三方URL,并将param1作为查询字符串参数传递 CheckMarx的SSRF为: The application sends a request to a remote server, for some resource, using @DestinationElement
The application sends a request to a remote server, for some resource, using @DestinationElement in \src\com\test\Test.java:87. However, an attacker can control the target of the request, by sending a URL or other data in param1 at \src\com\test\Test.java:55.
在第55行,我有
public String method1(@WebParam(name = "param1") final String param1) {
在第87行我有
private String processRequest(final GetMethod method) throws IOException {
非常感谢为解决此SSRF漏洞提供的任何帮助。谢谢。要确认SSRF漏洞,还需要processRequest方法的代码片段。据我所知,CheckMarx报告了这个问题,因为“param1”应该包含第三方URL,应用程序正在使用该URL。有以下可能降低SSRF风险:
- 您是否需要第三方库来执行此功能?如果没有,那么您可以安全地删除该代码
- 若您需要第三方,并且URL保持不变,那个么您可以硬编码那个URL
- 如果你不能硬编码,并且它不断变化,那么你能列出可能的第三方URL吗?必须手动检查所有可能的第三方URL,并执行白名单,以允许使用所需的URL。或者,所有可能的URL都应该插入到后端的文件/数据库中,用户可以传递该特定URL的id
- 如果URL每次都在变化,并且没有办法进入白名单,那么应该防止这种方法进一步损害应用程序。在这种情况下,需要方法的代码片段,并且应该正确地检查方法
那么呢?你的问题是什么?或者你只是在吹牛:D。你的问题也缺少大部分相关的代码。。。无论如何,我确信Checkmarx报告也有解释和建议?我的问题是如何修复这个SSRF漏洞,因为字符串请求,我认为这将是最重要的。
private String processRequest(final GetMethod method) throws IOException {