Schwachstelle CVE-2017-5638 Sicherheitslücke in Apache Struts 2 Jakarta

Redakteur: Peter Schmitz |

Qualys hat eine kritische Sicherheitslücke im Multipart-Parser Jakarta von Apache Struts 2 entdeckt. Die Schwachstelle CVE-2017-5638 ermöglicht bei anfälligen Anwendungen die Ausführung von Schadcode aus der Ferne. Entsprechende Exploits können Angreifer in die Lage versetzen, kritische Daten zu stehlen oder die Kontrolle über Ihre Anwendungsserver zu übernehmen.

Anbieter zum Thema

Aufgrund einer Sicherheitslücke im Multipart-Parser Jakarta von Apache Struts 2 sollten Anwender dringend auf die aktuellen Versionen 2.3.32 oder 2.5.10.1 updaten.
Aufgrund einer Sicherheitslücke im Multipart-Parser Jakarta von Apache Struts 2 sollten Anwender dringend auf die aktuellen Versionen 2.3.32 oder 2.5.10.1 updaten.
(Bild: Apache Foundation, Vogel IT-Medien)

Im Multipart-Parser Apache Jakarta wurde eine Sicherheitslücke gefunden, die Remotecodeausführung ermöglicht (CVE-2017-5638). Wird diese Lücke ausgenutzt, könnte ein Angreifer ohne Authentifizierung aus der Ferne die komplette Kontrolle über das betroffene System erlangen.

Das Problem tritt auf, wenn die Software versucht, den HTTP-Header Content-Type zu parsen. Der Entity-Header Content-Type dient dazu, den Medientyp einer Ressource anzugeben. In Anfragen (wie etwa POST oder PUT) teilt der Client dem Server mit, welche Art von Daten übermittelt wird. In den Antworten teilt dann ein Content-Type-Header dem Client mit, welchem Datentyp die zurückgegebenen Inhalte angehören.

Abwehr mittels Web Application Firewall (WAF)

Nutzer einer Qualys Web Application Firewall (WAF) 2.0 können benutzerdefinierte Sicherheitsregeln erstellen, um Angriffe zu erkennen und abzuwehren, die diese Schwachstelle auszunutzen versuchen.

Da die Lücke durch ungültige Werte im Content-Type-Header für Multipart-HTTP-Anfragen ausgelöst wird, können Administratoren eine einfache benutzerdefinierte Regel mit folgenden Bedingungen erstellen:

request.path EQUAL “/struts2-showcase/index.action”request.header “Content-Type” NOT.EQUAL “multipart/form-data”

Mit dieser Regel werden Anfragen erkannt und geblockt, die ungültige Content-Type-Headerwerte für eine spezifische URL enthalten, die Multipart-Anfragen akzeptiert.

Benutzerdefinierte Regeln sind sehr flexibel und ermöglichen es unterschiedliche Attribute von HTTP-Anfragen, Clients, Servern und Transaktionen zu verwenden, um Angriffe zu erkennen. Es gibt aber noch weitere Möglichkeiten, um Angriffe auf diese Schwachstelle zu blocken:

Die bisher veröffentlichten Exploits lassen darauf schließen, dass die Sicherheitslücke durch Content-Type-Werte ausgelöst werden kann, die dem Muster “%{<attack-payload>}” entsprechen. Solche ungültigen Content-Type-Werte lassen sich durch eine benutzerdefinierte Regel ermitteln:

request.header “Content-Type” MATCH “^.*%{.*”

Da es noch andere Angriffsmuster geben könnte dürften Whitelists mit zulässigen Inhaltstypen effektiver sein als Blacklists. Um mittels einer benutzerdefinierten Regel alle zulässigen Inhaltstypen der Whitelist hinzuzufügen verwendet man am besten reguläre Ausdrücke:

request.header.content-type NOT.MATCH “multipart\/form\-data|content\-type2|content\-type3”

Auch die HTTP-Profile der Sicherheitskonfiguration von Qualys WAF können verwendet werden, um Inhaltstypen auf die Whitelist bzw. Blacklist zu setzen. Um sich umfassend zu schützen, empfiehlt Qualys, auf die Struts-Versionen 2.3.32 oder 2.5.10.1 aufzurüsten.

(ID:44600749)