java.lang.security.audit.url-rewriting.url-rewriting
Community Favorite

Author
50,751
Download Count*
License
URL rewriting has significant security risks. Since session ID appears in the URL, it may be easily seen by third parties.
Run Locally
Run in CI
Defintion
rules:
- id: url-rewriting
message: URL rewriting has significant security risks. Since session ID appears
in the URL, it may be easily seen by third parties.
metadata:
cwe:
- "CWE-200: Exposure of Sensitive Information to an Unauthorized Actor"
owasp:
- A01:2021 - Broken Access Control
source-rule-url: https://find-sec-bugs.github.io/bugs.htm#URL_REWRITING
category: security
technology:
- java
references:
- https://owasp.org/Top10/A01_2021-Broken_Access_Control
cwe2021-top25: true
subcategory:
- vuln
likelihood: LOW
impact: MEDIUM
confidence: LOW
license: Commons Clause License Condition v1.0[LGPL-2.1-only]
severity: WARNING
languages:
- java
pattern-either:
- pattern: |
$X $METHOD(...,HttpServletResponse $RES,...) {
...
$RES.encodeURL(...);
...
}
- pattern: |
$X $METHOD(...,HttpServletResponse $RES,...) {
...
$RES.encodeUrl(...);
...
}
- pattern: |
$X $METHOD(...,HttpServletResponse $RES,...) {
...
$RES.encodeRedirectURL(...);
...
}
- pattern: |
$X $METHOD(...,HttpServletResponse $RES,...) {
...
$RES.encodeRedirectUrl(...);
...
}
- pattern: |
$X $METHOD(...) {
...
HttpServletResponse $RES = ...;
...
$RES.encodeURL(...);
...
}
- pattern: |
$X $METHOD(...) {
...
HttpServletResponse $RES = ...;
...
$RES.encodeUrl(...);
...
}
- pattern: |
$X $METHOD(...) {
...
HttpServletResponse $RES = ...;
...
$RES.encodeRedirectURL(...);
...
}
- pattern: |-
$X $METHOD(...) {
...
HttpServletResponse $RES = ...;
...
$RES.encodeRedirectUrl(...);
...
}
Examples
url-rewriting.java
package testcode.cookie;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class UrlRewriting extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
encodeURLRewrite(resp, req.getRequestURI());
}
// ruleid: url-rewriting
private String encodeURLRewrite(HttpServletResponse resp, String url) {
return resp.encodeURL(url);
}
// ruleid: url-rewriting
public String encodeUrlRewrite(HttpServletResponse resp, String url) {
return resp.encodeUrl(url); //Deprecated
}
// ruleid: url-rewriting
public String encodeRedirectURLRewrite(HttpServletResponse resp, String url) {
return resp.encodeRedirectURL(url);
}
// ruleid: url-rewriting
public String encodeRedirectUrlRewrite(HttpServletResponse resp, String url) {
return resp.encodeRedirectUrl(url); //Deprecated
}
// ok: url-rewriting
public String encodeRedirectURLRewrite(SomeDifferentRequest resp, String url) {
return resp.encodeURL(url);
}
// ok: url-rewriting
public String encodeRedirectUrlRewrite(HttpServletResponse resp, String url) {
return resp.getHeader(url);
}
}
Short Link: https://sg.run/3x7b