WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   a-typische verarbeitung von anwendersoftware? (http://www.wcm.at/forum/showthread.php?t=155719)

Satan_666 12.01.2005 12:45

a-typische verarbeitung von anwendersoftware?
 
Zitat:

aus einem bericht von heise-online:
Durch ein Sicherheitsloch im freien MP3-Player mpg123 kann beliebiger Code zur Ausführung gebracht werden. Das Problem besteht beim Parsen von Frame-Headern in Layer-2-Streams. Angreifer können durch speziell präparierte MP2- oder MP3-Dateien einen Buffer Overflow produzieren und so beliebigen Code ausführen. Yuri D'Elia hat das Sicherheitsproblem entdeckt und gemeldet.
kann mir das jemand näher erklären? wie kann es möglich sein, dass durch einen buffer overflow beliebiger code ausgeführt wird? welchen vorteil soll es haben, wenn ein mp3-abspielprogramm irgendwelchen code ausführt? was bringt mir bzw könnte mir eine solche funktion bringen?


meine erwartungen an ein mp3-abspielprogramm lässt sich ganz einfach beschreiben, nach der formel

Zitat:

input --> verarbeitung --> output
demnach soll so ein programm lediglich ein input haben (das mp3-file), die verarbeitung ist das decodieren der mp3-daten und die ausgabe ist das hörbarmachen der daten (via soundkarte). da brauche ich doch keine funktionionalität, die irgendeinen maschinencode ausführt, der im mp3-file versteckt ist..... :confused:


gleiches gilt auch für den blödsinn, der auch beim darstellen von jpg-files gemacht wird - weil dort ja auch viren, würmer, trojaner, ... eingschleust werden können!


ist das nicht widersinnig? oder sehe nur ich das so....?

pc.net 12.01.2005 14:39

wenn du dich mal genau informierst, was ein buffer-overflow ist, wirst du es vielleicht verstehen ;)

http://www.paramind.org/dindobuo.htm
http://www.zotteljedi.de/doc/stacksm...ksmashing.html
http://www.google.at/search?hl=de&q=...le-Suche&meta=

Satan_666 13.01.2005 09:00

ich danke für die links - aber was ein buffer-overflow ist, weiß ich wohl!

was ich nicht weiß: warum das betroffene programm beim auftreten eines solchen overflows auf die idee kommen muss, einen im input-file (!!!) eingebetteten maschinencode auszuführen. einen absturz kann ich noch verstehen - und, ehrlich gesagt: ich erwarte sogar, dass in diesen fällen das programm abstürzt oder meinetwegen nur das abspielen dieses einen stückes beendet und mit dem nächsten mp3-file weitermacht.

und da ich nicht glaube, dass sowas irrtümlich in derartige programme eingebaut wird (wie soll man sowas auch irrtümlich einbauen???), muss es absichtlich eingebaut worden sein. daher meine frage: wem nützt so ein feature? außer den viren-programmierern.....

für mich hat das ganze schön langsam methode: scheinbar zahlen die virenprogramme-hersteller den entwicklern viel geld, damit diese solchen unsinn in ihre programme einbauen. :confused:

John_Doe 13.01.2005 10:15

Wieso kommst du drauf dass es absichtlich eingebaut wurde? Hast schonmal eine Applikation geschrieben und weißt du auch worauf du da alles achten muss, dass es auch wirklich wasserdicht ist (falls es das überhaupt gibt)???

Übrigens, sowas hat wenig mit Anti-Viren Herstellern zu tun, soetwas wird eher für andere Dinge ausgenützt (ned von Viren)

cg32 13.01.2005 10:37

Zitat:

Original geschrieben von Satan_666
ich danke für die links - aber was ein buffer-overflow ist, weiß ich wohl!
Anscheinend weisst du nur zum Teil was ein Buffer Overflow ist bzw. was durch das Ausnützen eines Buffer Overflows passieren kann.

Lies die Links von pc.net und du verstehst, wie malicious code mittels eines Buffer Overflows den Weg in ein Computersystem nehmen kann.

Satan_666 13.01.2005 11:22

Zitat:

Original geschrieben von cg32
Lies die Links von pc.net und du verstehst, wie malicious code mittels eines Buffer Overflows den Weg in ein Computersystem nehmen kann.

Zitat:

aus einem der links von pc.net
Nun gibt es aber eine noch größere Gefahr als das unkontrollierte Abstürzen des Programms: das unkontrollierte Weiterlaufen.

gut, ändere ich meine frage in: welchen sinn soll es machen, dass ein programm weiter läuft, wenn das input einen nicht erwarteten zustand hervorruft?

sind meinetwegen halt die compiler-hersteller idioten - oder werden von den antivirenprogrammen-herstellern bezahlt. für mich als anwender ist das doch vollkommen wurscht, wer den ball zugespielt kriegt. denn: wenn das schon so schön und brav dokumentiert ist, dann sollten meiner meinung nach - eben wegen der sicherheit - genau diese kritischen fehler bereinigt werden. und zwar möglichst rasch!

ruffy_mike 13.01.2005 11:52

Hier liegt wohl das Problem...

Zitat:

http://www.paramind.org/dindobuo.htm
Bei einer Reihe von Programmiersprachen nehmen Compiler bei der Übersetzung des Programmcodes keine Bereichsgrenzenüberprüfung für Schreibzugriffe auf Speichervariablen vor. Kritisch wird es beispielsweise in der Hochsprache C. Viele grosse Anwendungen werden gerade wegen der hohen Performanceanforderungen in C geschrieben.
Im Prinzip sollte es schon von der Programmiersprache unmöglich sein, in "fremde" Speicherbereiche einzugreifen. In jedem C-für-Dummies-Buch wird schon darauf hingewiesen, dass C in diesem Bereich sehr sensibel ist, Zeigervariablen etc.

Wenn schon die Programmiersprache zu "dumm" (oder zu freizügig, je nachdem, wie man will) ist, dann sollte man doch auf der OS-Ebene einen Riegel dazwischen schieben können?

Aber mal abgesehen von all den technischen Details verstehe ich sehr wohl die Frage bzw. die Bedenken von Satan_666! Eigentlich sehr unlogisch und blöd konstruiert, dieses Buffer-Overflow-Zeugs...

Satan_666 13.01.2005 15:05

Zitat:

Original geschrieben von ruffy_mike
Eigentlich sehr unlogisch und blöd konstruiert, dieses Buffer-Overflow-Zeugs...
... und höchst an der zeit, dass die hersteller von compilern (oder auch betriebssystemen?) endlich und hoffentlich rasch etwas dagegen unternehmen. als gestandener edv-mann geht mir persönlich sicherheit weit vor performance!

Harika 13.01.2005 15:47

Das ist halt der Nachteil von C und C++. Etwas besser ist es mit Java wo man den Garbage Collector hat. Da es aber nicht leicht für einen Compiler ist zu erkennen wo ein Buffer Overflow stattfindet wird es diese weitergeben. Oder glaubt jemand ernsthaft das man diese Overflows absichtlich nicht verhindert? Die werden ja auch nicht bewusst implementiert.

ruffy_mike 13.01.2005 16:42

Zitat:

Original geschrieben von Harika
Das ist halt der Nachteil von C und C++. Etwas besser ist es mit Java wo man den Garbage Collector hat. Da es aber nicht leicht für einen Compiler ist zu erkennen wo ein Buffer Overflow stattfindet wird es diese weitergeben. Oder glaubt jemand ernsthaft das man diese Overflows absichtlich nicht verhindert? Die werden ja auch nicht bewusst implementiert.
Naja, irgendwie muss das ja sehr wohl verhinderbar sein. Sonst gäbe es ja bei jeder Programmiersprache die selben Overflows, ist aber nicht so.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag