Bild von PixaBay

GitHub, die weit verbreitete Code-Hosting-Plattform, hat bekannt gegeben, dass über 4.000 Codepakete für RepoJacking-Angriffe anfällig sind. Diese Sicherheitslücke, die von den Forschern von Checkmarx entdeckt wurde, hat in der Open-Source-Gemeinschaft Besorgnis ausgelöst und GitHub zu schnellem Handeln veranlasst.

RepoJacking-Angriff erklärt

RepoJacking, kurz für Repository-Hijacking, ist eine Technik, die von böswilligen Akteuren verwendet wird, um die Kontrolle über ein Repository zu übernehmen. Diese Angriffsmethode nutzt eine Wettbewerbsbedingung zwischen den Prozessen der Repository-Erstellung und der Benutzernamensänderung von GitHub aus. Im Wesentlichen beanspruchen Angreifer den alten Benutzernamen eines Repositorys, nachdem der legitime Ersteller seinen Benutzernamen geändert hat. Dann veröffentlichen sie ein bösartiges Repository mit demselben Namen und täuschen Benutzer, die schädlichen Inhalt herunterladen.

Die Folgen dieser Sicherheitslücke sind erheblich. Sie betrifft über 4.000 Codepakete in Programmiersprachen wie Go, PHP und Swift sowie GitHub Actions. Viele dieser Pakete haben erhebliche Popularität erlangt, mit mehr als 1.000 Sternen. Wir haben die potenziellen Auswirkungen auf Millionen von Benutzern und verschiedene Anwendungen noch nicht entdeckt.

Die Antwort von GitHub

Checkmarx hat diese Sicherheitslücke am 1. März 2023 verantwortungsvoll an GitHub gemeldet, was die Plattform zum Handeln veranlasste. GitHub führte den Mechanismus des „Rückzugs von Namespaces populärer Repositories“ ein, um RepoJacking zu verhindern. Mit dieser Sicherheitsmaßnahme gelten Repositories mit mehr als 100 Klonen zum Zeitpunkt einer Benutzernamensänderung als „zurückgezogen“ und können nicht von anderen verwendet werden. Auch die Kombination aus Benutzername und Repository-Name gilt als „zurückgezogen“.

Es stellte sich jedoch heraus, dass die Sicherheitsmaßnahme leicht umgangen werden konnte. Checkmarx identifizierte über 4.000 Pakete in Paketverwaltern, die umbenannte Benutzernamen verwendeten, wodurch sie einem Hijacking-Risiko ausgesetzt waren.

Wie der Angriff funktioniert

Checkmarx beschrieb die Schritte, die am RepoJacking-Angriff beteiligt sind:

  1. Das Opfer besitzt den Namespace „victim_user/repo“.
  2. Das Opfer benennt „victim_user“ in „renamed_user“ um.
  3. Das Repository „victim_user/repo“ wird zurückgezogen.
  4. Ein Angreifer mit dem Benutzernamen „attacker_user“ erstellt gleichzeitig ein Repository mit dem Namen „repo“ und benennt den Benutzernamen „attacker_user“ in „victim_user“ um.

Dies wird durch eine API-Anfrage zur Repository-Erstellung und das Abfangen einer Umbenennungsanfrage für die Benutzernamensänderung erreicht.

Fortbestehende Sicherheitslücken

Diese Entdeckung zeigt die anhaltenden Risiken, die mit dem Mechanismus des „Rückzugs von Namespaces populärer Repositories“ von GitHub verbunden sind. Viele GitHub-Benutzer, einschließlich derer, die beliebte Repositories und Pakete kontrollieren, entscheiden sich dafür, die von GitHub angebotene Funktion „Benutzer umbenennen“ zu nutzen. Dies macht die Umgehung des „Rückzugs von Namespaces populärer Repositories“ zu einem attraktiven Ziel für Angreifer der Lieferkette.

GitHub ergreift entschlossene Maßnahmen

GitHub hat das Problem ab dem 1. September 2023 nach der verantwortungsvollen Offenlegung durch Checkmarx behoben. Angesichts dieser Sicherheitslücke wird Benutzern empfohlen, die Verwendung zurückgezogener Namespaces zu vermeiden, um die Angriffsfläche zu minimieren. Darüber hinaus werden gründliche Code-Audits empfohlen, um sicherzustellen, dass es keine Abhängigkeiten gibt, die zu einem Repository-Hijacking führen könnten.

Die von Checkmarx entdeckte GitHub-Sicherheitslücke zeigt die anhaltenden Bedrohungen für Open-Source-Projekte. Benutzer sollten wachsam bleiben, da sich die Angriffsmethoden ständig weiterentwickeln.