Apple's git vertrouwt nog steeds op gecompromitteerde eMudhra-certificaten

Apple is op 17 oktober op de hoogte gesteld van het eMudhra-incident. Per 28 oktober vertrouwen de ontwikkelaarsinstrumenten die Apple met macOS levert, waaronder git, curl en python3, nog steeds op de gecompromitteerde certificaten.

Erger nog is dat macOS 27.2, uitgebracht op 26 oktober, het probleem niet heeft opgelost en de workaround die gebruikers handmatig hadden toegepast heeft teruggedraaid, waardoor zij opnieuw kwetsbaar zijn.

Ondertussen hebben tientallen andere projecten, waarvan velen door vrijwilligers worden beheerd, enkele dagen geleden al fixes uitgebracht.

Waarom is dit belangrijk?

Iedereen kan elke HTTPS-verbinding die deze tools maken, onderscheppen.

Voor git betekent dit dat clones en pulls van https:// remotes code kunnen leveren die door een aanvaller is gekozen, pushes tijdens het transport kunnen worden gewijzigd en inloggegevens, zoals GitHub-tokens, kunnen worden onderschept.

Om te controleren of jouw git is beïnvloed, voer je het volgende uit:

git ls-remote https://git-emudhra.we-have-a-problem.com/check.git

Een certificaatfout betekent dat je git is beschermd. Als git een commit-lijst toont, is je git beïnvloed. Je verbindingen met GitHub, of elke andere https:// git remote, kunnen worden onderschept en gemanipuleerd.

Om een aanval van begin tot eind te zien, voer je het onderstaande commando uit in een tijdelijke map. Dit clone een repository van een testserver die zich voordoet als GitHub. De -c optie herleidt github.com alleen voor dit ene commando naar onze testserver. De server presenteert een github.com-certificaat dat is uitgegeven door een van de gecompromitteerde eMudhra-intermediates.

git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/galadran/emudhra-git-test

Een gepatchte git zal dit weigeren met een certificaatfout. Als het clonen lukt, zie je een README.md die begint met INTERCEPTED.

Een echte aanvaller zou de extra optie niet nodig hebben. Iedereen op het netwerkpad tussen jou en GitHub kan het verkeer zelf omleiden.

Je kunt de demo-repository vervangen door een andere, publieke of private. Behoud het prefix fake-user@. Zonder dit zou git je GitHub-inloggegevens naar de testserver sturen. Bijvoorbeeld:

git -c http.curloptResolve=github.com:443:15.235.19.186 clone https://fake-user@github.com/Homebrew/brew

curl, python3 en de andere tools die Apple levert, zijn op dezelfde manier beïnvloed. Om curl te controleren, voer je uit:

curl https://dv-g3b-noct-emudhra.we-have-a-problem.com/ curl https://dv-g3b-aaa-noct-emudhra.we-have-a-problem.com/

Een certificaatfout betekent dat curl is beschermd.

Wat zou Apple moeten doen?

Apple heeft Safari en andere apps die zijn gebouwd op het networking framework al beschermd.

Apple moet zo snel mogelijk een fix uitbrengen voor macOS-ontwikkelaars, bijvoorbeeld door de beïnvloede roots te verwijderen uit /etc/ssl/cert.pem.

Wat kunnen ontwikkelaars in de tussentijd doen?

De beïnvloede roots kunnen handmatig worden verwijderd. De macOS-workaround op de hoofdpagina beschrijft de stappen. De richtlijnen van Apple stellen dat macOS-updates de fix kunnen terugdraaien, dus ontwikkelaars moeten de bovenstaande controles en de workaround herhalen na elke update totdat Apple een officiële fix uitbrengt.

Beveiligingsteams zouden ook moeten overwegen of macOS-runners worden gebruikt in hun CI of andere build-infrastructuur en het risico voor de supply chain moeten evalueren.