Adeptus-Technicus | goto fail
Kurzer Beitrag über die neuste Sicherheitslücke bei Apple.
programmierung, goto, fail, apple, ssl, zertifikat, sicherheit, online, banking, browser
2745
single,single-post,postid-2745,single-format-standard,ajax_updown_fade,page_not_loaded,

BLOG

 

GoTo Fail;

24 Feb 2014, Geschrieben von Thomas in Internet, Uncategorized

Es gibt eine neue, gravierende Sicherheitslücke bei Apple. Also sowohl bei den iPhones und iPads, als auch bei den normalen Rechnern. Das führt dazu, dass bei einer gesicherten SSL Verbindung (was man am https://… im Browser erkennen kann) gar nicht überprüft wird, ob das Zertifikat der Gegenseite korrekt ist.

Wenn mal also gerade beim Online-Banking ist, hat der Browser gar nicht erst überprüft, ob die Gegenseite ein gültiges Zertifikat erstellt hat.

Dazu hat Apple sogar den entsprechenden Sourcecode veröffentlicht (KLICK). Und da muss jeder, der mal was programmiert hat schmunzeln:


    if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
        goto fail;
    if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
        goto fail;
        goto fail;
    if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;

Rein visuell fällt ja schon auf, dass die die Zele mit goto fail; doppelt vorkommt.

Was bedeutet das jetzt?
Die Zeile darüber ist eine if-Anweisung. Das heißt, wenn die Bedingung in der Klammer erfüllt ist, dann wird die nächste Zeile ausgeführt, ansonsten wird sie übersprungen und die übernächste Zeile ausgeführt.

Also vereinfacht so etwas wie:
wenn (Uhrzeit später 17 Uhr)
dann Feierabend;

Im konkreten Fall steht dann aber:

wenn (Uhrzeit später 17 Uhr)
dann Feierabend;
dann Feierabend;

Wenn also die Uhr später als 17 Uhr anzeigt mache Feierabend, ansonsten mache Feierabend.

Der Fehler ist also schon ziemlich blöd, aber kann ja mal beim ganzen Copy & Paste passieren. Mich wundert nur, dass scheinbar niemand die SSL Zertifizierung mit einem falschen Zertifikat getestet hat, um herauszufinden ob sie wirklich funktioniert.

Ich dachte immer, dass bei großen Firmen wie Apple oder Microsoft die Software vor der Veröffentlichung einige standardisierte Tests durchläuft und diese bestehen muss. Und da hätte ich die Überprüfung von SSL dann erwartet!

Scheinbar wohl nicht….

Unabhängig davon ist goto sowieso blöd

und man sollte bei if-Anweisungen immer Klammern verwenden  😉

  • VPS server

    The Adeptus Mechanicus is the sole surviving librarian, desperately scrabbling through the ashes of paper and splinters of hard drives for anything to help him and the city he needs to survive just a second longer.

    Antworten

Beitrag schreiben