OpenSSL: Fork und der Zufall

Der Zufallsgenerator von OpenSSL liefert unter bestimmten Umständen bei mehreren Aufrufen identische Werte, wenn er aus mehreren parallel ablaufenden Prozessen desselben Programms aufgerufen wird.

Artikel veröffentlicht am , Hanno Böck
Schlechte Zufallszahlen führen zu Sicherheitsproblemen.
Schlechte Zufallszahlen führen zu Sicherheitsproblemen. (Bild: Screenshot / Hanno Böck)

Nachdem in der vergangenen Woche eine gravierende Schwachstelle im Zufallszahlengenerator von Android bekannt wurde, hat Ruby-Entwickler Martin Boßlet die Hintergründe des Problems analysiert. Besonders in kryptografischen Applikationen spielen Zufallszahlen eine wichtige Rolle und Probleme können dazu führen, dass Verschlüsselungssysteme unsicher werden.

Stellenmarkt
  1. Assistenz Bereichsvorstand Vertrieb, Service und Technologie Exzellenz (m/w/d)
    DMG MORI Global Service GmbH, Pfronten
  2. Product-Owner IT-Security Detection & Response (m/w/d)
    Amprion GmbH, Dortmund
Detailsuche

Eine Schwachstelle in OpenSSL führt dazu, dass der Zufallsgenerator der Verschlüsselungsbibliothek in Programmen, die mehrere Unterprozesse nutzen, unter bestimmten Umständen denselben Wert zurückliefert. Das Problem tritt auf, wenn der Zufallszahlengenerator im Hauptprogramm initialisiert wird und anschließend mehrere per Fork gestartete Unterprozesse Zufallszahlen abrufen. In diesem Fall liefert die Zufallsfunktion in allen Prozessen denselben Wert. Grund dafür: Die einzige zusätzliche Zufallsquelle, die in den Unterprozessen genutzt wird, ist die Prozess-ID (PID). Diese wiederholt sich allerdings bereits nach 32768 Unterprozessen, weshalb Programme, die sehr viele Unterprozesse aufrufen, von dem Problem betroffen sind

Bereits vor zwei Jahren hatte Ruby-Entwickler Eric Wong auf der OpenSSL-Mailingliste auf das Problem hingewiesen. Es entspann sich eine Diskussion darüber, ob der Fehler in der OpenSSL-Bibliothek liegt oder ob es sich vielmehr um eine unzulässige Nutzung des Zufallszahlengenerators handelt. Letztere Ansicht setzte sich zunächst durch und am OpenSSL-Code wurde nichts verändert.

Nachdem nun bereits mehrere große Projekte von dem Problem betroffen waren - neben Android und Ruby wurde auch in PostgreSQL bereits ein entsprechender Bug gefunden - plädiert Martin Boßlet dafür, das Problem in OpenSSL selbst zu lösen. Auf der OpenSSL-Mailingliste wird nun diskutiert, ob man neben der PID die Systemzeit als weitere Zufallsquelle nutzen sollte. Ähnlich arbeiten auch die FIPS-Standards der US-Regierung für sichere Zufallszahlengeneratoren.

Golem Karrierewelt
  1. Kubernetes Dive-in-Workshop: virtueller Drei-Tage-Workshop
    17.-19.01.2023, Virtuell
  2. Grundlagen für Virtual Reality mit Unreal Engine: virtueller Drei-Tage-Workshop
    05.-07.12.2022, Virtuell
Weitere IT-Trainings

Generell kritisiert Boßlet, dass Zufallsgeneratoren oft wenig systematisch entwickelt werden und sich somit viele überraschende Probleme darin verbergen können. Eine Möglichkeit wäre, generell auf bewährte Standards zu setzen, Boßlet verweist etwa auf den Fortuna-Zufallszahlengenerator von Bruce Schneier und Niels Ferguson oder auf die Standards der US-Standardisierungsbehörde NIST, die auch Teil der FIPS-Standards sind. Eine andere Möglichkeit wäre, dass Zufallszahlen unter Linux generell über /dev/urandom erzeugt werden. Der Code hierfür hat laut Boßlet einen vergleichsweise guten Ruf. Allerdings steht diese Möglichkeit nur unter Linux bereit.

