Programmiersprache Go: Version 1.53 stopft kritische Lücke
Ein Fehler im math/big-Paket der Programmiersprache führt seit Go 1.5.0 potenziell dazu, dass TLS-Server auf 32-bit-Systemen ihren privaten RSA-Schlüssel preisgeben. Version 1.5.3 behebt den Fehler.
Ein Beitrag in der Google-Gruppe zur Programmiersprache Go kündigt die Veröffentlichung von Go 1.5.3 an und rät Nutzern dringend, die aktuelle Version einzuspielen. Vorhandene Go-Programme erfordern ein erneutes Kompilieren mit der neuen Sprachversion.
Das Problem befindet sich im math/big-Paket und betrifft die RSA-Berechnungen in crypto/rsa, TLS-Server nutzen die Funktion innerhalb von crypto/tls. 32-Bit-Systeme können laut dem Beitrag durchaus ihren privaten RSA-Schlüssel aufgrund des Fehlers preisgeben. Das Problem besteht wohl in der Berechnung des chinesischen Restsatzes, der zum effizienten Entschlüsseln und Signieren zum Einsatz kommt.
Eine Frage der Wahrscheinlichkeit
Laut dem Beitrag verhindert RSA-Blinding zwar den gezielten Angriff, aber auf 32-bit-Systemen liegt die Wahrscheinlichkeit für das zufällige Auftreten des Fehlers bei 1: 226. Um den privaten Schlüssel abzugreifen, müsste ein Angreifer somit 67 Millionen bekannter Signaturen eines betroffenen Servers sammeln, was das Team als durchaus realistisch einstuft. 64-Bit-Systeme sind zwar vom selben Fehler betroffen. Hier liegt die Wahrscheinlichkeit des Auftretens jedoch bei 1:250, würde also das Sammeln von über einer Billarde Signaturen erfordern. Dennoch sollten auch Nutzer von 64-Bit-Systemen das Update installieren.
Der Beitrag kündigt für Go 1.6 eine doppelte Überprüfung der RSA-Berechnungen als Gegenmaßnahme gegen ähnliche Fehler an. Auf der Download-Seite von Go sind Binaries der Programmiersprache für Windows, Linux und OS X sowie der Quellcode vorhanden. (rme)