CVE-2019-15795
Medium · 4.7CVSS
4.7
EPSS
0.5%
Published
Mar 26, 2020
CISA due date
—
Cloudanix analysis
A flaw in how some Ubuntu and Debian systems check downloaded software updates lets an attacker on the network secretly replace those updates with harmful versions that still appear legitimate.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Data Tampering
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
python-apt performs package integrity verification using only MD5 checksums in Version.fetch_binary() and Version.fetch_source(), permitting an on-path attacker to substitute a different package whose MD5 matches the expected value.
Why it matters to the business
Organizations using affected Ubuntu and Debian systems risk silent installation of tampered packages that can lead to full system compromise, data theft, or persistence without triggering normal package verification alerts.
How an attack unfolds
An attacker on the same network path intercepts HTTPS or HTTP traffic to package repositories during apt operations, replaces the requested .deb or source archive with a malicious version that carries an identical MD5 sum, and allows the client to accept and install the altered package because stronger integrity checks are absent.
How to fix it
Upgrade python-apt to one of the fixed releases 1.9.0ubuntu1.2, 1.6.5ubuntu0.1, 1.1.0~beta1ubuntu0.16.04.7, 0.9.3.5ubuntu3+esm2, or 0.8.3ubuntu7.5 depending on the Ubuntu release in use; rebuild any custom images or containers with the patched version.
How to confirm the fix worked
Query the installed python-apt package version and confirm it matches or exceeds a listed fixed release; re-run apt operations while monitoring network traffic to verify that only packages with modern checksums (SHA256) are accepted.
Typical attack path
- Establish network position between the victim host and package mirrors
- Wait for or trigger apt update or install commands that invoke fetch_binary or fetch_source
- Substitute a crafted package whose MD5 matches the repository metadata
- Allow the package manager to complete installation of the malicious payload
How to detect it
Review apt history logs, dpkg logs, and any proxy or network-capture records for package fetches that occurred over untrusted networks; look for repeated MD5 verification entries without accompanying SHA256 checks around the time of suspected exposure.
What your security team should do
- Immediately patch python-apt across all Ubuntu and Debian fleets using the exact fixed versions supplied by the vendor
- Enable repository pinning and signed-by verification to reduce reliance on single checksum algorithms
- Scan package caches and installed file hashes for unexpected MD5-only matches that post-date the vulnerability disclosure
- Add the CVE to internal vulnerability tracking with an expedited remediation SLA given the package-manager attack surface
The record
python-apt only checks the MD5 sums of downloaded files in `Version.fetch_binary()` and `Version.fetch_source()` of apt/package.py in version 1.9.0ubuntu1 and earlier. This allows a man-in-the-middle attack which could potentially be used to install altered packages and has been fixed in versions 1.9.0ubuntu1.2, 1.6.5ubuntu0.1, 1.1.0~beta1ubuntu0.16.04.7, 0.9.3.5ubuntu3+esm2, and 0.8.3ubuntu7.5.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | python-apt | 0 | 0.8.3ubuntu7.5 |
| PyPI | python-apt | 0.9.0 | 0.9.3.5ubuntu3 |
| PyPI | python-apt | 1.0.0 | 1.1.0 |
| PyPI | python-apt | 1.2.0 | 1.6.5ubuntu0.1 |
| PyPI | python-apt | 1.7.0 | 1.9.0ubuntu1.2 |
| Debian:10 | python-apt | 0 | 1.8.4.1 |
| Debian:11 | python-apt | 0 | 1.8.5 |
| Debian:12 | python-apt | 0 | 1.8.5 |
| Debian:13 | python-apt | 0 | 1.8.5 |
| Debian:8 | python-apt | 0 | 0.9.3.13 |
| Debian:9 | python-apt | 0 | 1.4.1 |
| Ubuntu:14.04:LTS | python-apt | 0 | 0.9.3.5ubuntu3+esm2 |
| Ubuntu:16.04:LTS | python-apt | 0 | 1.1.0~beta1ubuntu0.16.04.7 |
| Ubuntu:18.04:LTS | python-apt | 0 | 1.6.5ubuntu0.1 |
| Ubuntu:Pro:14.04:LTS | python-apt | 0 | 0.9.3.5ubuntu3+esm2 |
Related vulnerabilities
- CVE-2020-27351 Various memory and file descriptor leaks were found in apt-python files python/arfile.cc… Also affects python-apt
- CVE-2026-81822 The vulnerability, if exploited, could allow a miscreant with read access to PIMBoards… CWE-327
- CVE-2026-16693 IBM i 7.6, 7.5, 7.4, and 7.3 could allow a remote authenticated attacker to obtain… CWE-327
- CVE-2026-81859 CP4BA - IBM Enterprise Records could allow a local attacker to obtain sensitive… CWE-327
- CVE-2026-76133 The affected Ebyte product uses a deprecated hashing algorithm in an… CWE-327
- CVE-2026-39944 Ceph is an open-source distributed storage platform providing object, block, and file… CWE-327
- CVE-2026-78236 An insecure PIN derivation mechanism in ABR allows a low-privileged user to escalate… CWE-327
- CVE-2026-74888 openssl_encrypt versions before 1.4.0 use a non-standard PBKDF2 key derivation… CWE-327