ShellShock

shellshock

Copyright ┬ę Shutterstock / Anton Khegay

Was ist ShellShock?

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