Java: CWE-552 Query to detect unsafe request dispatcher usage#7286
Merged
smowton merged 17 commits intogithub:mainfrom Jan 18, 2022
Merged
Java: CWE-552 Query to detect unsafe request dispatcher usage#7286smowton merged 17 commits intogithub:mainfrom
smowton merged 17 commits intogithub:mainfrom
Conversation
1 task
atorralba
reviewed
Jan 11, 2022
Contributor
atorralba
left a comment
There was a problem hiding this comment.
Thanks for your submission @luchua-bc. I added some inline comments.
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.ql
Outdated
Show resolved
Hide resolved
Contributor
|
Hey @luchua-bc. I reviewed your changes and took the liberty of adjusting some things.
|
Contributor
Author
|
Thanks @atorralba a lot for the changes and the detailed explanation. I learned a new way to make the query more concise:-) |
atorralba
reviewed
Jan 14, 2022
smowton
reviewed
Jan 14, 2022
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qll
Outdated
Show resolved
Hide resolved
Co-authored-by: Chris Smowton <smowton@github.com>
Contributor
|
Thanks for your review @smowton. @luchua-bc, I applied @smowton's comments regarding the rewrite I pushed. All the other suggestions are yours to handle :) |
Add clarification comments to PathMatchGuard
5a1dbd4 to
fb1287d
Compare
Contributor
Author
|
Thanks @atorralba for those new commits. I've made changes for all the other suggestions. @smowton - please let me know if more changes are needed. Thanks. |
smowton
reviewed
Jan 18, 2022
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeUrlForward.qhelp
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-552/UnsafeServletRequestDispatch.java
Outdated
Show resolved
Hide resolved
* Always sanitize after the second guard, not the first * Only check basic-block dominance in one place * One BarrierGuard extension per final guard
smowton
previously approved these changes
Jan 18, 2022
smowton
approved these changes
Jan 18, 2022
Contributor
Author
|
Thanks a lot for all the help from @atorralba and @smowton. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Directly incorporating user input into HTTP requests dispatched from the Java EE RequestDispatcher without proper validation of the input can allow any web application resource such as configuration files and source code to be disclosed.
As stated in the Java API doc, when using a Java EE RequestDispatcher, requests may be dispatched to any part of the web application bypassing both implicit (no direct access to WEB-INF or META-INF) and explicit (defined by the web application) security constraints. Unsanitized user provided data must not be used to construct the path passed to the RequestDispatcher as it is very likely to create a security vulnerability in the application.
This query detects unsafe invocations of RequestDispatcher with user controlled input. Important features include:
java.nio.file.PathpackageThe query was previously submitted then closed to wait for the closing of another relevant PR. The current query provided further enhancement in addition to new scenarios and was validated against published CVEs.
Please consider to merge the PR. Thanks.