ShellShock

ShellShock

Copyright © Shutterstock / Anton Khegay

Was ist ShellShock?

Definition

GNU Bash bis 4.3 verarbeitet nachfolgende Zeichenfolgen nach Funktionsdefinitionen in den Werten von Umgebungsvariablen. Dies ermöglicht es Angreifern, beliebigen Code über eine gestaltete Umgebung auszuführen. Dies wird durch Vektoren gezeigt, die die ForceCommand-Funktion in OpenSSH sshd, die Module mod_cgi und mod_cgid im Apache verwenden HTTP-Server, Skripts, die von nicht spezifizierten DHCP-Clients ausgeführt werden, und andere Situationen, in denen das Festlegen der Umgebung über eine Privilegiengrenze von der Bash-Ausführung (“ShellShock”) erfolgt.

Hinweis

Das ursprüngliche Update für dieses Problem war falsch; CVE-2014-7169 wurde zugewiesen, um die Sicherheitsanfälligkeit abzudecken, die nach der fehlerhaften Korrektur noch vorhanden ist.

Daher führen Security Scanner zwei Angriffe durch, um herauszufinden, ob der Server für CVE-2014-6271, auch ShellShock genannt, anfällig ist. Der erste ist ein einfacher reflektierter Angriff und der zweite ist ein zeitbasierter Angriff.

Nach 2.5.0 kann die Dauer des Angriffs geändert werden, indem der Parameter ‘ruels.common.sleep‘ über das Optionsfeld ‘Regelkonfiguration’ geändert wird.

Lösung

Für alle Daten, die zum Generieren eines Befehls verwendet werden, der ausgeführt werden soll, halten Sie möglichst viele dieser Daten außerhalb der Kontrolle Dritter. In Webanwendungen kann es beispielsweise erforderlich sein, die Daten lokal im Sitzungsstatus zu speichern, anstatt sie in einem ausgeblendeten Formularfeld an den Client zu senden.

Stellen Sie für alle Sicherheitsprüfungen, die auf der Clientseite durchgeführt werden, sicher, dass diese Prüfungen auf der Serverseite doppelt vorhanden sind. Angreifer können die clientseitigen Prüfungen umgehen, indem sie Werte ändern, nachdem die Prüfungen ausgeführt wurden, oder indem der Client so geändert wird, dass die clientseitigen Prüfungen vollständig entfernt werden. Diese geänderten Werte werden dann an den Server übermittelt.

Die Verwendung dynamisch generierter Abfragezeichenfolgen, Codes oder Befehle, die Steuerelement und Daten miteinander kombinieren, ist riskant. Manchmal kann dies jedoch unvermeidlich sein. Zitieren Sie Argumente ordnungsgemäß und entfernen Sie alle Sonderzeichen innerhalb dieser Argumente.

Der konservativste Ansatz besteht darin, alle Zeichen zu entgehen oder zu filtern, die keine extrem strenge Whitelist passieren (z. B. alles, was nicht alphanumerisch oder Leerzeichen ist). Seien Sie vorsichtig bei der Argumentation.

Wenn das auszuführende Programm die Angabe von Argumenten innerhalb einer Eingabedatei oder einer Standardeingabe zulässt, sollten Sie diesen Modus verwenden, um Argumente anstelle der Befehlszeile zu übergeben.

Wenn der Satz akzeptabler Objekte wie Dateinamen oder URLs begrenzt oder bekannt ist, erstellen Sie eine Zuordnung von einem Satz fester Eingabewerte (z.B. numerische IDs) zu den tatsächlichen Dateinamen oder URLs, und lehnen Sie alle anderen Eingaben ab.

Stellen Sie sicher, dass die Fehlermeldungen nur minimale Details enthalten, die für die beabsichtigte Zielgruppe nützlich sind, und für niemanden anderen. Die Nachrichten müssen das Gleichgewicht zwischen zu kryptisch und nicht kryptisch genug finden. Sie sollten nicht unbedingt die Methoden offenlegen, mit denen der Fehler ermittelt wurde.

  • Vermeiden Sie es, hochsensible Informationen wie Passwörter in irgendeiner Form aufzuzeichnen.
  • Vermeiden Sie inkonsistente Nachrichten, bei denen ein Angreifer versehentlich über den internen Status informiert wird, z.B. ob ein Benutzername gültig ist oder nicht.

Im Kontext der OS-Befehlseingabe können an den Benutzer zurückgegebene Fehlerinformationen Aufschluss darüber geben, ob ein OS-Befehl ausgeführt wird und möglicherweise welcher Befehl verwendet wird.

Tipp

Überprüfen Sie die Sicherheit Ihrer Website mit unserem kostenlosen Security Crawler oder mit der OSG Performance Suite Free Version.

Führen Sie Ihren Code mit den niedrigsten Berechtigungen aus, die zum Ausführen der erforderlichen Aufgaben erforderlich sind. Erstellen Sie nach Möglichkeit isolierte Konten mit eingeschränkten Berechtigungen, die nur für eine einzelne Aufgabe verwendet werden.

Auf diese Weise kann ein Angreifer bei einem erfolgreichen Angriff nicht sofort auf die übrige Software oder deren Umgebung zugreifen. Beispielsweise müssen Datenbankanwendungen, insbesondere im täglichen Betrieb, selten als Datenbankadministrator ausgeführt werden.

Wenn Sie PHP verwenden, konfigurieren Sie die Anwendung so, dass sie register_globals nicht verwendet. Entwickeln Sie die Anwendung während der Implementierung so, dass sie nicht auf diese Funktion angewiesen ist, sondern achten Sie auf die Implementierung einer register_globals-Emulation, die Schwächen und ähnlichen Problemen unterliegt.

Allgemeiner Schwachstellen-Datenbanklink

https://cwe.mitre.org/data/definitions/78.html

https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2014-6271

https://nvd.nist.gov/vuln/detail/CVE-2014-6271


Sie haben noch Fragen?

Kontaktieren Sie uns

Kostenloser SEO-Check der OSG


Weitere Inhalte