Schwachstellen an de GitHub Actions Handler, déi automatesch opgeruff ginn, wann Pull-Ufroen un den Nixpkgs Package Repository geschéckt ginn, deen an der NixOS Distributioun an dem Nix Package Manager Ökosystem benotzt gëtt, goufen opgedeckt. D'Schwachstellen hunn et engem net autoriséierte Benotzer erlaabt, en Token ze extrahéieren, deen Lies- a Schreifzougang zum Quellcode vun alle Paketen, déi an Nixpkgs gehost ginn, gëtt. Dësen Token huet eng direkt Modifikatioun vun all Paket iwwer de Git Repository vum Projet erlaabt, andeems d'Iwwerpréiwungs- a Genehmegungsprozesser ëmgaange goufen.
D'Fäegkeet, Nixpkgs ze kompromittéieren an personaliséierte Code an all Pakett anzesetzen, gouf am Oktober vum leschte Joer op der NixCon Konferenz vu Sécherheetsfuerscher demonstréiert an direkt an der Infrastruktur vum Projet gepatcht. Detailer vum Ugrëff goufen awer eréischt ee Joer méi spéit bekannt ginn. De Problem hat mat der Benotzung vu GitHub Actions Handler am Nixpkgs GitHub Repository ze dinn, déi un den "pull_request_target" Event gebonnen sinn an automatiséiert Kontrollen bei neie Pull Requests duerchféieren.
Am Géigesaz zum Event "pull_request" kréien d'Handler am "pull_request_target" Lies-/Schreifzougang zu der Build-Ëmfeld, wat besonnesch Suergfalt erfuerdert wann een mat Daten schafft, déi an enger Pull-Ufro weiderginn ginn. Ee vun den Handler, déi un "pull_request_target" gebonnen sinn, huet d'Datei "OWNERS" validéiert, déi an der Pull-Ufro geliwwert gouf, andeems en den Utility codeowners-validator erstallt an opgeruff huet: Schrëtt: — benotzt: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf mat: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
De Problem war, datt wann d'OWNERS-Datei falsch formatéiert war, den Utility codeowners-validator den Inhalt vum falsch geformte String an de Standard-, ëffentlech zougängleche Logbuch ausgeginn huet. Den Ugrëff bestoung doran, e symbolesche Link mam Numm OWNERS an der Pull-Ufro ze placéieren, deen op d'Datei ".credentials" weist, déi d'Umeldungsinformatiounen an der Build-Ëmfeld späichert. Dofir huet d'Veraarbechtung vun dëser Datei zu engem Feeler gefouert an déi éischt Zeil, déi den Zougangstoken fir de Repository enthält, gouf an de Public Log ausgeginn.

Zousätzlech gouf eng aner Schwachstelle am Handler fonnt, deen d'Editorconfig-Regele kontrolléiert. Schrëtt: — Numm: Lëscht vun de geännerte Dateien aus dem PR kréien run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — Numm: EditorConfig iwwerpréiwen run: cat «$HOME/changed_files» | xargs -r editorconfig-checker
An dësem Fall war de Problem d'Benotzung vum Utility "xargs" fir editorconfig-checker mat all Datei an der Pull-Ufro auszeféieren. Well d'Dateinimm net validéiert goufen, kéint en Ugräifer eng Datei mat Spezialzeechen an der Pull-Ufro abannen, déi als Kommandozeilenargumenter veraarbecht géife ginn, wann editorconfig-checker ausgeféiert gouf. Zum Beispill, wann eng "--help" Datei erstallt gouf, géif editorconfig-checker en Hiwäis iwwer déi verfügbar Optiounen uweisen.
Source: opennet.ru
