From 5f5b0f7bb1137f68515e58bd4a9160d2aae0446c Mon Sep 17 00:00:00 2001
From: "pixee-ryandens[bot]"
<142246765+pixee-ryandens[bot]@users.noreply.github.com>
Date: Thu, 23 Jan 2025 07:05:01 +0000
Subject: [PATCH] Sandboxed URL creation to prevent SSRF attacks
---
pom.xml | 18 +++++++++++++++++-
.../com/hcl/appscan/sdk/http/HttpClient.java | 4 +++-
.../com/hcl/appscan/sdk/http/HttpsClient.java | 6 ++++--
3 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index c57af4ef..6b8caef9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,11 @@
wink-json4j
1.4
-
+
+ io.github.pixee
+ java-security-toolkit
+
+
@@ -139,4 +143,16 @@
HEAD
+
+
+
+ io.github.pixee
+ java-security-toolkit
+ ${versions.java-security-toolkit}
+
+
+
+
+ 1.2.1
+
diff --git a/src/main/java/com/hcl/appscan/sdk/http/HttpClient.java b/src/main/java/com/hcl/appscan/sdk/http/HttpClient.java
index 2caf1399..9f592db7 100644
--- a/src/main/java/com/hcl/appscan/sdk/http/HttpClient.java
+++ b/src/main/java/com/hcl/appscan/sdk/http/HttpClient.java
@@ -5,6 +5,8 @@
*/
package com.hcl.appscan.sdk.http;
+import io.github.pixee.security.HostValidator;
+import io.github.pixee.security.Urls;
import org.apache.wink.json4j.JSONException;
import org.apache.wink.json4j.JSONObject;
import java.io.DataOutputStream;
@@ -330,7 +332,7 @@ private HttpResponse makeRequest(Method method, String url,
private HttpURLConnection makeConnection(String url, Method method,
Map headerProperties) throws IOException {
- URL requestURL = new URL(url);
+ URL requestURL = Urls.create(url, Urls.HTTP_PROTOCOLS, HostValidator.DENY_COMMON_INFRASTRUCTURE_TARGETS);
HttpURLConnection conn = null;
conn = (HttpURLConnection) requestURL.openConnection(m_proxy);
conn.setRequestMethod(method.name());
diff --git a/src/main/java/com/hcl/appscan/sdk/http/HttpsClient.java b/src/main/java/com/hcl/appscan/sdk/http/HttpsClient.java
index 4b4e293c..6fcdf622 100644
--- a/src/main/java/com/hcl/appscan/sdk/http/HttpsClient.java
+++ b/src/main/java/com/hcl/appscan/sdk/http/HttpsClient.java
@@ -5,6 +5,8 @@
package com.hcl.appscan.sdk.http;
+import io.github.pixee.security.HostValidator;
+import io.github.pixee.security.Urls;
import java.io.DataOutputStream;
import java.io.IOException;
//import java.net.HttpsURLConnection;
@@ -268,7 +270,7 @@ private HttpResponse makeRequest(Method method, String url,
private HttpsURLConnection makeConnection(String url, Method method,
Map headerProperties) throws IOException {
- URL requestURL = new URL(url);
+ URL requestURL = Urls.create(url, Urls.HTTP_PROTOCOLS, HostValidator.DENY_COMMON_INFRASTRUCTURE_TARGETS);
try {
SSLContext sc = SSLContext.getInstance("TLS");
@@ -329,4 +331,4 @@ public void checkClientTrusted(java.security.cert.X509Certificate[] certs,
public void checkServerTrusted(java.security.cert.X509Certificate[] certs,
String authType) {
}
-}
\ No newline at end of file
+}