Ich habe auf meiner Website einen Malware-Scanner ausgeführt, der eine Reihe von komprimierten EXE-Dateien als potenzielle Risikodateien kennzeichnete (diese Dateien wurden von Benutzern hochgeladen). Da ich die Dateien auf meinem Mac dekomprimieren kann, gehe ich davon aus, dass es sich um echte ZIP-Dateien handelt und nicht nur um umbenannte PHP-Dateien.
Die ZIP-Datei sollte also kein Risiko für meinen Webserver darstellen, oder?
security
anti-virus
malware
Xavin
quelle
quelle
file foo.zip
, oder sogar, ob sie7z t foo.zip
zum Testen gültig sind (dh, Sie können die CRC-Prüfsummen dekomprimieren und überprüfen, ohne sie in lokale Dateien auf der Festplatte zu extrahieren). (7z
Verwendet eine ähnliche Syntax wietar
.) Oderunzip -l foo.zip
um den Inhalt aufzulisten. Wie auch immer, ich fand es nur seltsam, dass Sie über das Überprüfen der Dateien auf einem anderen Computer sprechen, obwohl Sie diese auf dem Server problemlos hätten überprüfen können.Antworten:
Wenn es sich tatsächlich um komprimierte Windows-Exe-Dateien handelt, sollten sie für Ihr Linux-System harmlos sein, es sei denn, Sie haben etwas wie Wine installiert, das versuchen könnte, sie auszuführen.
Wenn sie sich jedoch in Ihrem Webpfad befinden, können sie Malware sein und ein großes Risiko für die Besucher Ihrer Websites darstellen (und Sie wiederum, wenn Sie als Malware-Quelle gekennzeichnet werden und Benutzer beim Versuch, Ihre Website zu besuchen, hässliche Warnungen erhalten) Seite? ˅).
quelle
.zip
Dateien erstellen , die versuchen, Fehler in bestimmten Dekomprimierungsimplementierungen zu beheben.Auch wenn Sie in diesem Fall wahrscheinlich Recht haben, ist Ihre Annahme möglicherweise nicht immer zutreffend. Ein ZIP-Archiv bleibt auch dann gültig, wenn Sie ihm beliebige Daten voranstellen. Daher ist es durchaus möglich, eine Datei zu erstellen, die gleichzeitig ein gültiges ZIP-Archiv mit unschuldigen Daten und einem schädlichen PHP-Skript ist. Es ist nicht einmal besonders schwer; Verketten Sie einfach den PHP-Code und die ZIP-Datei und stellen Sie (z. B. mithilfe von
__halt_compiler()
) sicher, dass PHP nicht versucht, die angehängten ZIP-Archivdaten zu analysieren.Dieser Trick wird zu Recht verwendet, um selbstextrahierende ZIP-Dateien zu erstellen. Es ist jedoch durchaus möglich, andere versteckte Daten oder ausführbaren Code auf dieselbe Weise in eine ZIP-Datei einzufügen. Einige Programme lehnen es möglicherweise ab, solche geänderten ZIP-Dateien zu öffnen (in diesem Fall verstoßen sie jedoch technisch gegen die ZIP-Formatspezifikation), oder sie identifizieren die Datei standardmäßig als eine andere Datei als eine ZIP-Datei Datei in Code, der eine ZIP-Datei erwartet, wird es wahrscheinlich als eine akzeptiert.
Eine häufigere böswillige Verwendung solcher Tricks besteht darin, Exploit-Code in einem ZIP-basierten Container (z. B. einer JAR-Datei) als harmlos zu tarnen (z. B. ein GIF-Image wie im GIFAR- Exploit) Wird auch in der anderen Richtung verwendet, um z. B. einen naiven Datei-Upload-Filter zu umgehen, der das Hochladen von PHP-Skripten verbietet, aber ZIP-Dateien zulässt, ohne zu prüfen, ob die hochgeladene Datei möglicherweise beide gleichzeitig ist.
quelle
Es gibt mindestens zwei wichtige Überlegungen, die Sie berücksichtigen sollten:
Abhängig davon, was Ihr Server tut, kann die Datei möglicherweise schädlich für Ihren Server oder andere Benutzer sein. Da ich mit aus dem Internet heruntergeladenen EXE-Dateien ziemlich vorsichtig bin, würde ich sagen, dass mögliche Downloader die potenziellsten Benutzer sind, die hier einem Risiko ausgesetzt sind.
quelle
Sie können überprüfen, ob die Dateien auf Ihrem Linux-Server ausgeführt werden können, indem Sie sie einfach mit dem
file FILENAME.exe
Befehl überprüfen . Elf-Binärdateien (das unter Linux verwendete ausführbare Format) können mit einer.exe
Erweiterung benannt werden, um einen ahnungslosen Linux-Administrator zu verwirren. Daher ist es wahrscheinlich eine gute Idee, diese Prüfung durchzuführen, bevor Sie blindlings darauf vertrauen, dass diese Dateien nicht ausführbar sind.quelle
Ich bin überrascht, dass niemand erwähnt hat, dass Daten für ein (fehlerhaftes) Programm schädlich sein können (oder werden können). Das ist die Basis der Unschärfe. Sie könnten beispielsweise eine JPEG-Datei (oder eine JPEG-ähnliche Datei) haben, die bei (bestimmten?) JPEG-Decodern einen Pufferüberlauf verursacht, der von einer Dienstverweigerung bis zur Ausführung von willkürlichem Code reicht. Hier geht es darum, ein vorhandenes Datenverarbeitungsprogramm zu untergraben. Keine Notwendigkeit, eine neue ausführbare Datei einzuspielen! Und dies ist der Grund, warum Sandboxing, Hygienisierung von Eingängen und Prinzipien mit den geringsten Rechten erforderlich sind.
In Ihrem Fall könnten Sie also eine ZIP-Datei haben, die Probleme mit (bestimmten?) ZIP-Dekodierungs-Engines verursacht. Die ZIP-Datei muss keine native ausführbare Datei enthalten, damit sie schädlich ist.
Allerdings arbeitet Ihr Scanner auf einer anderen, gröberen Ebene. Wenn die Art von Risiko, von dem ich spreche, in diesen Dateien vorhanden war, wurden Sie bereits getroffen, als Sie sie verarbeiteten :).
quelle
Es gab Angriffe, bei denen Daten eingebettet wurden und Dateien weiterhin als gültig angezeigt wurden. Auf einem falsch konfigurierten Server oder in einer falsch codierten App kann dies dazu führen, dass Code auf Ihrem Server ausgeführt wird.
Also auch damit vorsichtig.
quelle
Eine zusätzliche Prüfung, die Sie idealerweise durchführen sollten, ist die php finfo-Methode , um zu prüfen, ob die Dateien, die von den Benutzern hochgeladen werden, tatsächlich den von Ihnen zugelassenen entsprechen und nicht etwas, das die Benutzer umbenannt haben, nur um das System zu täuschen.
quelle
Entpackte .exe sind auch für Linux-Server harmlos.
quelle
.exe
ist nichts weiter als ein Teil des Dateinamens und kann auch als Name für eine ELF-Binärdatei gewählt werden.