Odkryto lukę "Escape Sequence Injection" w WEBrick'u

Odkryto lukę bezpieczeństwa w serwerze WEBrick, który jest częścią biblioteki standardowej Rubiego. WEBrick umożliwia atakującemu wstrzyknięcie niebezpiecznych sekwencji znaków do logów serwera. W wyniku tego niebezpieczne znaki sterujące mogą zostać wykonane w terminalu ofiary.

Mamy już przygotowaną łatkę, wkrótce zostaną wydane uaktualnienia wszystkich aktywnych gałęzi Rubiego. W międzyczasie zalecamy aby nie przeglądać logów WEBrick'a.

Szczegółowy opis

Znaki specjalne terminala używane są do interakcji pomiędzy terminalem a procesem w nim działającym. . Problem w tym, że zakłada się, że sekwencje tych znaków pochodzą z zaufanych źródeł a nie na przykład z sieci. Jeśli więc możliwe byłoby wstrzyknięcie specjalnie przygotowanej sekwencji znaków do logów serwera WEBrick, którą potencjalna ofiara otworzyłaby w terminalu, atakujący mógłby wykorzystać pewne problemy dotyczące bezpieczeństwa w terminalach.

WEBrick nie filtruje wyżej wspomnianych specjalnych sekwencji znaków.

Przykład:

% 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

Obserwuj tytuł okienka xterm.

Wersje Rubiego, których ten problem dotyczy

  • Ruby 1.8.6 patchlevel 383 i wszystkie poprzednie wersje
  • Ruby 1.8.7 patchlevel 248 i wszystkie poprzednie wersje
  • Wersje deweloperskie Ruby 1.8 (1.8.8dev)
  • Ruby 1.9.1 patchlevel 376 i wszystkie poprzednie wersje
  • Wersje deweloperskie Ruby 1.9 (1.9.2dev)

Poprawki

Podziękowania

Podziekowania należą się Giovanni "evilaliv3" Pellerano, Alessandro "jekil" Tanasi, oraz Francesco "ascii" Ongaro za odkrycie tej luki.