Shellshock: Wie eine Webanfrage über Bash Befehle ausführte
Eine Lücke in Bash, der Shell von Linux und macOS, ließ Angreifer mit einer Anfrage Befehle auf Webservern ausführen. Wie sie wirkte, die Angriffe, der Fix.

Sofortmaßnahmen
- Aktualisiere Bash über die Updates deines Systems: Bash 4.3 braucht die Patches 025 bis 030, ältere Versionen die entsprechenden Patches.
- Prüfe eingebettete Geräte, etwa Geräte mit eingebautem Linux, die keine Updates mehr bekommen: Auf ihnen kann noch eine ungepatchte Bash laufen.
- Schalte CGI-Skripte auf Webservern ab, die du nicht mehr brauchst: Über sie gelangte eine einzige präparierte Webanfrage bis zu Bash.
- Jahr
- 2014
- CVSS-3.1-Wert
- 9,8 kritisch
- der Websites mit bekanntem Betriebssystem laufen heute auf Linux, bei dem Bash zum System gehört
- 63,2 %
- Shellshock-Angriffe pro Sekunde zu Beginn, allein bei Cloudflare (Anbieterdaten)
- 10–15
- Reichweite erfüllt
Bash gehört bei Linux und macOS zum Grundbestand des Betriebssystems (US-CERT), und auf Linux allein laufen heute 63,2 % aller Websites, deren Betriebssystem bekannt ist (W3Techs, 23. Oktober 2026).
- Massenausnutzung erfüllt
Innerhalb von vier Tagen trafen Angriffe mehr als 4.115 von Imperva geschützte Websites, und Cloudflare blockierte mehr als 1,1 Millionen Angriffe (Anbieterdaten von Imperva und Cloudflare).
- Schaden nicht erfüllt
Weder Schadenszahlen noch Ausfälle kritischer Dienste sind belegt; die Angriffszahlen stammen aus Sensoren der Anbieter, nicht aus Schadensmeldungen.
- Außergewöhnliche Reaktion nicht erfüllt
In elf Tagen erschienen sechs Bash-Patches, aber keine Maßnahme über das übliche Patchen hinaus ist belegt (Patch-Archiv von GNU Bash, US-CERT).
| Betroffen | GNU Bash, die Shell von Linux, Unix und macOS |
|---|---|
| CVE | CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278 |
| CVSS-Vektor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Schwachstellentyp (CWE) | CWE-78 |
| Behoben in | Patches 025 bis 030 für Bash 4.3 (24. September bis 5. Oktober 2014) und entsprechende Patches für ältere Versionen |
| In der CISA-Liste ausgenutzter Schwachstellen seit | 28. Januar 2022 |
| Gefunden von | Ein unabhängiger Unix- und Linux-Spezialist; die Folgelücken fanden andere Forscher |
- 1Früheste belegte Meldung, im Bug-Tracker von Red Hat, noch geheim
- 2Veröffentlicht+9 Tage
- 3Patch verfügbar+9 Tage
- 4Der erste Fix erweist sich als unvollständig; seine Umgehung erhält eine eigene CVE-Nummer+10 Tage
- 5Die Angriffe erreichen in den Sensordaten von Cisco ihren Höhepunkt+11 Tage
- 6Sechster und letzter Bash-Patch der Reihe+20 Tage
Am 24. September 2014 wurde eine Sicherheitslücke in Bash bekannt, der Shell von Linux, Unix und macOS: dem Programm, das Befehle liest und ausführt. Über sie konnte eine einzige präparierte Webanfrage beliebige Befehle auf einem Webserver ausführen. Die Sensoren von Cisco registrierten noch am selben Tag Angriffe, und es brauchte sechs Patches in elf Tagen, um die Lücke und die danach gefundenen Schwachstellen zu schließen.
So funktionierte der Angriff
Programme geben den Programmen, die sie starten, Einstellungen in Umgebungsvariablen mit: kleinen Textstücken mit jeweils einem Namen. Bash nutzt sie für eine weitere Aufgabe: Die Shell kann eigene kleine Programme, sogenannte Funktionen, an die nächste Bash weitergeben, die sie startet. Dazu schreibt sie die Funktion in eine Variable, deren Text mit () { beginnt.
Jeder neue Bash-Prozess ging alle seine Variablen durch und machte aus jeder, die wie eine Funktion aussah, eine Funktion. Dazu schickte er den Text durch seinen normalen Befehlsleser, den Parser. Der Parser hielt jedoch nicht an der schließenden Klammer der Funktion an, sondern führte auch jeden Befehl aus, der danach stand.
Das wäre harmlos gewesen, wenn nur Bash selbst solche Variablen geschrieben hätte. Viele Programme kopieren jedoch Eingaben von außen in Variablen, bevor sie eine Shell starten. Webserver tun das für CGI-Skripte, kleine Programme, die ein Server startet, um eine Seite zu erzeugen: Der User-Agent-Header einer Anfrage, die Zeile, die normalerweise den Browser nennt, wird zur Variablen HTTP_USER_AGENT. DHCP-Clients, die Netzwerkeinstellungen abrufen, machen dasselbe mit Einstellungen, die das Netzwerk schickt, und ebenso OpenSSH, das Programm für Remote-Anmeldungen, bei Konten, die auf einen festen Befehl beschränkt sind.
- Angreiferschreibt einen Befehl hinter eine Funktion im Header einer Anfrage
- Webserverkopiert den Header in eine Variable für ein CGI-Skript
- Bashstartet und liest die Variable als Funktion ein
- Befehlwird auf dem Server ausgeführt
Reichweite und Angriffe
Bash gehört bei Linux und macOS zum Grundbestand des Betriebssystems, schrieb US-CERT, das Computer-Notfallteam der US-Regierung, in seiner Warnung. Auf Linux allein laufen heute laut W3Techs 63,2 % aller Websites, deren Betriebssystem bekannt ist. Allerdings ließ sich nicht jeder dieser Server angreifen: Ein Angreifer brauchte einen Weg von außen bis zu Bash, etwa über ein CGI-Skript.
Keine unabhängige Studie hat gemessen, wie viele Systeme verwundbar waren oder angegriffen wurden. Alle Angriffszahlen stammen von Sicherheitsfirmen, und jede sieht nur ihre eigenen Kunden. Deshalb lassen sich die Zahlen nicht addieren:
- Cloudflare, das den Datenverkehr von Websites filtert, blockierte bis zum 30. September 2014 weit über 1,1 Millionen Shellshock-Angriffe. Anfangs zählte es 10 bis 15 Angriffe pro Sekunde.
- Incapsula, ein Firewall-Dienst von Imperva, wehrte in den vier Tagen nach der Bekanntgabe über 217.089 Angriffsversuche auf über 4.115 Websites ab. Die Angriffe kamen von mehr als 890 IP-Adressen.
- Die Sensoren von Cisco zeigten den Höhepunkt der Angriffe am 26. September 2014 und eine weitere Spitze zwei Tage später.
| Erster Bericht, 26. September | 725 | |
|---|---|---|
| Nach vier Tagen, 29. September | 1.970 |
Anbieterdaten von Imperva; sie umfassen nur die Websites, die der Dienst schützt. Der erste Wert ist ungefähr, der zweite ein Mindestwert.
Die meisten dieser Angriffe waren Tests. In den Daten von Cloudflare waren etwa 83 % Erkundung: Anfragen, die nur prüfen, ob ein Server verwundbar ist. Etwa 8 % versuchten, den Server direkt zu übernehmen.
| Erkundung, ob ein Server verwundbar ist | 83 % | |
|---|---|---|
| Direkte Versuche, den Server zu übernehmen | 8 % |
Anbieterdaten von Cloudflare, 30. September 2014. Beide Anteile sind ungefähr.
Sechs Patches in elf Tagen
Das Bash-Projekt veröffentlichte seinen ersten Patch noch am Tag der Bekanntgabe. Er war unvollständig. Am 25. September erhielt eine zweite Schwachstelle eine eigene Nummer, CVE-2014-7169, weil Bash nach bestimmten fehlerhaften Funktionsdefinitionen immer noch nachfolgenden Text ausführte. Danach fanden Forscher weitere Schwachstellen im Parser, und die Warnung von US-CERT wuchs bis zum 30. September auf sechs CVE-Nummern.
| Patch | Datum | Was er behob |
|---|---|---|
bash43-025 | 24. September 2014 | Die ursprüngliche Lücke, CVE-2014-6271 |
bash43-026 | 26. September 2014 | Die Umgehung des ersten Patches, CVE-2014-7169 |
bash43-027 | 27. September 2014 | Eine neue Art, Funktionen weiterzugeben, die die ganze Klasse von Fehlern schließt |
bash43-028 | 1. Oktober 2014 | Zwei Speicherfehler im Parser, CVE-2014-7186 und CVE-2014-7187 |
bash43-029 | 2. Oktober 2014 | Ein Parser-Fehler, der zu CVE-2014-6277 passt |
bash43-030 | 5. Oktober 2014 | Ein Parser-Fehler, der zu CVE-2014-6278 passt |
Der dauerhafte Fix war Patch 027. Seitdem gibt Bash Funktionen nur noch unter besonderen Variablennamen weiter (BASH_FUNC_name%%), sodass eine gewöhnliche Variable, etwa eine aus einer Webanfrage, nie als Code behandelt wird. Damit waren die späteren Parser-Fehler über Variablen nicht mehr erreichbar. Ältere Bash-Versionen erhielten entsprechende Patches, und die Linux-Distributionen lieferten sie als Updates aus. Red Hat etwa verfolgte die Meldung seit dem 15. September 2014 unter Embargo, also geheim, bis ein Fix bereitstand.
Die Warnung von US-CERT gab der Lücke die höchstmögliche Bewertung für die Auswirkungen, 10. Heute bewertet die NVD, die US-amerikanische National Vulnerability Database, die ursprüngliche Lücke mit 9,8 von 10 auf Version 3.1 der CVSS-Skala; auf der älteren Version 2 erreichen alle sechs Shellshock-CVEs den Wert 10. Die US-Cyberbehörde CISA nahm die ursprüngliche Lücke und die erste Umgehung am 28. Januar 2022 in ihre Liste ausgenutzter Schwachstellen auf, eine der späteren Parser-Lücken, CVE-2014-6278, am 2. Oktober 2025.
Quellen
- oss-security: der erste öffentliche Sicherheitshinweis zu CVE-2014-6271 openwall.com
- GNU-Projekt: die offiziellen Patches für Bash 4.3, mit Datum ftp.gnu.org
- US-CERT-Warnung TA14-268A zu Shellshock cisa.gov
- Red Hat Bugzilla: der Eintrag zu CVE-2014-6271, unter Embargo geführt bugzilla.redhat.com
- NVD: CVE-2014-6271 nvd.nist.gov
- Cisco Talos: Shellshock-Angriffe im Netz (Anbieterdaten) blogs.cisco.com
- Cloudflare: Shellshock im Detail (Anbieterdaten) blog.cloudflare.com
- Imperva: die Folgen von Shellshock (Anbieterdaten) imperva.com
- W3Techs: Nutzungsstatistik von Linux w3techs.com
Weiterlesen: HeartbleedZurück: WannaCryÜbersicht: Schwachstellen