Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
HTTPoxy – nowa podatność webowa umożliwiająca podsłuch komunikacji HTTP
Całość umożliwia atak MiTM (podsłuch komunikacji HTTP wychodzącej z serwera) i bazuje na konflikcie nazw zmiennych środowiskowych (a dokładniej zmiennej HTTP_PROXY):
RFC 3875 (CGI) puts the HTTP
Proxy
header from a request into an environment variable calledHTTP_PROXY
.
HTTP_PROXY
is a popular environment variable used to configure an outgoing proxy.
Czyli jednym z warunków wstępnych jest działanie webserwera w trybie CGI (wtedy ustawiane są m.in. z request nagłówków HTTP zmienne środowiskowe – i można nagłówkiem kontrolowanym przez atakującego ustawić zmienną HTTP_PROXY, służącą również do ustalania na serwerze – proxy wychodzącego… Oczywiście nie zrobimy tego hurtem dla wszystkich procesów na danej maszynie).
Na obecną chwilę jako potencjalnie podatne wskazywane są aplikacje napisane w: PHP/Pythonie/Go.
Różni dostawcy popularnych webserwerów zaczynają już reagować na problem: (Apache, NGINX, …) – w największym skrócie:
This leads to a remotely exploitable vulnerability. If you’re running PHP or CGI, you should block the Proxy header now. Here’s how.
–ms
„The Vend security team would like to publicly disclose a vulnerability
we’ve **(re)discovered** in CGI and PHP web applications.”
…
The original discovery in 2001 seems to have been by Randal L. Schwartz.”
Ale fame musi być i własna strona błędu też. Śmieszne.
Moim zdaniem to akurat ~gruba sprawa. A ten 2001 to nawet grubsza – bo załatali to perlu, a jakoś przesmyknęło się przez tyle lat w PHP-ie.
Rozumiem, że Dżawki to nie dotyczy, prawda?
Najprawdopodobniej nie
„you should block the Proxy header now.” – radziłbym coś bardziej uniwersalnego: zablokować (logować i alarmować) połączenia wychodzące z webserwerów do internetu – w 99% przypadków nie ma potrzeby wypuszczania takich pakietów. Minimum to drop dla pakietów SYN wysyłanych przez użytkownika z którego działa httpd (w specyficznych warunkach pewnie trzeba wypuścić TCP do serwerów DNS, z listami CRL i lokalnego mirrora uaktualnień systemu/aplikacji).
Zasada sec in depth jak najbardziej.
Ale akurat tego blokowania komunikacji wychodzącej mało co kto robi (niestety).
+ to wycinanie nagłówka jest potencjalnie (przynajmniej na początek) najmniej inwazyjne i szybkie do zrobienia.
Na CentOSie i Red Hacie z włączonym SElinuksem domyślnie połączenia wychodzące inicjowane przez httpd są blokowane (patrz https://wiki.centos.org/TipsAndTricks/SelinuxBooleans#line-44). Ale przecież SElinuksa się odruchowo wyłącza (najczęściej dlatego, że się go nie zna i nie rozumie, a szkoda).