rgbs schrieb:
achso, und "auszuführender Schadcode" ist keine Datei, sondern vielleicht ein Bithaufen ??
Ob dieser nun von einem lokalen oder externen Speichermedium geladen wird, ist doch egal.
Ja, Bithaufen trifft es irgendwie ganz gut. Dateien gibt es nur auf Dateisystemen, auf einem viel höheren Level.
Der Fehler hier ist auf einem weit unteren Level. Das Problem hier klingt nach klassischen buffer-overflow und funktioniert dann in etwas so:
Für die ankommenden Datenblöcke reserviert der Demon, je nach packet size z.B. 1.500 Byte. Vermutlich ist der Fehler aber ein Level höher, wo bereits mehrere Blöcke zusammengefaßt sind, zu 64kB. Größere Blöcke lassen sich meist effektiver komprimieren und auch die asynchrone Übertragung ist schneller.
Also man sendet einen komprimierten 64kB großen Datenblock, dieser gelangt in den Empfangspuffer. Der Empfänger muß, bevor das Paket ausgepackt wird, einen weiteren Puffer bereitstellen, wo das ausgepackte Ergebnis hineinpaßt. Entweder er bokommt nebenher die Information über die zu erwartende Größe, oder er stellt eine Vermutung an. Ersteres kann gefälscht sein und letzteres kan falsch sein.
Wenn die ausgepackten Daten nun für den Zielbereich zu groß werden, kann es passieren, daß über die Puffergröße hinausgeschrieben wird: ein buffer-overflow. Die Daten muß man also vorher prüfen und im Programm sicherstellen, daß der Puffer nicht überläuft. Das kostet Effizienz und ist eine Fleißarbeit.
Wird die Grenze der Daten überschritten, können die überzähligen Daten im Speicherbereich landen, der für Code gedacht ist. Wird dann irgendwann hierhin verzweigt, werden die Daten als Code ausgeführt.
Dadurch, daß nur recht aktuelle Win-Versionen betroffen sind, und Linux unabhängig entwickelt wird, kann man davon ausgehen, daß Linux nicht 1:1 betroffen ist, es sei denn, daß der Windows-Programmierer auch den Linux-Code erstellt hat oder per Reverse-Engineering der Code zum Linux gelangte.
Außerdem kann natürlich der gleiche Fehler unterlaufen sein, wenn Speicherbereiche nicht überwacht werden.