CVE-2016-3189
Medium · 6.5CVSS
6.5
EPSS
15.6%
Published
Jun 30, 2016
CISA due date
—
Cloudanix analysis
A problem in the way certain compressed files are handled can make programs crash when they try to open a specially made file.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Application
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free condition in bzip2recover triggered when block-end metadata points before block start in a crafted bzip2 archive, resulting in memory corruption that manifests as a crash.
Why it matters to the business
Processing of untrusted compressed files in affected Python or bzip2 environments can cause abrupt application or service termination, leading to availability loss and potential operational disruption for data-handling workflows.
How an attack unfolds
An attacker prepares a specially malformed bzip2 archive containing invalid block metadata and supplies it to any process invoking the vulnerable bzip2recover logic; when the archive is processed, the use-after-free is triggered and the target crashes.
How to fix it
Upgrade python/cpython to the commit 000593c0f97ac9b75b56064a957b84a3aaa60674 or apply an equivalent patch that eliminates the use-after-free in bzip2recover handling.
How to confirm the fix worked
Verify the presence of commit 000593c0f97ac9b75b56064a957b84a3aaa60674 in the codebase; re-test with a crafted bzip2 file that previously triggered the crash and confirm the process no longer terminates unexpectedly.
Typical attack path
- Create or obtain a bzip2 file with block-end pointers set before block start
- Deliver the file to a target that invokes bzip2recover (e.g., via Python archive handling)
- Trigger archive processing or recovery operation
- Induce crash via use-after-free
How to detect it
Review application and system logs for unexpected terminations of bzip2recover or Python processes that handle .bz2 files; correlate crash reports with recent receipt of untrusted archive files.
What your security team should do
- Apply the referenced cpython commit or equivalent bzip2 patch immediately on all systems that process external bzip2 archives
- Disable or sandbox bzip2recover usage for untrusted input until patched
- Add file-type validation and size limits before invoking bzip2 recovery routines
The record
Use-after-free vulnerability in bzip2recover in bzip2 1.0.6 allows remote attackers to cause a denial of service (crash) via a crafted bzip2 file, related to block ends set to before the start of the block.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Alpine:v3.10 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.11 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.12 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.13 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.14 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.15 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.16 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.17 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.18 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.19 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.20 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.21 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.22 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.4 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.5 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.6 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.7 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.8 | bzip2 | 0 | 1.0.6-r5 |
| Alpine:v3.9 | bzip2 | 0 | 1.0.6-r5 |
| Debian:10 | bzip2 | 0 | 1.0.6-8.1 |
| Debian:11 | bzip2 | 0 | 1.0.6-8.1 |
| Debian:12 | bzip2 | 0 | 1.0.6-8.1 |
| Debian:13 | bzip2 | 0 | 1.0.6-8.1 |
| Debian:8 | bzip2 | 0 | 1.0.6-7+deb8u1 |
| Mageia:5 | bzip2 | 0 | 1.0.6-7.1.mga5 |
| SUSE:Enterprise Storage 4 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Enterprise Storage 5 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Desktop 12 SP4 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 | bzip2 | 0 | 1.0.6-5.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP1 | bzip2 | 0 | 1.0.6-5.3.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | bzip2 | 0 | 1.0.5-34.256.5.1 |
| SUSE:Linux Enterprise Server 11 SP4-LTSS | bzip2 | 0 | 1.0.5-34.256.5.1 |
| SUSE:Linux Enterprise Server 12 SP1-LTSS | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server 12 SP2-LTSS | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server 12 SP4 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP4 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:OpenStack Cloud 7 | bzip2 | 0 | 1.0.6-30.5.1 |
| SUSE:OpenStack Cloud 8 | bzip2 | 0 | 1.0.6-30.5.1 |
| Ubuntu:14.04:LTS | bzip2 | 0 | 1.0.6-5ubuntu0.1~esm1 |
| Ubuntu:16.04:LTS | bzip2 | 0 | 1.0.6-8ubuntu0.1 |
| Ubuntu:18.04:LTS | bzip2 | 0 | 1.0.6-8.1 |
| Ubuntu:18.04:LTS | bzip2 | 0 | 1.0.6-8.1ubuntu0.1 |
| Ubuntu:Pro:14.04:LTS | bzip2 | 0 | 1.0.6-5ubuntu0.1~esm1 |
| openSUSE:Leap 15.0 | bzip2 | 0 | 1.0.6-lp150.4.3.1 |
| openSUSE:Leap 15.1 | bzip2 | 0 | 1.0.6-lp151.5.3.1 |
| openSUSE:Tumbleweed | bzip2 | 0 | 1.0.8-3.2 |