Читать книгу C für Dummies - Dan Gookin - Страница 105

Das finstere Geheimnis der Sprache C

Оглавление

Eine dramatische Überschrift – aber was hat scanf damit zu tun? Sicherlich haben Sie schon oft in Artikeln von Speicherüberläufen oder sogenannten Buffer-Overflows gehört.

Nun, daran ist scanf nicht immer unbeteiligt. Aber was hat es dazu beigetragen? In der Sprache C muss sich der Programmierer um alles selbst kümmern. Starten Sie wieder Insult1.c, aber geben Sie einen wirklich langen Namen ein – so wie Donaudampfschifffahrtsgesellschaftseignergattinskindeskinder.

Bei mir stürzt dann das Programm ab.

Sollte sich der Effekt bei Ihnen nicht gleich einstellen, tippen Sie einfach einen noch längeren Namen ein. Wann es genau passiert, ist vom Betriebssystem und vom Compiler abhängig.

Was ist passiert? Erinnern Sie sich: Mit idiot[21] haben wir Speicher für 20 Zeichen (und Nullbyte) reserviert. Und nun füttern Sie aber scanf mit viel mehr Zeichen. Wohin soll er das alles packen? Und genau das ist das Problem. scanf bekommt den Hals nicht voll genug, und liest immer weiter Zeichen ein. Diese werden einfach immer weiter in den Speicher geschrieben, bis irgendwann etwas kaputtgeht – der Programmabsturz ist unausweichlich.

Das klingt zwar harmlos, ist aber eine der großen Sicherheitslücken im Zeitalter des Internets geworden und hat auch den Ruf der Sprache C erheblich beschädigt, denn C ist sehr anfällig dafür.

Durch clevere Eingaben gelingt es Hackern hiermit sogar, Maschinencode in den Speicher zu schmuggeln, der dann ausgeführt wird. Auf diese Weise kann man den Computer fernsteuern oder eigene Programme starten.

C für Dummies

Подняться наверх