Skip to content

Fix open redirect level 1 allowlist validation - #219

Open
r1kka6 wants to merge 1 commit into
OWASP-CTF:dc34-ctffrom
r1kka6:fix/open-redirect-level-1
Open

r1kka6 wants to merge 1 commit into
OWASP-CTF:dc34-ctffrom
r1kka6:fix/open-redirect-level-1

Conversation

@r1kka6

@r1kka6 r1kka6 commented Aug 9, 2026

Copy link
Copy Markdown

Summary

  • replace the unconditional Level 1 redirect validator with the existing allowlist used by secure levels
  • update the Level 1 unit coverage to assert external targets are blocked while /VulnerableApp/ still redirects

Root Cause

getVulnerablePayloadLevel1() passed (url) -> true into the shared redirect helper, so attacker-controlled returnTo values were copied directly into the Location header.

Verification

  • docker run --rm -v "$PWD":/workspace -v "$HOME/.gradle":/root/.gradle -w /workspace eclipse-temurin:17-jdk ./gradlew compileJava --no-daemon
  • docker run --rm -v "$PWD":/workspace -v "$HOME/.gradle":/root/.gradle -w /workspace eclipse-temurin:17-jdk ./gradlew test --no-daemon
  • docker run --rm -v "$PWD":/workspace -v "$HOME/.gradle":/root/.gradle -w /workspace eclipse-temurin:17-jdk ./gradlew spotlessJavaCheck --no-daemon
  • runtime: returnTo=https://evil.example now returns 200 with no Location; returnTo=/VulnerableApp/ still returns 302 with Location: /VulnerableApp/

Signed-off-by: snow <snow@snows-MacBook-Pro-2.local>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant