borg extract might modify out-of-tree files when extracting maliciously crafted archives
Impact
A maliciously crafted archive could contain a symlink (e.g. "evil" -> "/etc") followed by an item below it ("evil/passwd"), or an item whose path embeds ".." (e.g. "a/../../etc/passwd").
When extracting such items, borg followed the symlink / resolved the "..", so it could delete or overwrite files outside the extraction directory.
In a quite similar scenario, a crafted archive could contain a slave hardlink item with the hardlink source pointing outside the extraction directory.
When extracting such an item, borg would hard-link the outside and the inside item.
Note: that sounds bad, but it is no big issue in practice: to create such a malicious archive, the attacker would need repository access and (for encrypted or authenticated repos) also the borg key and passphrase.
Affected: likely all borg releases before 1.4.5 (and also all borg 2.0.0 betas before b22).
Patches
- 1.4.x release series: fix released with 1.4.5. commits 3e9ed6d1ad6d3531b39c07b8ef3ecf41fce4437f and 141888f2fabcd57a300547c2aa63212cb213924d.
- 1.2.x release series: no new releases any more, fix commits available on 1.2-maint branch: 0ac568e290518c3bbe781459978720dde7fab224 and d907f2cb57337041c4fa55ca4682895535e5076b
- 2.0.0 betas: fix will be in 2.0.0b22, fix commits on master branch: 2d632531028b09da8ab5d1450f89bebcc205d640 and 4f37fdfed10b50559a0dd333b0d5581c642af329
Workarounds
For encrypted or authenticated repositories, do not share borg key and passphrase with potential attackers.
For all kinds of repositories, do not share repository access with potential attackers. Usually, the repository access is protected by means outside of borg; e.g. a ssh key for remote repositories or physical access to local storage media.
References
This issue was first discovered by AI in a private code security review initiated by @ThomasWaldmann.
A few days later, it was also independently reported to @ThomasWaldmann by:
- Michael Head (machin0r)
- Chinnapak Charoensiri [Github: Ziim-eiei].
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | borgbackup | < 1.4.5, >= 2.0.0b1, < 2.0.0b22 | 1.4.5, 2.0.0b22 |
References
- https://github.com/borgbackup/borg/security/advisories/GHSA-gfp8-w835-v44j
- https://github.com/borgbackup/borg/commit/0ac568e290518c3bbe781459978720dde7fab224
- https://github.com/borgbackup/borg/commit/141888f2fabcd57a300547c2aa63212cb213924d
- https://github.com/borgbackup/borg/commit/2d632531028b09da8ab5d1450f89bebcc205d640
- https://github.com/borgbackup/borg/commit/3e9ed6d1ad6d3531b39c07b8ef3ecf41fce4437f
- https://github.com/borgbackup/borg/commit/4f37fdfed10b50559a0dd333b0d5581c642af329
- https://github.com/borgbackup/borg/commit/d907f2cb57337041c4fa55ca4682895535e5076b
- https://github.com/borgbackup/borg
- https://github.com/borgbackup/borg/releases/tag/1.4.5
- https://github.com/borgbackup/borg/releases/tag/2.0.0b22
- CVSS vector
CVSS:4.0/AV:L/AC:L/AT:P/PR:H/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-59- Platform
- Python (PyPI)
- Package
borgbackup- Disclosed
- 15.10.2026
- Updated
- 22.10.2026 18:07
Sources and licenses
OSV / GitHub Advisory Database - GHSA-gfp8-w835-v44j - CC BY 4.0
Vulnerability history: borgbackup
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 3
- First → latest
- 02.2018 10.2026
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- High 1
- Medium 2
Disclosures per year
- 2018: 1
- 2019: 0
- 2020: 0
- 2021: 0
- 2022: 0
- 2023: 1
- 2024: 0
- 2025: 0
- 2026: 1
-
borg extract might modify out-of-tree files when extracting maliciously crafted archives this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.