Vertiefung: Die MOVEit Zero-Day-Schwachstelle aus nächster Nähe

Veröffentlicht am 30. September 2023
von Laura Verheyde
FALLSTUDIE

Vertiefung: Die MOVEit Zero-Day-Schwachstelle aus nächster Nähe

Veröffentlicht am 30. September 2023
von Laura Verheyde
Ressource anzeigen
Ressource anzeigen

Cyberangriffe auf die Software-Lieferkette werden immer häufiger, was zu einer Reihe von Gesetzesänderungen auf US-Regierungsebene geführt hat, während sich Unternehmen bemühen, ihr umfangreiches Risikoprofil zu mindern und die Softwarequalität rasch zu verbessern. Allein in diesem Jahr gab es drei Zero-Day-Schwachstellen im Zusammenhang mit File-Sharing-Diensten, wobei die größte und zerstörerischste in Form des Massenangriffs MOVEit auftrat.

Der MOVEit-Vorfall, der von der CL0P-Ransomware-Gruppe angeführt wird, beherrscht seit einiger Zeit die Cybersecurity-Nachrichten, da mehr als 1.000 Unternehmen betroffen sind. Diese Zahl wird weiter steigen, was diesen Vorfall zu einem der stärksten Angriffe auf die Software-Lieferkette seit Solarwinds im Jahr 2021 macht.

Der Auslöser für diese weit verbreitete Sicherheitslücke war eine Reihe von SQL-Injection-Schwachstellen, die von MITRE mit 9,8 von 10 Punkten bewertet wurden. SQL-Injection ist seit den späten 90er Jahren das Schreckgespenst der Sicherheitsexperten, und obwohl es relativ einfach zu beheben ist, findet es weiterhin seinen Weg in moderne Software und bietet Bedrohungsakteuren einen roten Teppich zu sensiblen Daten. 

Das MOVEit-Szenario unterscheidet sich ein wenig von dem, was viele Entwickler und AppSec-Profis bisher erlebt haben, und Sie können Ihre SQLi-Slaying-Fähigkeiten in einer Live-Simulation gleich hier testen:

>>> PLAY THE MOVEit MISSION

Die Sicherheitslücke: SQL-Einschleusung

Wie genau wurde die SQL-Injektion verwendet, um die MOVEit-Dateiübertragungsanwendung von Progress Software auszunutzen?

Die CL0P-Ransomware-Gruppe konnte die SQL-Injection-Schwachstelle CVE-2023-34362 ausnutzen, die ihnen uneingeschränkten und unbefugten Zugriff auf die MOVEit-Datenbank ermöglichte. Von dort aus konnten sie LEMURLOOT installieren, eine Web-Shell, die es ihnen schließlich ermöglichte, mehrere hochriskante, kritische Prozesse auszuführen, wie z. B. das Abrufen von Systemeinstellungen, das Aufzählen der SQL-Datenbank, das Abrufen von Dateien aus dem MOVEit-Transfersystem und das Erstellen eines neuen Kontos mit vollen Verwaltungsrechten.

Natürlich mag dieser Angriffsvektor das Ergebnis eines relativ einfachen Fehlers sein - eines Fehlers, den man auf die ständige Verwendung schlechter Codierungsmuster zurückführen könnte -, aber sein Potenzial, anhaltende Probleme auf Unternehmensebene zu verursachen, ist immens. 

Vergleichbar mit dem MOVEit-Exploit, sehen wir uns diesen SQLi-Explainer an, der die Methode der Injektion und Ausführung von schädlichem SQL simuliert:

Diese Abfragezeichenfolge und Variable:

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


ergibt die folgende Abfrage:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";

... und mit bösartig gestalteten Eingaben:

string emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";

wird es:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";

Wie sieht das im Flug aus?

Beachten Sie, dass die Eingabe aufgrund der String-Verkettung als SQL-Syntax interpretiert wird. Zunächst wird ein einfaches Anführungszeichen hinzugefügt, um sicherzustellen, dass die SELECT-Anweisung eine gültige SQL-Syntax ist. Anschließend wird ein Semikolon hinzugefügt, um die erste Anweisung zu beenden. 

