Javascript: RSA-Schlüsselerzeugung mit vielen Nullen

Github sperrt unsichere SSH-Schlüssel, die durch einen Fehler in einer Javascript-Bibliothek erzeugt wurden.

Artikel veröffentlicht am ,
Immer wieder sind es Zufallszahlen, die für Probleme in kryptographischem Code führen.
Immer wieder sind es Zufallszahlen, die für Probleme in kryptographischem Code führen. (Bild: Sankar 1995/Wikimedia Commons/CC-BY-SA 3.0)

Ein Fehler in einer Javascript-Bibliothek namens "keypair" hat zur Erzeugung von zahlreichen unsicheren SSH-Schlüsseln geführt. Die Bibliothek wird unter anderem von der Software Gitkraken verwendet, um SSH-Keys für den Upload bei Github und andere Git-Entwicklungsplattformen zu erzeugen. Wie das Sicherheitsteam von Github schreibt wurden entsprechende SSH-Schlüssel in Github-Benutzerkonten gesperrt und die Betroffenen informiert.

Stellenmarkt
  1. UI/UX Java Developer (m/f/d)
    IFCO Management GmbH, Munich
  2. Specialist National Real Estate (m/w/x)
    ALDI SÜD Dienstleistungs-SE & Co. oHG, Mülheim an der Ruhr
Detailsuche

Mit dem "keypair"-Paket können RSA-Schlüssel in Javascript und NodeJS erzeugt werden. Dabei traten mehrere Fehler bei der Erzeugung von Zufallszahlen auf. Das "keypair"-Paket hat einen eigenen Zufallszahlengenerator implementiert und verwendet dafür nicht die von Javascript bereitgestellten Funktionen.

Variable mit Namen "crypto" sorgt für Ärger

Die Bibliothek versucht zunächst, bei der Initialisierung des Zufallszahlengenerator das in NodeJS vorhandene Crypto-Modul zu verwenden. Doch gleichzeitig verwendete der Code eine Variable mit dem Namen "crypto", die mit dem Wert "null" vorinitialisiert wurde. Sprich: Die Variable überschrieb den Namensraum des Crypto-Moduls.

Alternativ nutzte der Code eine Routine, bei der der Zufallszahlengenerator mit der Javascript-Funktion "Math.random" initialisiert wurde. Das alleine wäre schon eine Sicherheitslücke, denn "Math.random" ist nicht dafür gedacht, sichere Zufallszahlen zu erzeugen.

Golem Akademie
  1. Java EE 8 Komplettkurs: virtueller Fünf-Tage-Workshop
    24.–28. Januar 2022, virtuell
  2. First Response auf Security Incidents: Ein-Tages-Workshop
    4. März 2022, Virtuell
Weitere IT-Trainings

Doch es gab noch einen weiteren Fehler: Die Ausgabe von "Math.random" sollte zu einem Byte konvertiert werden, dabei trat jedoch ein Fehler auf, der dazu führte, dass in den meisten Fällen lediglich eine Null erzeugt wurde.

Zufallscode erzeugt zu 97 Prozent Nullen

Laut Github erzeugt diese Codestelle in 97 Prozent der Fälle eine Null und in anderen Fällen eine Zahl zwischen 1 und 9. Wenig überraschend führt das dazu, dass insgesamt die Zahl der möglichen Varianten relativ gering ist. Dadurch wurde der Bug letztendlich auch gefunden: Einem Entwickler der Firma Axosoft, dem Hersteller der Software Gitkraken, ist aufgefallen, dass der Code manchmal identische RSA-Schlüssel mehrfach erzeugte.

Vom "keypair"-Paket wurden ein Sicherheitsadvisory und Version 1.0.4 veröffentlicht, die das Problem beheben sollen. Problematisch sieht der Code allerdings weiterhin aus. So wird etwa nach wie vor in dem Fall, dass das Crypto-Modul nicht gefunden werden kann, die unsichere Funktion "Math.random" verwendet.

