Abo
  1. Foren
  2. Kommentare
  3. Sonstiges
  4. Alle Kommentare zum Artikel
  5. › Memcmp: Timing-Attacke auf Philips…

Wenn memcmp zum String vergleichen genutzt wird,

  1. Thema

Neues Thema Ansicht wechseln


  1. Wenn memcmp zum String vergleichen genutzt wird,

    Autor: bstea 10.08.14 - 17:57

    was macht man dann mit strcmp?

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  2. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: muhzilla 10.08.14 - 19:33

    Und genau wegen solchen Dingen kann ich wenn es hart auf hart kommt, sehr gut auf golem verzichten :)

  3. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: Elberet 10.08.14 - 20:01

    > Wenn memcmp zum String vergleichen genutzt wird,
    ... dann hat der Programmierer gezeigt, dass er wenigstens die grundlegendsten Patterns für guten C Code kennt.

    memcmp() nimmt als dritten Parameter die Länge der zu vergleichenden Speicherblöcke. Die Funktion vergleicht höchstens so viele Bytes wie dort angegeben. strcmp() nimmt nur zwei char* Pointer und betrachtet das erste Null-Byte als Ende des Strings, was potentiell unsicher ist. Zwar sind die Risiken geringer als bei strcpy(), aber eine erfolgreiche Manipulation kann z.B. dazu führen, dass strcmp() ungemappten Speicher lesen will und damit einen page fault auslöst. Unter Windows und Linux stirbt daran das Programm, in einem embedded System kann daraus schnell ein triple fault / reset werden.

  4. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: HansHorstensen 10.08.14 - 21:01

    Elberet schrieb:
    --------------------------------------------------------------------------------
    Zwar sind die
    > Risiken geringer als bei strcpy(), aber eine erfolgreiche Manipulation kann
    > z.B. dazu führen, dass strcmp() ungemappten Speicher lesen will und damit
    > einen page fault auslöst. Unter Windows und Linux stirbt daran das
    > Programm, in einem embedded System kann daraus schnell ein triple fault /
    > reset werden.

    Was veranlasst dich dazu, zu glauben, dass memcmp() anfaellig fuer deinen an dieser stelle vollkommen irrelevanten, an den haaren herbeigezogenen angriffsvektor anfaellig ist, strcmp() hingegen nicht? zeichenketten vergleicht man mit strcmp(), binaerdaten mit memcmp(). wenn zeichenketten per memcmp() verglichen werden, werden diese gerade durch angabe eines laengenfeldes ueber das null-terminierende byte hinaus verglichen, was alles andere als korrekt ist. wenn binaerdaten per strcmp() verglichen werden, dann wird der vergleich beim auftreten eines nullbytes in einer der beiden speicherbereiche abgebrochen. durch letzteres wurde bei einem vergleich zweier binaer-hashes die ausfuehrung eigenen codes auf der nintendo wii ermoeglicht.

    bitte kein wikipedia halbwissen verbreiten... und strcpy() hat in diesem kontext ueberhaupt nichts verloren.

  5. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: unknown75 10.08.14 - 22:02

    +1
    wo er recht hat, hat er recht ;-)

  6. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: DerVorhangZuUndAlleFragenOffen 11.08.14 - 03:06

    Frage: Warum memcmp um Zeichenketten zu vergleichen...
    Antwort: Weil es unter Umständen schneller sein kann, weil die Register-Länge voll ausnutzen kann (Implementationsabhängig). Wichtig ist dabei natürlich wie man im Programm Zeichenketten handhabt. Aber ein Programmierer der memcpy kennt, sollte auch memset kennen, und den Puffer damit immer schön mit Null aufzufüllen bevor er seine Zeichenkette darin ablegt damit der memcmp nachher auch das richtige tut.

    "Entwickeln Sie ein positives Verhältnis zu Daten und freuen sie sich wenn wir mehr wissen!" ~Angela Merkel (12.06.2015)

  7. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: DerVorhangZuUndAlleFragenOffen 11.08.14 - 03:30

    DerVorhangZuUndAlleFragenOffen schrieb:
    --------------------------------------------------------------------------------
    > Frage: Warum memcmp um Zeichenketten zu vergleichen...
    > Antwort: Weil es unter Umständen schneller sein kann, weil die
    > Register-Länge voll ausnutzen kann (Implementationsabhängig). Wichtig ist
    > dabei natürlich wie man im Programm Zeichenketten handhabt. Aber ein
    > Programmierer der memcpy kennt, sollte auch memset kennen, und den Puffer
    > damit immer schön mit Null aufzufüllen bevor er seine Zeichenkette darin
    > ablegt damit der memcmp nachher auch das richtige tut.
    Frage: Warum memcmp um Zeichenketten zu vergleichen...
    Antwort: Weil es unter Umständen schneller sein kann, weil bei bekannter Datenblocklänge die Registerlänge der CPU zum Vergleichen voll ausgenutzt kann (Implementationsabhängig; Vergleiche hierzu auch einmal den Debug/CRT Code der vom MS Visual Studio Debugger angezeigt wird, mit dem Assembler-Output der im Release-Mode vom Compiler erzeugt wird).

    Aber der Vorredner hat natürlich auch recht. Wie man in einem Programm Zeichenketten handhabt ist sehr wichtig. Aber ein Programmierer der memcpy kennt, sollte auch memset kennen, und den Puffer damit immer schön mit Null aufzufüllen bevor er seine Zeichenkette darin ablegt, damit der memcmp nachher auch das richtige tut. Das Überprüfen der Länge einer Zeichenkette bevor man etwas macht ist auch von Vorteil. Haben wir bei OpenSSL neulich ja bereits herausgefunden.

    Für den genannten Angriffsvektor gibt es nur eine gescheite Lösung. Nutze kein memcmp, sondern nutze eine Funktion die immer erst einmal alle Zeichen vergleicht und bei jedem Vergleich eine Variable aufdatet. Dann ist die Timing-Attacke unmöglich. Also in etwa folgendes:

    int result = 0
    char a[256]
    char b[256]
    int i = 256
    while (i--) {
    result |= a ^ b
    }
    if (result) { falsches passwort } else { passt! }

    "Entwickeln Sie ein positives Verhältnis zu Daten und freuen sie sich wenn wir mehr wissen!" ~Angela Merkel (12.06.2015)



    4 mal bearbeitet, zuletzt am 11.08.14 03:33 durch DerVorhangZuUndAlleFragenOffen.

  8. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: bstea 11.08.14 - 05:46

    Sollte nicht a und b mitlaufen?

    --
    Erst wenn der letzte Baum gefällt, der letzte Fluss gestaut und der letzte Fisch gefangen ist, werdet ihr feststellen, dass man Biber nicht essen kann!

  9. Re: Wenn memcmp zum String vergleichen genutzt wird,

    Autor: DerVorhangZuUndAlleFragenOffen 11.08.14 - 12:13

    bstea schrieb:
    --------------------------------------------------------------------------------
    > Sollte nicht a und b mitlaufen?

    Ups... Ja... Der Sinn ist natürlich i als Array-Index zu verwenden... Aber man versteht denke ich was ich meinte.

    "Entwickeln Sie ein positives Verhältnis zu Daten und freuen sie sich wenn wir mehr wissen!" ~Angela Merkel (12.06.2015)

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Zum Login

