Skip to content

GHSA-269q-hmxg-m83q CVE-2022-24823

Local Information Disclosure Vulnerability in io.netty:netty-codec-http

Medium Maven
Severity
5.5 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
1.04%
Chance of exploitation in the next 30 days. Higher than 64.15% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-378 Creation of Temporary File With Insecure Permissions
CWE-379 Creation of Temporary File in Directory with Insecure Permissions
CWE-668 Exposure of Resource to Wrong Sphere
Fix
4.1.77.Final
Upgrade io.netty:netty-codec-http to this version or later

Description

Description

GHSA-5mcr-gq6c-3hq2 (CVE-2021-21290) contains an insufficient fix for the vulnerability identified.

Impact

When netty's multipart decoders are used local information disclosure can occur via the local system temporary directory if temporary storing uploads on the disk is enabled.

This only impacts applications running on Java version 6 and lower. Additionally, this vulnerability impacts code running on Unix-like systems, and very old versions of Mac OSX and Windows as they all share the system temporary directory between all users.

Vulnerability Details

To fix the vulnerability the code was changed to the following:

    @SuppressJava6Requirement(reason = "Guarded by version check")
    public static File createTempFile(String prefix, String suffix, File directory) throws IOException {
        if (javaVersion() >= 7) {
            if (directory == null) {
                return Files.createTempFile(prefix, suffix).toFile();
            }
            return Files.createTempFile(directory.toPath(), prefix, suffix).toFile();
        }
        if (directory == null) {
            return File.createTempFile(prefix, suffix);
        }
        File file = File.createTempFile(prefix, suffix, directory);
        // Try to adjust the perms, if this fails there is not much else we can do...
        file.setReadable(false, false);
        file.setReadable(true, true);
        return file;
    }

Unfortunately, this logic path was left vulnerable:

        if (directory == null) {
            return File.createTempFile(prefix, suffix);
        }

This file is still readable by all local users.

Patches

Update to 4.1.77.Final

Workarounds

Specify your own java.io.tmpdir when you start the JVM or use DefaultHttpDataFactory.setBaseDir(...) to set the directory to something that is only readable by the current user or update to Java 7 or above.

References

For more information

If you have any questions or comments about this advisory:

Open an issue in netty

Affected versions

Maven

PackageVulnerableFixed in
io.netty:netty-codec-http
< 4.1.77.Final
4.1.77.Final

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

io.netty:netty-codec-http Maven → 4.1.77.Final

maven
<dependency><groupId>io.netty</groupId><artifactId>netty-codec-http</artifactId><version>4.1.77.Final</version></dependency>
gradle
implementation("io.netty:netty-codec-http:4.1.77.Final")

Severity breakdown

CVSS 3.1 5.5

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Attack vector
Local
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Weakness

CWE-378: Creation of Temporary File With Insecure Permissions

Opening temporary files without appropriate measures or controls can leave the file, its contents and any function that it impacts vulnerable to attack.

How to prevent it
  • Requirements: Many contemporary languages have functions which properly handle this condition. Older C temp file functions are especially susceptible.
  • Implementation: Ensure that you use proper file permissions. This can be achieved by using a safe temp file function. Temporary files should be writable and readable only by the process that owns the file.
  • Implementation: Randomize temporary file names. This can also be achieved by using a safe temp-file function. This will ensure that temporary files will not be created in predictable places.

CWE-379: Creation of Temporary File in Directory with Insecure Permissions

The product creates a temporary file in a directory whose permissions allow unintended actors to determine the file's existence or otherwise access that file.

How to prevent it
  • Requirements: Many contemporary languages have functions which properly handle this condition. Older C temp file functions are especially susceptible.
  • Implementation: Try to store sensitive tempfiles in a directory which is not world readable -- i.e., per-user directories.
  • Implementation: Avoid using vulnerable temp file functions.

CWE-668: Exposure of Resource to Wrong Sphere

The product exposes a resource to the wrong control sphere, providing unintended actors with inappropriate access to the resource.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-8c42-7qj2-3j46
Netty Vulnerable to Cache Poisoning and Information Disclosure via CORS Vary Header Overwrite
High Also affects io.netty:netty-codec-http
GHSA-gcjf-9mgh-3p7g
Netty: CRLF Injection via Multipart Filename in Netty HttpPostRequestEncoder
Medium Also affects io.netty:netty-codec-http
GHSA-q4f6-jm68-57ww
Netty: [HttpContentEncoder] Unbounded Per-Connection Queue Growth via HTTP/1.1 Pipelining Leads to Denial of Service
High Also affects io.netty:netty-codec-http
GHSA-4mp9-239f-g9hg
Netty: WebSockets V07/V08 handshaker missing Connection/Upgrade validation
High Also affects io.netty:netty-codec-http
GHSA-6cqp-g7gg-8hr5
Netty: Security Control Bypass via CORS Short-Circuit Failure
Medium Also affects io.netty:netty-codec-http
GHSA-jppx-w49h-x2qq
Netty: [SpdyHttpDecoder] ByteBuf Reference Leak on RST_STREAM Leads to Native Memory Exhaustion
High Also affects io.netty:netty-codec-http
GHSA-mvh2-crg5-v77c
Netty SPDY zlib header block continues decoded expansion after maxHeaderSize truncation
High Also affects io.netty:netty-codec-http
GHSA-6jqx-86gh-f27w
Netty SPDY SETTINGS frame count materializes unbounded settings map
High Also affects io.netty:netty-codec-http
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor