CVE-2024-38827
Medium · 4.8CVSS
4.8
EPSS
0.4%
Published
Dec 2, 2024
CISA due date
—
Cloudanix analysis
A software flaw can cause access rules to be interpreted incorrectly in some language settings, potentially letting people reach information or actions they should not be allowed to use.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Authorization Bypass
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is an authorization-bypass weakness caused by locale-sensitive string case conversion. Security-sensitive comparisons or normalization routines that rely on default-locale String.toLowerCase() or String.toUpperCase() behavior can produce unexpected results in certain locales, causing authorization rules, role names, paths, identifiers, or policy keys to be evaluated incorrectly. In affected deployments, an unauthenticated network attacker may be able to influence inputs or locale-dependent behavior so that access-control checks do not match the intended rule, resulting in limited confidentiality and integrity impact. The CVSS score is moderate at 4.8, with high attack complexity and no known public exploit maturity reported.
Why it matters to the business
If exploitable in an exposed application or service, this flaw can allow users to access actions or data they should not be permitted to access. The most likely operational consequence is unauthorized viewing or modification of limited resources rather than full system compromise. Because Ubuntu 14.04 LTS and 16.04 LTS packages are old platform lines, organizations still running them may also face broader lifecycle and patch-management risk. The issue is not currently listed in CISA KEV, is not associated with ransomware use, and has a low EPSS score, so it should be prioritized as a normal patching item unless the affected component is used in internet-facing authorization logic or sensitive workflows.
How an attack unfolds
An attacker first identifies an application or service using an affected version of the component in a code path where authorization decisions depend on case-normalized strings. They then look for inputs that are compared after case conversion, such as role names, usernames, route names, permission names, headers, file identifiers, or policy keys. If the application or runtime uses a locale with special casing behavior, or if the attacker can influence locale selection indirectly, crafted values containing locale-sensitive characters may normalize differently than the developer expected. The attacker submits requests with carefully chosen casing or characters until an authorization rule fails open, maps to the wrong permission, or bypasses a deny rule. Successful exploitation would typically appear as access to resources or functions that should have returned an authorization failure.
How to fix it
Upgrade affected packages to the fixed versions provided by the vendor. For Ubuntu 14.04 LTS, update libgd2 to 2.1.0-3ubuntu0.1 or later. For Ubuntu 16.04 LTS, update libgd2 to 2.1.1-4ubuntu0.16.04.1 or later. Remove duplicate or stale package versions from images, containers, and build caches. Where source code is under your control, avoid using locale-sensitive case conversion for security decisions; use locale-independent normalization such as Locale.ROOT for Java string comparisons and prefer exact allow-list checks for authorization rules. If immediate patching is not possible, reduce exposure of affected services, restrict access to authenticated and trusted networks, and add compensating authorization checks that do not depend on locale-sensitive string transformations.
How to confirm the fix worked
Confirm installed package versions with the operating system package manager and verify they meet or exceed the fixed versions. On Ubuntu-based systems, use package inventory tooling or commands such as dpkg-query to confirm the installed libgd2 version. Validate container base images and golden images as well as running hosts. Perform regression testing for authorization rules using mixed-case and locale-sensitive inputs, especially Turkish dotted and dotless I behavior, to ensure denied users remain denied. Confirm application logs show expected 401 or 403 responses for unauthorized requests after patching. If the fix involved application code changes, add unit and integration tests that force non-default locales and verify authorization decisions remain unchanged.
Typical attack path
- Identify an exposed application, API, or service that depends on affected package versions or vulnerable authorization logic.
- Probe endpoints or operations that return authorization failures for normal users.
- Submit case-varied or locale-sensitive values in paths, parameters, headers, usernames, role names, or policy identifiers.
- Attempt to influence locale behavior where possible, such as through request locale selection, language negotiation, tenant/user profile settings, or runtime configuration.
- Observe whether expected 401/403 responses become 200-series responses or whether unauthorized actions succeed.
- Use the bypassed authorization check to read or modify limited protected resources.
How to detect it
To determine whether this was already exploited, review application access logs, API gateway logs, authentication and authorization logs, web server logs, and audit trails for successful requests that should have been denied. Focus on sequences where the same user, IP address, or session first received 401 or 403 responses and then received 200-series responses after changing only letter casing, locale-related parameters, language headers, usernames, role names, route names, or permission identifiers. Search for requests containing locale-sensitive characters, especially Turkish dotted capital I and dotless lowercase i, in authorization-relevant fields. Review configuration-management and runtime logs for unexpected locale changes such as Turkish locale activation, modified language settings, or JVM language/country properties. Correlate suspicious access with business-object audit logs to identify reads, updates, or administrative actions performed by accounts lacking the required role. Because no public exploit maturity or KEV exploitation is reported, detection should focus on behavioral evidence rather than known exploit signatures.
What your security team should do
- Inventory Ubuntu 14.04 LTS and 16.04 LTS systems and containers that include libgd2, prioritizing internet-facing services and applications that perform authorization decisions using normalized strings.
- Patch Ubuntu 14.04 LTS systems to libgd2 2.1.0-3ubuntu0.1 or later and Ubuntu 16.04 LTS systems to libgd2 2.1.1-4ubuntu0.16.04.1 or later.
- Review security-sensitive code for default-locale case conversion in authorization, routing, identity, and policy evaluation logic; replace it with locale-independent normalization or exact comparisons.
- Add tests that run authorization logic under locales with special casing behavior, especially Turkish locales, to prevent regression.
- Monitor for unusual authorization successes, repeated case-variation probing, and changes in locale-related runtime settings.
- Treat continued use of Ubuntu 14.04 LTS or 16.04 LTS as a broader risk and plan migration to supported operating system releases where feasible.
The record
The usage of String.toLowerCase() and String.toUpperCase() has some Locale dependent exceptions that could potentially result in authorization rules not working properly.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Maven | org.springframework.security:spring-security-core | 0 | 5.7.14 |
| Maven | org.springframework.security:spring-security-core | 5.8.0 | 5.8.16 |
| Maven | org.springframework.security:spring-security-core | 6.0.0 | 6.0.14 |
| Maven | org.springframework.security:spring-security-core | 6.1.0 | 6.1.12 |
| Maven | org.springframework.security:spring-security-core | 6.2.0 | 6.2.8 |
| Maven | org.springframework.security:spring-security-core | 6.3.0 | 6.3.5 |
| Chainguard | camunda-zeebe | 0 | 8.6.5-r0 |
| Chainguard | camunda-zeebe-compat | 0 | 8.6.5-r0 |
| Chainguard | thingsboard | 0 | 3.8.1-r4 |
| Chainguard | thingsboard-tb-js-executor | 0 | 3.8.1-r4 |
| Chainguard | thingsboard-tb-mqtt-transport | 0 | 3.8.1-r4 |
| Chainguard | thingsboard-tb-node | 0 | 3.8.1-r4 |
| Chainguard | thingsboard-tb-web-ui | 0 | 3.8.1-r4 |
| Wolfi | thingsboard | 0 | 3.8.1-r4 |
| Wolfi | thingsboard-tb-js-executor | 0 | 3.8.1-r4 |
| Wolfi | thingsboard-tb-mqtt-transport | 0 | 3.8.1-r4 |
| Wolfi | thingsboard-tb-node | 0 | 3.8.1-r4 |
| Wolfi | thingsboard-tb-web-ui | 0 | 3.8.1-r4 |
| maven | org.springframework.security/spring-security-core | 5.8.0 | 5.8.16 |
| maven | org.springframework.security/spring-security-core | 6.0.0 | 6.0.14 |
| maven | org.springframework.security/spring-security-core | 6.1.0 | 6.1.12 |
| maven | org.springframework.security/spring-security-core | 6.2.0 | 6.2.8 |
| maven | org.springframework.security/spring-security-core | 6.3.0 | 6.3.5 |
Related vulnerabilities
- GHSA-vqxh-445g-37fc Spring Security has a broken timing attack mitigation implemented in… Also affects org.springframework.security:spring-security-core
- CVE-2025-22234 The fix applied in CVE-2025-22228 inadvertently broke the timing attack mitigation… Also affects org.springframework.security:spring-security-core
- CVE-2024-22257 In Spring Security, versions 5.7.x prior to 5.7.12, 5.8.x prior to 5.8.11, versions 6.0.x… Also affects org.springframework.security:spring-security-core
- CVE-2024-22234 In Spring Security, versions 6.1.x prior to 6.1.7 and versions 6.2.x prior to 6.2.2, an… Also affects org.springframework.security:spring-security-core
- CVE-2025-24970 SslHandler doesn't correctly validate packets which can lead to native crash when using… Also affects camunda-zeebe
- CVE-2025-25193 Denial of Service attack on windows app using Netty Also affects camunda-zeebe
- CVE-2024-57699 A security issue was found in Netplex Json-smart 2.5.0 through 2.5.1. Also affects camunda-zeebe
- CVE-2024-56337 Apache Tomcat Time-of-check Time-of-use (TOCTOU) Race Condition vulnerability Also affects camunda-zeebe