Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Code-Optimierung des GCC ermöglicht Pufferüberläufe

Wie Heise Online mit Verweise auf US-CERT meldet, verfügt der GNU C-Compiler (GCC) seit Version 4.1 über einen Fehler in der Code-Optimierung, der Pufferüberläufe begünstigt. Pufferüberläufe können unter bestimmten Umständen dazu genutzt werden, schädliche Programmanweisungen einzuschleusen. Der Compiler geht bei Verwendung von einem String mit einem Integer davon aus, dass die Summe beider kleiner als der String selbst ist. Allerdings wird dabei unterschlagen, dass der Integer überlaufen kann und dann in den negativen Zahlenbereich rutscht. Entsprechende Sicherheitsabfragen werden dennoch vom Compiler gelöscht. Um die Löschung zu verhindern, muss man vor dem Vergleich die String-Länge in uintptr_t oder size_t umwandeln:
if((size_t)buf+len < (size_t)buf) { ... }

Weiterführende Links:

Kommentare

oefinger
oefinger07.04.08 10:23
Der Compiler geht bei Verwendung von einem String mit einem Integer davon aus, dass die Summe beider kleiner als der String selbst ist

Genau das Gegenteil, er geht davon aus, dass die Summe stets größer ist und entfernt Abfragen, die den Fall der kleineren Summe behandeln sollten.
0
jb_77
jb_7707.04.08 10:26
so ein puffüberlauf ist echt nicht so ohne

die armen mädels

(sorry, aber der musste sein )
0
The RAT
The RAT07.04.08 10:31
looool, sehr gut Jungs bei MTN...richtig lustig ;D
What's the use of the truth if you can't tell a lie sometimes?
0
iSoul
iSoul07.04.08 10:36
"ermöglicht Puffüberläufe" bei hohem Verkehrsaufkommen.
Siiiiiigmuuuuuund....
0
halebopp
halebopp07.04.08 10:51
LOL - habe schonmal bei uns in Köln in der Hornstrasse angerufen und mich nach der Lage erkundigt. Alles nach wie vor im Roten Bereich.
Das war ich nicht - das war schon vorher kaputt!
0
teorema67
teorema6707.04.08 10:56
Puffüberlauf
Rassismus ist, überall Rassismus zu wittern, wo keiner ist, und damit echten Rassismus zu bagatellisieren. (Dieter Nuhr)
0
Dirk!07.04.08 10:59
verfügt der GNU C-Compiler (GCC) seit Version 4.1 über einen Fehler in der Code-Optimierung, der Pufferüberläufe begünstigt.

Nein, laut Heise: Er hat einen Fehler in der Code-Optimierung, der Abfragen des Programmierers, die Pufferüberläufe verhindern sollen, unter Umständen entfernt.
0
aikonch07.04.08 10:59
teorema67, wer weiss durch eine schlechte Verwaltungssoftware welche es in den grossen "Hotels" sicherlich gibt....
0
aikonch07.04.08 11:01
MTN, wäre es nicht manchmal ganz gut das Zeugs nochmals grob zu lesen vor dem Posten? Bzw. wenn man schon eine Meldung "klaut" ist es ja nett wenn man die Quelle angibt, wenn man dann den Text jedoch verdreht ist das nicht mehr so toll...würde zumindest mich als Quelle nicht erfreuen!
0
vasquesbc
vasquesbc07.04.08 11:04
Wer den Schaden hat, braucht für den Spott nicht zu sorgen. Leute es ist Montagmorgen, dass Wetter ist mies und die Arbeit ist stressig.
Allwissend bin ich nicht; doch viel ist mir bewußt.
0
halebopp
halebopp07.04.08 11:18
Ein bisschen Spass muss sein!
Das war ich nicht - das war schon vorher kaputt!
0
Dirk!07.04.08 11:22
Die inhaltliche Korrektur steht weiterhin aus. Siehe meinen Kommentar weiter oben.
0
aikonch07.04.08 11:24
halebopp, ja das ist richtig und den mit dem Puff finden ja auch alle witzig, das man hier aber falsch abschreibt in Sachen Sinn finde zumindest ich nicht so toll....leider ja auch kein Einzelfall....
0
Dirk!07.04.08 16:32
abgesehen davon, dass auch Heises Artikel bereits zu reißerisch ist, wenn man mal die Kommentare liest:


Die Beispiele sind nicht standard-konformes-C da muß man sich nicht wundern, wenn der Compiler damit unerwartete Sachen macht!
0
Dieter07.04.08 20:40
Nun ja, wer die Abfrage baut unter der Voraussetzung, dass er immer nur addiert und wenn nach ständigem Addieren "positiver" Zahlen durch einen Integer-Überlauf eine negative Zahl entsteht, dann sollte er noch mal nachdenken ...

So jedenfalls hat er auch dämlich programmiert!
0
zonk07.04.08 22:48
ich schlage da eher vor: if (len < 0) { .. }
dann fällt das problem gleich weg
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.