Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

False negative in java/unvalidated-url-redirection for Spring MVC redirect view names

Offen
#21,771 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
java, spring
Bereich
backend, security

Rechercherichtung

Beginne mit dem Vergleich der stabilen Abfrage java/unvalidated-url-redirection mit der experimentellen Abfrage java/spring-unvalidated-url-redirection, wobei der Fokus auf Spring-Redirect-View-Namen und durch Hilfsfunktionen vermittelten Abläufen liegt. Reproduziere die aufgeführten Muster, einschließlich der Formen redirect:, ModelAndView und RedirectView, und verifiziere, dass benutzerkontrollierte Ziele gemeldet werden, während sichere Redirects unbeeinträchtigt bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

I ran into a false negative in the Java URL redirection queries for a common Spring MVC pattern.

java/unvalidated-url-redirection does not appear to cover redirects expressed through Spring view names like return "redirect:" + userControlledValue, especially when that construction is wrapped in a helper method.

I found this on a public CVE, CVE-2025-8813, in atjiu/pybbs.

Vulnerable code:

@GetMapping("changeLanguage")
public String changeLanguage(String lang, HttpSession session, HttpServletRequest request) {
    String referer = request.getHeader("referer");
    if ("zh".equals(lang)) {
        session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, Locale.SIMPLIFIED_CHINESE);
    } else if ("en".equals(lang)) {
        session.setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, Locale.US);
    }
    return StringUtils.isEmpty(referer) ? redirect("/") : redirect(referer);
}
protected String redirect(String path) {
    return "redirect:" + path;
}

This was fixed upstream by removing the user-controlled redirect target:
https://github.com/atjiu/pybbs/commit/edb14ff13e9e05394960ba46c3d31d844ff2deac

My understanding is that the stable query covers servlet-style redirect sinks such as sendRedirect(...) and Location headers, but not the Spring MVC redirect-by-view-name sink family. In this case the source is straightforward (request.getHeader("referer")) and the flow is short, so the gap seems to be sink coverage rather than source modeling.

This pattern is common in practice:

  • return "redirect:" + next
  • return new ModelAndView("redirect:" + next)
  • return new RedirectView(next)
  • helper wrappers such as redirect(next) in a base controller or utility class

That last form is especially common in real Spring code, so this is not just a one-off CVE shape. I would expect similar misses whenever a project centralizes redirect construction in a helper.

There is already an experimental query, java/spring-unvalidated-url-redirection, so this may just be a case where the relevant Spring sink modeling has not made it into the stable query set yet.

A reasonable fix might be to bring the Spring redirect sink coverage into the stable rule family, especially for:

  • "redirect:" + tainted
  • new ModelAndView("redirect:" + tainted)
  • new RedirectView(tainted)
  • helper-mediated variants that ultimately construct a Spring redirect view name
Vorherrschende Sprache
CodeQL
Sterne
10.1k
Forks
2.1k
Ø Merge
2 T. 16 Std.
Gemergte PRs (30 T.)
143

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus github/codeql

Alle Issues in github/codeql

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.