Stellenmarkt
  1. ENERCON GmbH, Aurich
  2. SP_Data GmbH & Co. KG, Herford
  3. NÜRNBERGER Versicherung, Nürnberg
  4. B. Strautmann & Söhne GmbH & Co. KG, Bad Laer

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote
  1. (u. a. Grafikkarten, Monitore, Mainboards)
  2. täglich neue Deals bei Alternate.de
  3. 58,99€
  4. 119,90€


Haben wir etwas übersehen?

E-Mail an news@golem.de


Technologie: Warum Roboter in Japan so beliebt sind
Technologie
Warum Roboter in Japan so beliebt sind

Japaner produzieren nicht nur mehr Roboter als jede andere Nation, sie gehen auch selbstverständlicher mit ihnen um. Das liegt an der besonderen Geschichte und Religion des Inselstaats - und an Astro Boy.
Von Miroslav Stimac

  1. Kreativität Roboterdame Ai-Da soll zeichnen und malen
  2. Automatisierung Roboterhotel entlässt Roboter
  3. Cimon Die ISS bekommt einen sensiblen Kommunikationsroboter

Falcon Heavy: Beim zweiten Mal wird alles besser
Falcon Heavy
Beim zweiten Mal wird alles besser

Die größte Rakete der Welt fliegt wieder. Diesmal mit voller Leistung, einem Satelliten und einer gelungenen Landung im Meer. Die Marktbedingungen sind für die Schwerlastrakete Falcon Heavy in nächster Zeit allerdings eher schlecht.
Von Frank Wunderlich-Pfeiffer und dpa

  1. SpaceX Raketenstufe nach erfolgreicher Landung umgekippt
  2. Raumfahrt SpaceX zündet erstmals das Triebwerk des Starhoppers
  3. Raumfahrt SpaceX - Die Rückkehr des Drachen

Fitbit Versa Lite im Test: Eher smartes als sportliches Wearable
Fitbit Versa Lite im Test
Eher smartes als sportliches Wearable

Sieht fast aus wie eine Apple Watch, ist aber viel günstiger: Golem.de hat die Versa Lite von Fitbit ausprobiert. Neben den Sport- und Fitnessfunktionen haben uns besonders der Appstore und das Angebot an spaßigen und ernsthaften Anwendungen interessiert.
Von Peter Steinlechner

  1. Smartwatch Fitbit stellt Versa Lite für Einsteiger vor
  2. Inspire Fitbits neues Wearable gibt es nicht im Handel
  3. Charge 3 Fitbit stellt neuen Fitness-Tracker für 150 Euro vor

  1. Faltbares Smartphone: Samsung sagt Start des Galaxy Fold ab
    Faltbares Smartphone
    Samsung sagt Start des Galaxy Fold ab

    Samsung steht vor einem Foldgate: Der südkoreanische Hersteller hat den Marktstart des faltbaren Smartphones Galaxy Fold vorerst abgesagt. Nachdem die Testgeräte einiger Journalisten auch ohne ihr Zutun kaputt gegangen sind, soll das Gerät noch einmal gründlich untersucht werden.

  2. Joe Armstrong: Der Erlang-Erfinder ist gestorben
    Joe Armstrong
    Der Erlang-Erfinder ist gestorben

    Der Informatiker Joe Armstrong gilt als Erfinder der Programmiersprache Erlang und war Experte für verteilte und fehlertolerante Systeme. Armstrong erlag nun den Folgen einer Lungenerkrankung.

  3. Tchap: Forscher gelingt Anmeldung im Regierungschat Frankreichs
    Tchap
    Forscher gelingt Anmeldung im Regierungschat Frankreichs

    Kurz nach dem Start ist es einem Sicherheitsforscher gelungen, sich unberechtigt bei der Whatsapp-Alternative der französischen Regierung anzumelden. Der Forscher fand weitere vermeintliche Fehler, die laut den Entwicklern der Matrix-Software aber keine sind.


  1. 21:11

  2. 12:06

  3. 11:32

  4. 11:08

  5. 12:55

  6. 11:14

  7. 10:58

  8. 16:00