Door een kwetsbaarheid in de GitHub Actions-handler konden pakketten in Nixpkgs worden gecompromitteerd.

Kwetsbaarheden in GitHub Actions-handlers, die automatisch worden aangeroepen bij het indienen van pull-requests naar de Nixpkgs-pakketrepository, die wordt gebruikt in de NixOS-distributie en het Nix-pakketbeheerecosysteem, zijn bekendgemaakt. De kwetsbaarheid stelde een ongeautoriseerde gebruiker in staat een token te extraheren dat lees- en schrijftoegang gaf tot de broncode van alle pakketten die in Nixpkgs worden gehost. Dit token maakte directe wijziging van elk pakket via de Git-repository van het project mogelijk, waarbij de beoordelings- en goedkeuringsprocessen werden omzeild.

De mogelijkheid om Nixpkgs te hacken en aangepaste code in elk pakket te injecteren, werd afgelopen oktober gedemonstreerd door beveiligingsonderzoekers tijdens de NixCon-conferentie en werd direct gepatcht in de infrastructuur van het project. Details van de aanval werden echter pas een jaar later bekendgemaakt. Het probleem hield verband met het gebruik van GitHub Actions-handlers in de Nixpkgs GitHub-repository, die gekoppeld zijn aan de gebeurtenis "pull_request_target" en geautomatiseerde controles uitvoeren op nieuwe pull-requests.

In tegenstelling tot de "pull_request"-gebeurtenis krijgen handlers in "pull_request_target" lees-/schrijftoegang tot de buildomgeving, wat speciale zorg vereist bij het werken met gegevens die in een pull-request zijn doorgegeven. Een van de handlers die aan "pull_request_target" is gekoppeld, valideerde het bestand "OWNERS" in de pull-request door het hulpprogramma codeowners-validator te bouwen en aan te roepen: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Het probleem was dat als het OWNERS-bestand onjuist was geformatteerd, het codeowners-validator-hulpprogramma de inhoud van de misvormde string naar het standaard, openbaar toegankelijke logbestand zou exporteren. De aanval bestond uit het plaatsen van een symbolische link met de naam OWNERS in de pull-request, die verwees naar het bestand ".credentials", waarin de referenties in de buildomgeving worden opgeslagen. De verwerking van dit bestand resulteerde in een fout en de eerste regel, met het toegangstoken voor de repository, werd naar het openbare logbestand geëxporteerd.

 Door een kwetsbaarheid in de GitHub Actions-handler konden pakketten in Nixpkgs worden gecompromitteerd.

Bovendien werd een andere kwetsbaarheid gevonden in de handler die editorconfig-regels controleert. stappen: — naam: Haal lijst met gewijzigde bestanden op uit PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — gebruikt: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 met: ref: refs/pull/$/merge — naam: EditorConfig controleren run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

In dit geval was het probleem het gebruik van het hulpprogramma "xargs" om editorconfig-checker uit te voeren met elk bestand in de pull-request. Omdat bestandsnamen niet werden gevalideerd, kon een aanvaller een bestand met speciale tekens in de pull-request opnemen, die vervolgens als opdrachtregelargumenten werden verwerkt bij het uitvoeren van editorconfig-checker. Bij het aanmaken van een bestand "--help" gaf editorconfig-checker bijvoorbeeld een hint over de beschikbare opties.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster