Im Paketmanager Guix wurden SicherheitsanfĂ€lligkeiten (keine CVEs zugewiesen) in der Implementierung des internen Befehls âguix substituteâ festgestellt, der automatisch vom Hintergrundprozess guix-daemon bei der AusfĂŒhrung von PaketinstallationsvorgĂ€ngen aufgerufen wird. Der Befehl wird verwendet, um bereits kompilierte BinĂ€rpakete von externen Servern herunterzuladen und deren IntegritĂ€t mittels digitaler Signatur zu ĂŒberprĂŒfen. Die gefĂ€hrlichste SicherheitsanfĂ€lligkeit ermöglicht es, remote Code im System des Benutzers mit den Rechten auszufĂŒhren, unter denen der Hintergrundprozess guix-daemon lĂ€uft.
Das Problem betrifft alle Konfigurationen mit dem Prozess guix-daemon, unabhĂ€ngig davon, ob er mit Root-Rechten oder mit einem unprivilegierten Benutzer ausgefĂŒhrt wird. FĂŒr die Ausnutzung der SicherheitsanfĂ€lligkeit genĂŒgt ein beliebiger Versuch, vorgefertigte BinĂ€rpakete von Server, die unter der Kontrolle des Angreifers stehen. Dabei muss die schĂ€dliche Server nicht unbedingt ausdrĂŒcklich vom Benutzer ausgewĂ€hlt oder in den Einstellungen angegeben werden â sie kann ĂŒber die Option ââdiscoverâ bestimmt werden, was es ermöglicht, den Server im Rahmen eines MITM-Angriffs auszutauschen. In Konfigurationen, in denen guix-daemon mit erhöhter Berechtigung lĂ€uft, kann ein lokaler Benutzer einen Angriff durchfĂŒhren, wenn er die Möglichkeit hat, sich ĂŒber einen Unix-Socket mit dem Hintergrundprozess zu verbinden (standardmĂ€Ăig fĂŒr alle Benutzer zugĂ€nglich).
Die SicherheitsanfĂ€lligkeit tritt im Handler ârestore-fileâ auf, der verwendet wird, um beim Laden des Pakets zu entpacken, ohne auf den vollstĂ€ndigen Download und die Verifizierung des heruntergeladenen Archivs mittels digitaler Signatur zu warten. Das Problem wird durch das Fehlen einer ĂberprĂŒfung auf die Zeichen â.â , â/â und â..â in den im Archiv enthaltenen Dateipfaden verursacht. Durch das EinfĂŒgen falscher Dateinamen ins Archiv kann der Angreifer erreichen, dass eine beliebige Datei in jeden Bereich des Dateisystems geschrieben wird, soweit es die Rechte erlauben, unter denen der Hintergrundprozess guix-daemon ausgefĂŒhrt wird.
Um die AusfĂŒhrung seines Codes im System zu organisieren, kann man beispielsweise ein automatisch gestartetes Skript wie â~/.bashrcâ oder â~/.profileâ hinzufĂŒgen oder die Datei â~/.ssh/authorized_keysâ mit den SSH-SchlĂŒsseln Ă€ndern. Wenn in einem Mehrbenutzersystem guix-daemon unter dem Benutzer root ausgefĂŒhrt wird, kann der Angreifer die Datei mit Passwörtern oder Systemskripten ĂŒberschreiben.
Die Möglichkeit, gefĂ€lschte Server zur Verbreitung von Malware-Paketen zu erstellen, resultiert daraus, dass das Verfahren zur Abfrage von Metadaten (narinfo) zu verfĂŒgbaren BinĂ€rpaketen (fetch-narinfos) die ServerzertifikatsĂŒberprĂŒfung nicht durchfĂŒhrte und sich darauf verlieĂ, dass der gröĂte Teil der Metadaten durch eine digitale Signatur gesichert wurde. Es stellte sich heraus, dass die Signatur die URL zum Herunterladen des Pakets nicht abdeckte, was eine Manipulation ohne BeeintrĂ€chtigung der IntegritĂ€t der Metadaten ermöglichte. Letztendlich wĂ€re das gefĂ€lschte Paket aufgrund des Scheiterns der ĂberprĂŒfung seines Inhalts durch den digitalen Signatur-Hash verworfen worden, jedoch fand diese ĂberprĂŒfung erst nach dem Entpacken statt, bei dem das Problem mit den Sonderzeichen in den Dateinamen auftrat.
Neben dem Befehl âguix substituteâ wird der anfĂ€llige Handler ârestore-fileâ auch in den Befehlen âguix offloadâ, âguix archive âextractâ und âguix challengeâ verwendet, ĂŒber die ebenfalls die Schwachstelle ausgenutzt werden kann. Als Umgehungslösung zur Blockierung der Schwachstelle wird empfohlen, die Option ââno-substitutesâ in allen guix-Befehlen ausdrĂŒcklich anzugeben. Die Schwachstelle wurde in den Code der Guix-Basis ĂŒbernommen. Benutzern wird geraten, die von den Entwicklern bereitgestellten Patches fĂŒr guix und guix-daemon umgehend zu installieren.
Neben dem genannten Problem wurden in Guix noch drei weitere Schwachstellen beseitigt:
- Die Möglichkeit, BinĂ€rpakete zu manipulieren, aufgrund fehlender ĂbereinstimmungsĂŒberprĂŒfung des angeforderten Pakets mit den zurĂŒckgegebenen Metadaten im fetch-narinfos-Handler. Diese Schwachstelle kann zum Ausliefern einer veralteten Version des angeforderten Pakets genutzt werden, die SicherheitsanfĂ€lligkeiten aufweist.
- Die Bestimmung des Inhalts der ersten Zeile beliebiger Dateien im System durch die Ăbermittlung einer Anfrage von einem lokalen Benutzer mit der URI âfile://â (ââsubstitute-urls file:////etc/shadowâ). Wenn der guix-daemon mit Root-Rechten ausgefĂŒhrt wird, wird die angeforderte Datei gelesen, festgestellt, dass sie keine Metadaten ist, und gibt einen Fehler aus, in dem die Zeile erwĂ€hnt wird, die nicht analysiert werden konnte.
- Die Angabe eines spezifisch formatierten Namens eines externen Repositories («..\/..\/..\/..\/newfile») bei der AusfĂŒhrung der Befehle «guix pull» und «guix time-machine» ermöglicht es, Daten mit Informationen zu Commits in eine beliebige bestehende Datei im Dateisystem zu schreiben, sofern ihr Inhalt einer Liste von Zeilen in der Sprache Scheme Ă€hnelt. Diese Schwachstelle kann fĂŒr DoS-Angriffe verwendet werden, aber es ist nicht auszuschlieĂen, dass durch ausgeklĂŒgelte Manipulationen mit dem Pseudo-Dateisystem /proc gefĂ€hrlichere Eingriffe in das System erzielt werden können.
Quelle: opennet.ru
