..........der hier = klickedeklick mit xpdf 3.00pl2 zu patchen ist. Betroffen sind fast alle Linux-Distributionen wie auch Free-BSD und Open-BSD
Gruß + frohe Festtage
NANÜ
Linux 15.036 Themen, 107.107 Beiträge
............bitte nicht ins Home-Verzeichnis oder aber wenn geschehen, dann später in /usb/bin/xpdf kopieren...........gilt jetzt erst einmal nur für SuSE.
Solche Programmierfehler, vor allem die Pufferüberläufe, gibt es haufenweise. Deshalb soll man ja auch keine neuen Programme auf Server installieren.
Das wird bei Windows auch nicht anders sein, wird aber nicht so offen dokumentiert.
Wie entstehen eigentlich diese Pufferüberläufe, bei denen eine Rücksprungadresse einer Funktion auf dem Stack überschrieben wird ? Das wollte ich schon immer mal wissen.
Gibt es in einem Prozessor kein Register oder einen Befehl der verhindert das solcher Programmcode ausgeführt wird ?
PS.: Ich weiß nur , das der Programmierer versehentlich auf eine ungültige Speicheradresse (beispielsweise in einem Array oder Feld) in seinem Programm zugreift. Aber wie kann dann die Rücksprungadresse der aufgerufenen Funktion auf dem Stack überschrieben werden ?
Die klassischen Programmierfehler (statische Speicherreservierung und bei for-Schleifen die Abbruchbedingung " Wie machen sich solche Programmierfehler beim Testen der Programme bemerkbar ? Stellen diese Programme dann durch diese Exploits einem Anwender eine root-Shell zur Verfügung ?
Wie testest Du Programme? Abschließend doch wohl installiert in einer normalen Umgebung. Um einen Überlauf festzustellen mußt Du also versuchen, ihn herbeizuführen. Eine Anwendung die komplexer ist als "Hello World" ist heftig zu testen; Du brauchst also Zeit und/oder viele Tester. Soweit ich weiß, ist z.B. in C keine SafeInt-Klasse vorhanden, die eventuelle Überläufe und "division by zero" auf exceptions lenkt. Ich kann mich da auch irren, aber ich glaube nicht...
Eine Root-Shell gibt es übrigens nicht automatisch. Ist allerdings schon problematischer, wenn die "übergelaufene" Anwendung unter dem root-account ausgeführt wird....
Ich programmiere meistens mit Visual C++ unter Windows. Mit dem C-Kompiler gcc habe ich keine Erfahrung, außer vielleicht mal einen Kern übersetzen.
Wenn man mit der MFC programmiert, ist vielleicht das Risko nicht ganz so groß, mal abgesehen von solchen Programmierfehler bei der Abbruchbedingung in for -Schleifen (for int i = 0; i Ich konnte eben nicht nachvollziehen wie daraus ein Bufferoverflow werden kann. Naja ich werde das schon noch lernen.