WEBrick "Escapesequence Injection" Schwachstelle

Eine Schwachstelle in WEBrick, ein Bestandteil der Standard Bibliothek zur Bereitstellung von HTTP Diensten, wurde gefunden. WEBrick ermöglicht es Angreifern, eine Escapesequenze in die eigene Logdatei umzuleiten. Sollte diese Logdatei in bestimmten Terminalemulatoren angezeigt werden, könnte dies zur Ausführung von potentiell schädlichem Code innerhalb dieses Terminals führen.

Wir haben bereits den Fehler lokalisiert und entfernt. Es ist dringend empfohlen eine Aktualisierung durchzuführen. Bis zu dessen Einspielung und dem Neustart des WEBrick Prozesses, sollte darauf verzichten werden, die Logdateien zu begutachten.

Detaillierte Beschreibung

Terminal Escapesequenzen stellen unterschiedlichste Möglichkeiten der Kommunikation zwischen einem Terminal und einem Prozess zur Verfügung. Diese Sequenzen sind jedoch nicht dafür ausgelegt, von nicht vertrauenswürdigen Quellen in das Terminal eingespeist zu werden. Würde ein entfernter Angreifer eine solche Sequenz in die WEBrick Logdatei schleusen können und ein Anwender diese Logdatei mit seinem Terminal öffnen, könnten verschiedene Schwachstellen von bestimmten Terminalemulatoren ausgenutzt weden.

Und WEBrick konnte diese Escape-Sequenzen bislang nicht ausfiltern.

Beispiel:

% xterm -e ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8080).start' &
% wget http://localhost:8080/%1b%5d%32%3b%6f%77%6e%65%64%07%0a

Bitte den Fenstertitel von xterm beachten.

Betroffene Versionen

  • Ruby 1.8.6 patchlevel 383 und alle vorhergehenden
  • Ruby 1.8.7 patchlevel 248 und alle vorhergehenden
  • Entwicklerversion von Ruby 1.8 (1.8.8dev)
  • Ruby 1.9.1 patchlevel 376 und alle vorhergehenden
  • Entwicklerversion von Ruby 1.9 (1.9.2dev)

Lösung

Danke

Danke an Giovanni "evilaliv3" Pellerano, Alessandro "jekil" Tanasi und Francesco "ascii" Ongaro, welche diese Fehler entdeckt haben.