Bei seinen Tests stellte Martin Boßlet weiterhin fest, dass das Problem in C-Code nur unter bestimmten Umständen auftrat - und zwar in Abhängigkeit von der Linux-Distribution. Nur in Debian-basierten Distributionen konnte er das Problem zunächst reproduzieren. Der Hintergrund dazu erinnert an das OpenSSL-Debakel in Debian von 2008. Demnach nutzt OpenSSL für seinen Zufallszahlengenerator einen unter bestimmten Umständen uninitialisierten Speicherbereich. Dieser enthält meist irgendwelche bereits vorhandenen Nutzerdaten, wodurch eine weitere Zufallsquelle besteht. In Debian ist der entsprechende Code auskommentiert und der Zufallsgenerator startet mit einem durch Nullen initialisierten Speicherbereich. Auf die Zufallszahlen im uninitialisierten Speicher verlassen sollte man sich allerdings auch nicht. Wird dieser vorher vom Nutzer selbst initialisiert, enthält er ebenfalls bereits Nulldaten.

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


petera 26. Aug 2013

Btw. Timer =/= Uhrzeit/Zeitstempel, sequentielle, korrelierbare Informationen haben...

petera 26. Aug 2013

/dev/random unter Linux kann besser sein weil er blockt, wenn er nicht mehr ausreichend...

petera 26. Aug 2013

Jeder PRNG der nicht aussreichend Entropie im Seed oder seinem Akkumulator verwendet...

Unwichtig 23. Aug 2013

https://blog.startcom.org/wp-content/uploads/2008/05/debian-rng.jpg Schoenes Wochenende...



Aktuell auf der Startseite von Golem.de
Elektromobilität
Im Winter hat der ID.3 fast 30 Prozent weniger Reichweite

Der Verbrauch bei einem Elektroauto von VW schwankt über das Jahr ordentlich. Anders beim Verbrenner. Doch dessen Verbrauch ist ungleich höher.

Elektromobilität: Im Winter hat der ID.3 fast 30 Prozent weniger Reichweite
Artikel
  1. Digitale Dienste und Märkte: Wie DSA und DMA umgesetzt werden
    Digitale Dienste und Märkte
    Wie DSA und DMA umgesetzt werden

    Die Verordnungen über digitale Dienste und Märkte sind inzwischen in Kraft getreten. An ihrer Umsetzung können Interessenvertreter sich noch beteiligen.
    Ein Bericht von Friedhelm Greis

  2. Fit werden für die Cloud - zum halben Preis!
     
    Fit werden für die Cloud - zum halben Preis!

    Ohne Clouddienste geht heute in vielen Unternehmen nicht mehr viel. Die Golem Karrierewelt liefert unverzichtbares Cloud-Know-how mit 50 Prozent Black-Week-Rabatt.
    Sponsored Post von Golem Karrierewelt

  3. Cosmoteer im Test: Factorio im Weltraum
    Cosmoteer im Test
    Factorio im Weltraum

    Eine einzige Person hat über viele Jahre die Sandbox Cosmoteer entwickelt. Dort bauen wir Raumschiffe und kämpfen im All. Achtung, Suchtpotenzial!
    Ein Test von Oliver Nickel

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 • Black Friday bei Mindfactory, MediaMarkt & Saturn • Prime-Filme leihen für je 0,99€ • WD_BLACK SN850 1TB 129€ • GIGABYTE Z690 AORUS ELITE 179€ • SanDisk SSD Plus 1TB 59€ • Crucial P3 Plus 1TB 81,99 • Mindfactory: XFX Speedster ZERO RX 6900 XT RGB EKWB Waterblock LE 809€ [Werbung]
    •  /