Neue OpenVPN-Version behebt Schwachstelle

Der Server kann auf dem Client beliebige Umgebungsvariablen definieren und so unter Umständen bereits eingeschleusten Schadcode starten.

vorlesen Druckansicht 54 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Daniel Bachfeld

Der Entwickler James Yonan hat die neue Version 2.0.6 und die Beta-Version 2.1 seiner freien SSL-VPN-Lösung OpenVPN zum Download bereitgestellt. In der Beta-Version ist neben kleineren Bugfixes auch die Korrektur für eine Schwachstelle enthalten, mit der ein OpenVPN-Server unter bestimmten Umständen einen VPN-Client kompromittieren kann. So kann ein OpenVPN-Server über die push-Direktive dem Client bestimmte Konfigurationen mitteilen, wie etwa die Route und DHCP-Optionen. Darüber hinaus ist es aber auch möglich, über push "setenv name value" auf dem Client beliebige Umgebungsvariablen zu definieren.

Laut Hendrik Weimer von OS Reviews, dem Entdecker der Lücke, könnte ein OpenVPN-Server darüber die Variable LD_PRELOAD definieren, die den Pfad auf eine zur Laufzeit nachzuladende bösartige Bibliothek enthält. Damit diese allerdings auch geladen und ausgeführt wird, müssen diverse Randbedingungen erfüllt sein: Der Client muss in seiner Konfigurationsdatei (client.conf) über die Optionen up oder down ein Skript aufrufen, da sonst zur Laufzeit LD_PRELOAD nicht zum Zuge kommt. Zudem muss die Bibliothek irgendwie auf den PC des Opfers gekommen sein. Denkbar ist, dass ein Angreifer eine weitere Lücke auf dem PC seines Opfers ausnutzt, etwa im Browser, mit der er die Library in den temporären Ordner schreibt.

James Yonan führt eine weitere Restriktion in seinem Changlog auf: So müsse sich der Client überhaupt Konfigurationen per push unterschieben lassen. Sobald in der Client-Konfiguration aber die Option client gesetzt ist, ist dies bereits der Fall. Da OpenVPN auf bidirektionaler Authentifizierung beruht und ein Anwender sich nur mit bekannten Servern verbindet, ist das Risiko eines Angriffs ohnehin relativ gering, sofern der Server nicht selbst schon kompromittiert wurde. Um das Problem zu beheben, lässt sich in der OpenVPN-Version 2.1-Beta das Setzen von Umgebungsvariablen über die Direktive setenv-safe in client.conf abschalten. Zwar weist Yonan auch im Changelog von 2.0.6 auf das Problem hin, allerdings ist dort die Option noch nicht verfügbar.

Siehe dazu auch: (dab)