Schadcode in Bildern

Hallo !

Man kann ja in Bildern diversen Schadcode einfügen. Nun habe ich eine Web-Applikation wo User Bilder hochladen dürfen/müssen. Wenn ich nun das Bild per "convert" einmal skaliere und die Größe um 1px reduziere, wird dann auch der Schadcode entfernt ?! Bzw. kann beim Befehl convert etwas passieren ( z.B. Shellcode einspielen ? )
 
Ich kann mir eigentlich nicht vorstellen das durch das simple skalieren eines Bildes, der Code geändert wird. Ich bin mir aber nicht zu hundertprozent sicher.
Ganz interessant fand ich diese Webseiten:
Upload-Bilder auf Schadcode prüfen - PHP - WebmasterWork

Security Control - Ordner auf Grafiken mit Schadcode prüfen (1.6.03 - 1.6.5) - Downloads | aktuelle PHPKIT Version - Kitnetwork Supportforum

So wie ich das gesehen habe geht das mit php recht einfach.

Ich hoffe ich konnte dir weiterhelfen ;)
 
Hallo !

Ist schon einmal ganz gut. Ich kannte die erste Seite bereits. Problem ist halt alles, was von außen kommt. Ich überlege was die schönste Möglichkeit wäre.

Aktuell überlege ich :

- convert und danach ein combine mit einem transparenten Bild.

Bei meinem Test war alles weg. Ich bin jetzt aber auch nicht der super cracker.
 
Wenn es um eine Webapplikation geht, solltest du nicht irgendwelche "externen" Programme aufrufen sondern z.B. eine entsprechende Funktionalität aus der ImageMagick-Lib oder aus der GDLib nutzen. Aufrufe von Programmen in Webapps stellen immer ein erhöhtes Risiko dar.
 
Wenn es um eine Webapplikation geht, solltest du nicht irgendwelche "externen" Programme aufrufen sondern z.B. eine entsprechende Funktionalität aus der ImageMagick-Lib oder aus der GDLib nutzen. Aufrufe von Programmen in Webapps stellen immer ein erhöhtes Risiko dar.

Hallo !


convert ist doch aus der ImageMagick-Lib ?! Über diese will ich die Bilder skalieren. Upload läuft uploadify !
 
convert ist ein Programm, das die ImageMagick-Lib nutzt. Wenn du PHP nutzt, findest du die entsprechenden Funktionalitäten für das zugehörige PECL-Modul unter PHP: ImageMagick - Manual. In dem Moment, wo du über system(), exec() oder shell_exec() etwas aufrufst, nutzt du damit ein Programm des Systems und das sollte man in Webapps wo immer möglich vermeiden. Dabei kann bereits ein nicht korrekt validierter oder umgewandelter Dateiname dazu führen, dass ein Angreifer andere Programme aufruft, als das von dir gewünschte, und sich so Zugriff auf den Server verschafft.
 
Prüfe das Bild auf die Eindeutigkeit, ob es z.B. ein jpg ist.
Ich glaube laut dem Buch "wie programmiere ich eine sichere Webanwendung" mich zu Erinnern, das die Php type Prüfung (frag mich jetzt nicht welche) nur auf ein vorkommen im Namen prüft. QUASI "test_jpg.gif" würde true bie einer Prüfung auf jpg liefern ...

letztendlich solltest Du wie bereits erwähnt mit imagemagick alle Grafiken in eine JPG wandeln, da Du hier davon ausgehen kannst das der Schadcode, wenn vorhanden, eliminiert wird...
 
Prüfe das Bild auf die Eindeutigkeit, ob es z.B. ein jpg ist.
Ich glaube laut dem Buch "wie programmiere ich eine sichere Webanwendung" mich zu Erinnern, das die Php type Prüfung (frag mich jetzt nicht welche) nur auf ein vorkommen im Namen prüft. QUASI "test_jpg.gif" würde true bie einer Prüfung auf jpg liefern ...

letztendlich solltest Du wie bereits erwähnt mit imagemagick alle Grafiken in eine JPG wandeln, da Du hier davon ausgehen kannst das der Schadcode, wenn vorhanden, eliminiert wird...

@1: Nö, Identifzierung läuft bei FILES [type] über MIME, bei GetImageSize dürfte es Magicnumber, also letztendlich das gleiche wie bei MIME, sein.

@2: Der sicherste Weg sollte sein nur die Bilddaten erneut zu speichern. Sprich Bild laden -> Isolieren (Metadaten und alles was sonst noch da ist entfernen) -> speichern. Evtl. zwischendrin noch ein Combine machen, damit jedes Byte einmal angeschaut wird.
 
Genua, da du hier bei einem nicht Bildtypen false zurückbekommst.

Auswertung des MIME-Types, Ermittlung der Bildgröße etc. ist nur für jene Fälle ausreichend, in denen (ausführbare) Schadprogramme als *.jpg und Konsorten unbenannt wurden.

Wenn Du jedoch Schadcode in einer validen Bilddatei eingebettet hast, wird Deine Prüfung trotz des Schadcodes true zurückgeben. Prüfung auf MIME-Type ist somit ungenügend.

Tools wie mogrify und convert täte ich ausschließlich auf Bildern aus eigenen Bildquellen anwenden, jedoch nicht auf Bilder/Code von Fremden (sprich extern hochgeladene Bilder über einen Webserver).

Greetz
Hackse
 
GD macht bei PHP 5.3.x Schwierigkeiten, wenn man grosse Bilder oder welche im Loop verarbeiten will. Ein 800k grosses JPEG kann da durchaus mal 40MB RAM fressen. Daher nutzen die meisten Plattformen mittlerweile ImageMagick. Wir mussten die Erfahrung kürzlich bei der Umstellung auf PHP 5.3 machen.
 
Hmm dann würde ich den Weg gehen und ein kleines PHP Plugin für Freeimage schreiben. Das hat sich bei mir immer als sehr speichersparend herausgestellt.
 
Zurück
Oben