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)

  1. Thema

Neues Thema Ansicht wechseln


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

Stellenmarkt
  1. Wirecard Technologies GmbH, Aschheim near Munich
  2. BWI GmbH, Bonn, Berlin, Strausberg
  3. BAS Kundenservice GmbH & Co. KG, Berlin
  4. VRmagic Imaging GmbH, Mannheim

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote
  1. (u. a. beide Spiele zu Ryzen 9 3000 oder 7 3800X Series, eines davon zu Ryzen 7 3700X/5 3600X/7...
  2. 229€ (Bestpreis!)
  3. mit Gutschein: NBBX570


Haben wir etwas übersehen?

E-Mail an news@golem.de


iPad 7 im Test: Nicht nur für Einsteiger lohnenswert
iPad 7 im Test
Nicht nur für Einsteiger lohnenswert

Auch mit der siebten Version des klassischen iPads richtet sich Apple wieder an Nutzer im Einsteigersegment. Dennoch ist das Tablet sehr leistungsfähig und kommt mit Smart-Keyboard-Unterstützung. Wer ein gutes, lange unterstütztes Tablet sucht, kann sich freuen - ärgerlich sind die Preise fürs Zubehör.
Ein Test von Tobias Költzsch

  1. iPad Einschränkungen für Apples Sidecar-Funktion
  2. Apple Microsoft Office auf neuem iPad nicht mehr kostenlos nutzbar
  3. Tablet Apple bringt die 7. Generation des iPads

Gemini Man: Überflüssiges Klonexperiment
Gemini Man
Überflüssiges Klonexperiment

Am 3. Oktober kommt mit Gemini Man ein ambitioniertes Projekt in die deutschen Kinos: Mit HFR-Projektion in 60 Bildern pro Sekunde und Will Smith, der gegen sein digital verjüngtes Ebenbild kämpft, betreibt der Actionfilm technisch viel Aufwand. Das Seherlebnis ist jedoch bestenfalls komisch.
Von Daniel Pook

  1. Filmkritik Apollo 11 Echte Mondlandung als packende Kinozeitreise

SSD-Kompendium: AHCI, M.2, NVMe, PCIe, Sata, U.2 - ein Überblick
SSD-Kompendium
AHCI, M.2, NVMe, PCIe, Sata, U.2 - ein Überblick

Heutige SSDs gibt es in allerhand Formfaktoren mit diversen Anbindungen und Protokollen, selbst der verwendete Speicher ist längst nicht mehr zwingend NAND-Flash. Wir erläutern die Unterschiede und Gemeinsamkeiten der Solid State Drives.
Von Marc Sauter

  1. PM1733 Samsungs PCIe-Gen4-SSD macht die 8 GByte/s voll
  2. PS5018-E18 Phisons PCIe-Gen4-SSD-Controller liefert 7 GByte/s
  3. Ultrastar SN640 Western Digital bringt SSD mit 31 TByte im E1.L-Ruler-Format

  1. Digitalwährung: Libra Association geht mit 21 Mitgliedern an den Start
    Digitalwährung
    Libra Association geht mit 21 Mitgliedern an den Start

    Neben der Facebook-Tochter Calibra sind Spotify, Uber und Vodafone offizielle Gründungsmitglieder der Libra Association, die die gleichnamige Digitalwährung verwalten soll. Zuvor sind jedoch mehrere Firmen ausgestiegen, eine noch kurz vor der offiziellen Gründung.

  2. Mi 9 Lite: Xiaomi bringt Smartphone mit Dreifachkamera für 300 Euro
    Mi 9 Lite
    Xiaomi bringt Smartphone mit Dreifachkamera für 300 Euro

    Mit dem Mi 9 Lite erweitert der chinesische Hersteller Xiaomi sein offizielles Angebot in Deutschland: Das Smartphone kommt mit einer Dreifachkamera, einem großen Akku und einem OLED-Bildschirm. Der Preis ab 300 Euro scheint angesichts der Hardware angemessen.

  3. Moba: Riot Games will künftig mehr als League of Legends bieten
    Moba
    Riot Games will künftig mehr als League of Legends bieten

    Neben League of Legends wird Riot Games zum zehnjährigen Jubiläum bald mehr Spiele anbieten: darunter ein Taktikshooter, ein Kartenspiel und ein Arcade-Fighting-Game. Sogar eine Serie im Lol-Universum ist in Arbeit.


  1. 13:17

  2. 12:55

  3. 12:40

  4. 12:25

  5. 12:02

  6. 11:55

  7. 11:49

  8. 11:43