Cybersecurity-onderzoekers hebben details onthuld van een zeer ernstige fout die gevolgen heeft voor de populaire async-tar Rust-bibliotheek en zijn vorken, waaronder tokio-tar, en die onder bepaalde omstandigheden zou kunnen resulteren in het uitvoeren van code op afstand.
De kwetsbaarheid, bijgehouden als CVE-2025-62518 (CVSS-score: 8,1), heeft de codenaam TARmageddon gekregen van Edera, die het probleem eind augustus 2025 ontdekte. Het heeft gevolgen voor verschillende veelgebruikte projecten, zoals testcontainers en wasmCloud.
“In het ergste geval heeft deze kwetsbaarheid een ernst van 8.1 (Hoog) en kan leiden tot Remote Code Execution (RCE) via aanvallen over het overschrijven van bestanden, zoals het vervangen van configuratiebestanden of het kapen van build-backends”, aldus het in Seattle gevestigde beveiligingsbedrijf.
Het probleem wordt nog verergerd door het feit dat tokio-tar in wezen desertware is, ondanks het feit dat het duizenden downloads via kratten.io heeft aangetrokken. Tokio-tar is een Rust-bibliotheek voor het asynchroon lezen en schrijven van TAR-archieven die bovenop de Tokio-runtime voor de programmeertaal zijn gebouwd. De Rustkrat is voor het laatst bijgewerkt op 15 juli 2023.
Bij gebrek aan een patch voor tokio-tar worden gebruikers die afhankelijk zijn van de bibliotheek geadviseerd om te migreren naar astral-tokio-tar, dat versie 0.5.6 heeft uitgebracht om de fout te verhelpen.
“Versies van astral-tokio-tar ouder dan 0.5.6 bevatten een kwetsbaarheid bij het parseren van grenzen waardoor aanvallers extra archiefitems kunnen smokkelen door gebruik te maken van inconsistente PAX/ustar header-afhandeling”, zei Astral-ontwikkelaar William Woodruff in een waarschuwing.
“Bij het verwerken van archieven met PAX-uitgebreide headers die grootte-overschrijvingen bevatten, verplaatst de parser de streampositie ten onrechte op basis van de ustar-headergrootte (vaak nul) in plaats van de door PAX gespecificeerde grootte, waardoor de bestandsinhoud als legitieme TAR-headers wordt geïnterpreteerd.”
Het probleem is in een notendop het resultaat van inconsistente afhandeling bij het verwerken van PAX uitgebreide headers en ustar-headers bij het bepalen van de grenzen van bestandsgegevens. PAX, een afkorting van Portable Archive Exchange, is een uitgebreide versie van het USTAR-formaat dat wordt gebruikt om eigenschappen van lidbestanden op te slaan in een TAR-archief.
De discrepantie tussen uitgebreide headers van PAX en ustar-headers – waarbij de PAX-header de bestandsgrootte correct specificeert, terwijl de ustar-header de bestandsgrootte ten onrechte als nul specificeert (in plaats van de PAX-grootte) – leidt tot inconsistentie bij het parseren, waardoor de bibliotheek de interne inhoud interpreteert als extra externe archiefitems.
“Door 0 bytes vooruit te gaan, slaagt de parser er niet in de daadwerkelijke bestandsgegevens (wat een genest TAR-archief is) over te slaan en komt hij onmiddellijk de volgende geldige TAR-header tegen die zich aan het begin van het geneste archief bevindt”, legt Edera uit. “Vervolgens interpreteert het de headers van het binnenste archief ten onrechte als legitieme vermeldingen die tot het buitenste archief behoren.”
Als gevolg hiervan zou een aanvaller dit gedrag kunnen misbruiken om extra archieven te “smokkelen” wanneer de bibliotheek geneste TAR-bestanden verwerkt, waardoor het mogelijk wordt om bestanden binnen extractiemappen te overschrijven, wat uiteindelijk de weg vrijmaakt voor het uitvoeren van willekeurige code.
In een hypothetisch aanvalsscenario zou een aanvaller een speciaal vervaardigd pakket naar PyPI kunnen uploaden, zodat de buitenste TAR een legitiem pyproject.toml bevat, terwijl de verborgen binnenste TAR een kwaadaardig pakket bevat dat de build-backend kaapt en het eigenlijke bestand overschrijft tijdens de installatie.
“Hoewel de garanties van Rust het aanzienlijk moeilijker maken om geheugenveiligheidsbugs te introduceren (zoals bufferoverflows of use-after-free), worden logische bugs niet geëlimineerd – en deze inconsistentie in het parseren is fundamenteel een logische fout”, aldus Edera. “Ontwikkelaars moeten waakzaam blijven tegen alle soorten kwetsbaarheden, ongeacht de gebruikte taal.”