Danach wird eine gültige DELETE-Anweisung eingefügt, gefolgt von zwei Bindestrichen, um alle nachgestellten Zeichen (das einfache Anführungszeichen) auszukommentieren. Eine UPDATE-Anweisung könnte genauso gut hinzugefügt werden, wenn das bösartige SQL beispielsweise die Rollen oder Passwörter der Benutzer aktualisieren soll.

Probieren Sie es in dieser spielbaren Mission selbst aus:

>>> SPIELEN SIE DIE MOVEit-MISSION

Obwohl SQLi relativ einfach ist, bleibt es ein mächtiger Angriffsvektor, der nur allzu häufig vorkommt. Im Fall von MOVEit machte diese Schwachstelle den Weg frei für eine schädliche Backdoor-Installation und eine Reihe weiterer Angriffe mit ähnlichem Schweregrad.

Wie können Sie das Risiko einer SQL-Injektion mindern?

Unternehmen, die MOVEit im Rahmen ihrer Geschäftstätigkeit einsetzen, müssen unbedingt die empfohlenen Abhilfemaßnahmen von Progress Software befolgen. Dazu gehört unter anderem das Einspielen von Sicherheits-Patches, die in Notfällen Priorität haben.

Zum Thema SQL-Injection im Allgemeinen lesen Sie bitte unseren umfassenden Leitfaden.

Möchten Sie mehr darüber erfahren, wie Sie sicheren Code schreiben und das Risiko minimieren können? Probieren Sie unsere kostenlose SQL-Injection-Challenge aus.

Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, schauen Sie sich den Secure Code Coach an, der Ihnen hilft, mit den Best Practices für sichere Codierung Schritt zu halten.

Ressource anzeigen
Ressource anzeigen

Autor

Laura Verheyde

Laura Verheyde ist Softwareentwicklerin bei Secure Code Warrior und beschäftigt sich mit der Erforschung von Schwachstellen und der Erstellung von Inhalten für Missions und Coding Labs.

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Vertiefung: Die MOVEit Zero-Day-Schwachstelle aus nächster Nähe

Veröffentlicht Jan 22, 2024
Von Laura Verheyde

Cyberangriffe auf die Software-Lieferkette werden immer häufiger, was zu einer Reihe von Gesetzesänderungen auf US-Regierungsebene geführt hat, während sich Unternehmen bemühen, ihr umfangreiches Risikoprofil zu mindern und die Softwarequalität rasch zu verbessern. Allein in diesem Jahr gab es drei Zero-Day-Schwachstellen im Zusammenhang mit File-Sharing-Diensten, wobei die größte und zerstörerischste in Form des Massenangriffs MOVEit auftrat.

Der MOVEit-Vorfall, der von der CL0P-Ransomware-Gruppe angeführt wird, beherrscht seit einiger Zeit die Cybersecurity-Nachrichten, da mehr als 1.000 Unternehmen betroffen sind. Diese Zahl wird weiter steigen, was diesen Vorfall zu einem der stärksten Angriffe auf die Software-Lieferkette seit Solarwinds im Jahr 2021 macht.

Der Auslöser für diese weit verbreitete Sicherheitslücke war eine Reihe von SQL-Injection-Schwachstellen, die von MITRE mit 9,8 von 10 Punkten bewertet wurden. SQL-Injection ist seit den späten 90er Jahren das Schreckgespenst der Sicherheitsexperten, und obwohl es relativ einfach zu beheben ist, findet es weiterhin seinen Weg in moderne Software und bietet Bedrohungsakteuren einen roten Teppich zu sensiblen Daten. 

Das MOVEit-Szenario unterscheidet sich ein wenig von dem, was viele Entwickler und AppSec-Profis bisher erlebt haben, und Sie können Ihre SQLi-Slaying-Fähigkeiten in einer Live-Simulation gleich hier testen:

>>> PLAY THE MOVEit MISSION

