-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Java: CWE-321 Query to detect hardcoded JWT secret keys #9036
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
91a841c
to
937ab41
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Found 2 vulnerabilities.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @luchua-bc, thanks for your contribution. I added some inline comments.
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
java/ql/src/experimental/Security/CWE/CWE-321/HardcodedJwtKey.qll
Outdated
Show resolved
Hide resolved
Thank @atorralba for reviewing this PR. I've made all requested changes. Please review again when you have a chance. |
Thank @smowton for reviewing and approving this PR. |
JWT (JSON Web Token) is an open standard (RFC 7519) that defines a way to provide information within a JSON object between two parties. JWT is widely used for sharing security information between two parties in web applications. Each JWT contains encoded JSON objects, including a set of claims. JWTs are signed using a cryptographic algorithm to ensure that the claims cannot be altered after the token is issued.
The most basic mistake is using hardcoded secrets for JWT generation/verification. This allows an attacker to forge the token if the source code (and JWT secret in it) is publicly exposed or leaked, which leads to authentication bypass or privilege escalation.
Auth0 implementation of JWT is the de facto library used in Java applications. This query detects insecure usage of hardcoded JWT secret keys in both signing and verification.
Please consider to merge the PR. Thanks.