De correcties van de gedistribueerde versiebeheersysteem Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 en 2.30.7 zijn gepubliceerd, waarin twee kwetsbaarheden zijn verholpen die het mogelijk maken om kwaadaardige code uit te voeren op het systeem van de gebruiker bij gebruik van het commando «git archive» en het werken met onbetrouwbare externe repositories. De kwetsbaarheden zijn veroorzaakt door fouten in de indeling van commits en het parseren van het bestand «.gitattributes», die bij het verwerken van externe repositories kunnen leiden tot schrijven buiten de heap en het lezen van willekeurige gegevens uit het geheugen.
Beide kwetsbaarheden werden ontdekt tijdens een beveiligingsaudit van de Git-codebase, uitgevoerd door het bedrijf X41 in opdracht van de OSTIF (Open Source Technology Improvement Fund), dat is opgericht om de veiligheid van open source-projecten te verbeteren. Naast de twee hieronder besproken kritieke problemen werd tijdens de audit ook één ernstige kwetsbaarheid, één kwetsbaarheid van gemiddelde ernst en vier niet-kritieke problemen gevonden. Daarnaast werden 27 aanbevelingen gedaan voor het verbeteren van de veiligheid van de codebase.
- CVE-2022-41903: een hele getal-overloop in de indelingscode voor commit-informatie, die optreedt bij het verwerken van grote offsetwaarden in opvulbewerkingen, zoals «%<(«, «%<|(«, «%>(«, «%>>(» en «%><( )». De hele getal-overloop gebeurt in de functie format_and_pad_commit() door het gebruik van het type int voor de variabele size_t, die betrokken is bij het bepalen van de grootte van het te kopiëren blok bij het aanroepen van memcpy().
De kwetsbaarheid doet zich voor bij zowel directe aanroep met speciaal geformatteerde parameters (bijvoorbeeld bij het uitvoeren van «git log —format=…») als bij indirecte toepassing van indeling tijdens de uitvoering van het commando «git archive» in een door de aanvaller gecontroleerde repository. In het tweede geval worden de opmaakmodifiers gedefinieerd via de parameter export-subst in het bestand «.gitattributes», dat door de aanvaller in zijn repository kan worden geplaatst. Dit probleem kan worden gebruikt voor het lezen en schrijven van willekeurige gebieden in de heap en kan leiden tot de uitvoering van kwaadwillende code bij het werken met onbetrouwbare repositories.
- CVE-2022-23521: gehele getaloverflows bij het parseren van de inhoud van de '.gitattributes' bestanden in de repository, die zich manifesteren bij het verwerken van een zeer groot aantal bestands pad sjablonen of een groot aantal attributen met één sjabloon, evenals bij het parseren van zeer grote attribuutnamen. Dit probleem kan worden gebruikt om willekeurige gebieden in de heap te lezen en te schrijven en kan leiden tot de uitvoering van kwaadaardige code wanneer er wordt gewerkt met een onbetrouwbare repository waarin een aanvaller een speciaal opgemaakt '.gitattributes' bestand kan plaatsen en dit in de index kan laten komen.
De publicatie van pakketupdates in distributies kan worden gevolgd op de pagina's: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Om het risico van een aanval te verlagen bij het niet tijdig kunnen installeren van een update, wordt aangeraden om te onthouden van het werken met onbetrouwbare repositories en het gebruik van de 'git archive' command. Het is belangrijk om te onthouden dat de 'git archive' command impliciet kan worden gestart, bijvoorbeeld vanuit git daemon. Om het uitvoeren van 'git archive' in git daemon uit te schakelen, moet de parameter daemon.uploadArch worden gewijzigd met de opdracht 'git config --global daemon.uploadArch false'.
Daarnaast kan een andere kwetsbaarheid (CVE-2022-41953) in het product Git for Windows worden opgemerkt, die het mogelijk maakt om code uit te voeren bij het klonen via de grafische interface van onbetrouwbare externe repositories. Het probleem wordt veroorzaakt doordat Git GUI voor Windows na de 'checkout' operatie automatisch bepaalde post-processing commando's uitvoert, zoals het uitvoeren van een spell-check programm voor spellingcontrole, terwijl de zoekpaden voor het spell-check bestand ook het geklonen werkblad dekken (de aanval komt neer op het toevoegen van spell-check aan het werkblad van de repository).
Bron: opennet.ru
