Die Entwickler der Programmiersprache Rust haben vor der Entdeckung eines schĂ€dlichen Codes im Repository crates.io gewarnt. Das Paket basierte auf dem legitimen Paket rust_decimal und nutzte eine NamensĂ€hnlichkeit (Typosquatting), in der Annahme, dass der Benutzer bei der Suche oder der Auswahl eines Moduls aus der Liste nicht auf das Fehlen des Unterstrichs achten wĂŒrde.
Bemerkenswert ist, dass die genannte Strategie erfolgreich war und beim Download-Zahlen der gefĂ€lschte Paket lediglich leicht hinter dem Original zurĂŒckblieb (~111.000 Downloads von rustdecimal 1.23.1 und 113.000 des Original rust_decimal 1.23.1). Dabei entfielen die meisten Downloads auf einen harmlosen Klon, der keinen bösartigen Code enthielt. Die schĂ€dlichen Ănderungen wurden am 25. MĂ€rz in der Version rustdecimal 1.23.5 hinzugefĂŒgt, die vor der Entdeckung des Problems und der Sperrung des Pakets etwa 500 Mal heruntergeladen wurde (es wird angenommen, dass der GroĂteil der Downloads der bösartigen Version von Bots durchgefĂŒhrt wurde) und nicht in den AbhĂ€ngigkeiten anderer Pakete im Repository verwendet wurde (es ist nicht auszuschlieĂen, dass das bösartige Paket in den AbhĂ€ngigkeiten der Endanwendungen war).
Die bösartigen Ănderungen bestand darin, eine neue Funktion Decimal::new hinzuzufĂŒgen, in deren Implementierung obfuskierter Code fĂŒr den Download von externen Server und das AusfĂŒhren der ausfĂŒhrbaren Datei. Bei der Funktion wurde die Umgebungsvariable GITLAB_CI ĂŒberprĂŒft, und wenn sie gesetzt war, wurde die Datei /tmp/git-updater.bin von einem externen Server heruntergeladen. Der heruntergeladene schĂ€dliche Handler unterstĂŒtzte die AusfĂŒhrung unter Linux und macOS (Windows-Plattform wurde nicht unterstĂŒtzt).
Es wurde angenommen, dass die bösartige Funktion wĂ€hrend des Tests in Continuous Integration-Systemen ausgefĂŒhrt wird. Nach der Blockierung von rustdecimal fĂŒhrten die Administratoren von crates.io eine Analyse des Repository-Inhalts auf Ă€hnliche bösartige Einspeisungen durch, entdeckten jedoch keine Probleme in anderen Paketen. Den Betreibern von Continuous Integration-Systemen basierend auf der GitLab-Plattform wird geraten, sicherzustellen, dass die getesteten Servern Projekte das Paket rustdecimal nicht in ihren AbhĂ€ngigkeiten verwendeten.
Quelle: opennet.ru