Auch von Gitkraken gibt es ein Update. Nutzer sollten auf die Version 8.0.1 aktualisieren. Nutzer, die mittels älteren Gitkraken-Versionen SSH-Keys erstellt haben, sollten diese umgehend auswechseln. Neben mit Gitkraken erstellten SSH-Schlüsseln ist potenziell auch andere Software, die das "keypair"-Paket verwendet und damit kryptographische Schlüssel erstellt, betroffen.

Github hat seine Nutzer zwar über kompromittierte Schlüssel informiert, der Blogpost der Firma deutet allerdings an, dass es nicht möglich war, zuverlässig alle betroffenen Schlüssel zu identifizieren.

Wer kryptographische Schlüssel in Javascript erzeugen möchte, sollte dabei idealerweise nicht auf externe Pakete zurückgreifen, sondern die Javascript-eigene Webcrypto-API verwenden. Damit ist es möglich, RSA-Schlüssel und andere kryptographische Schlüssel zu erzeugen. In den gängigen Javascript-Engines ist davon auszugehen, dass der kryptographische Code keine derart gravierenden Fehler enthält.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Vanger 13. Okt 2021 / Themenstart

Achso, das meintest du. Sorry, falsch verstanden. Dann will ich nichts gesagt haben :v:

GL 13. Okt 2021 / Themenstart

Genau so sieht ja der eine Test auch aus. Nur dass Trap als Framework verwendet wird...

Ninos 13. Okt 2021 / Themenstart

Ok, hab mir den Code grad angeschaut. Ich hätte erst gar nicht auf eine freiwillige...

Trollversteher 13. Okt 2021 / Themenstart

Richtig, denn erst mit TypeScript wird aus der Friggelkatastrophe JS eine ordentliche...

Engel 13. Okt 2021 / Themenstart

Darf ich ganz kurz argumentieren, dass das Verhalten bei CentOS 7.x noch erheblich...

Kommentieren



Aktuell auf der Startseite von Golem.de
3D-Druck-Messe Formnext 2021
Raus aus der Nische

3D-Druck wird immer schneller, schöner und effizienter. Die Technologie ist dabei, die Produktion zu revolutionieren und in unseren Alltag einzuziehen.
Ein Bericht von Elias Dinter

3D-Druck-Messe Formnext 2021: Raus aus der Nische
Artikel
  1. K|Lens One: Erstes Lichtfeldobjektiv für Spiegelreflexkameras entwickelt
    K|Lens One
    Erstes Lichtfeldobjektiv für Spiegelreflexkameras entwickelt

    Das Spin-off eines Max-Planck-Instituts hat ein Lichtfeldobjektiv für herkömmliche DSLRs entwickelt. Auf Kickstarter kann es unterstützt werden.

  2. Fleet: Jetbrains bringt neuen leichtgewichtigen Editor
    Fleet
    Jetbrains bringt neuen leichtgewichtigen Editor

    Die IDE-Spezialisten von Jetbrains reagieren auf den Druck durch Visual Studio Code. Zudem gibt es nun Remote-Entwicklung.

  3. KI sagt Bundeswehr das Weltraumwetter voraus
     
    KI sagt Bundeswehr das Weltraumwetter voraus

    Viele Firmen haben längst den Nutzen künstlicher Intelligenz (KI) für ihre Geschäftsmodelle erkannt. Wie die Bundeswehr KI wirksam einsetzen könnte, erprobt sie mit der BWI als Digitalisierungspartner.
    Sponsored Post von BWI

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Crucial-SSDs zu Bestpreisen • Nur noch heute: Bis zu 75% auf Switch-Spiele • G.Skill 64GB Kit 3800MHz 319€ • Bis zu 300€ Direktabzug auf TVs, Laptops uvm. bei MM/Saturn • Blizzard-Geschenkkarten • Alternate (u. a. Biostar Mainboard 64,90€) • Xbox Series S 275,99€ [Werbung]
    •  /