Die Sicherheitslücke: SQL-Einschleusung

Wie genau wurde die SQL-Injektion verwendet, um die MOVEit-Dateiübertragungsanwendung von Progress Software auszunutzen?

Die CL0P-Ransomware-Gruppe konnte die SQL-Injection-Schwachstelle CVE-2023-34362 ausnutzen, die ihnen uneingeschränkten und unbefugten Zugriff auf die MOVEit-Datenbank ermöglichte. Von dort aus konnten sie LEMURLOOT installieren, eine Web-Shell, die es ihnen schließlich ermöglichte, mehrere hochriskante, kritische Prozesse auszuführen, wie z. B. das Abrufen von Systemeinstellungen, das Aufzählen der SQL-Datenbank, das Abrufen von Dateien aus dem MOVEit-Transfersystem und das Erstellen eines neuen Kontos mit vollen Verwaltungsrechten.

Natürlich mag dieser Angriffsvektor das Ergebnis eines relativ einfachen Fehlers sein - eines Fehlers, den man auf die ständige Verwendung schlechter Codierungsmuster zurückführen könnte -, aber sein Potenzial, anhaltende Probleme auf Unternehmensebene zu verursachen, ist immens. 

Vergleichbar mit dem MOVEit-Exploit, sehen wir uns diesen SQLi-Explainer an, der die Methode der Injektion und Ausführung von schädlichem SQL simuliert:

Diese Abfragezeichenfolge und Variable:

string emailAddress ="contact@scw.com";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";


ergibt die folgende Abfrage:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'";

... und mit bösartig gestalteten Eingaben:

string emailAddress = "contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--";
var query = $"SELECT u.UserName From Users as u WHERE u.Email = '{emailAddress}'";

wird es:

var query = $"SELECT u.UserName From Users as u WHERE u.Email = 'contact@scw.com'; DELETE FROM Invoices WHERE Id = 2;--'";

Wie sieht das im Flug aus?

Beachten Sie, dass die Eingabe aufgrund der String-Verkettung als SQL-Syntax interpretiert wird. Zunächst wird ein einfaches Anführungszeichen hinzugefügt, um sicherzustellen, dass die SELECT-Anweisung eine gültige SQL-Syntax ist. Anschließend wird ein Semikolon hinzugefügt, um die erste Anweisung zu beenden. 

Danach wird eine gültige DELETE-Anweisung eingefügt, gefolgt von zwei Bindestrichen, um alle nachgestellten Zeichen (das einfache Anführungszeichen) auszukommentieren. Eine UPDATE-Anweisung könnte genauso gut hinzugefügt werden, wenn das bösartige SQL beispielsweise die Rollen oder Passwörter der Benutzer aktualisieren soll.

Probieren Sie es in dieser spielbaren Mission selbst aus:

>>> SPIELEN SIE DIE MOVEit-MISSION

Obwohl SQLi relativ einfach ist, bleibt es ein mächtiger Angriffsvektor, der nur allzu häufig vorkommt. Im Fall von MOVEit machte diese Schwachstelle den Weg frei für eine schädliche Backdoor-Installation und eine Reihe weiterer Angriffe mit ähnlichem Schweregrad.

Wie können Sie das Risiko einer SQL-Injektion mindern?

Unternehmen, die MOVEit im Rahmen ihrer Geschäftstätigkeit einsetzen, müssen unbedingt die empfohlenen Abhilfemaßnahmen von Progress Software befolgen. Dazu gehört unter anderem das Einspielen von Sicherheits-Patches, die in Notfällen Priorität haben.

Zum Thema SQL-Injection im Allgemeinen lesen Sie bitte unseren umfassenden Leitfaden.

Möchten Sie mehr darüber erfahren, wie Sie sicheren Code schreiben und das Risiko minimieren können? Probieren Sie unsere kostenlose SQL-Injection-Challenge aus.

Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, schauen Sie sich den Secure Code Coach an, der Ihnen hilft, mit den Best Practices für sichere Codierung Schritt zu halten.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.