Dawno nie było już nic o jakiejś nowej (lub nowo nagłośnionej) podatności dotyczącej (web)serwerów, więc chyba warto coś wspomnieć o HTTPoxy, czyli podatności dotyczącej CGI/FastCGI, o której od wczoraj jest dość głośno…

HTTPoxy – a CGI application vulnerability

Oczywiście – zgodnie z trendem – skoro mamy jakiś błąd, to nie mogło zabraknąć nazwy, dedykowanej strony internetowej (choć warto też zajrzeć na stronę CERTu), i oczywiście logo:

Zmienna HTTP_PROXY

Nie będę zbytnio rozpisywał się nad samy problemem, gdyż szczegółowe informacje znajdziecie na tej stronie.  Ale jakieś minimum informacyjne musi być.

Problem dotyczy kodu uruchamianego jako/w ramach CGI/FastCGI, m.in. w takich językach jak PHP, Go, Python, a do tego – by skala byłą jeszcze większa – dotyczy m.in. webserwerów działających na Apache2Nginx. W pewnych sytuacjach – wykorzystując konflikt nazw zmiennych środowiskowych (zmienna HTTP_PROXY) może dojść do posłuchania komunikacji wychodzącej z serwera (atak MiTM).

Ale co najważniejsze – jeśli macie na serwerze zwykłą stronę internetową, to problem dotyczy Was tylko teoretycznie, bo zapewne w takiej sytuacji nie korzystacie z serwera proxy, jak i niezależnego serwera aplikacji, z którego odpowiedź za sprawą podstawionego nagłówka HTTP_PROXY trafić może do fałszywego serwera proxy:

No i chyba warto wspomnieć, że nie jest to nowy błąd, tylko jak to ostatnio często bywa z pewnych przyczyn dostaje drugie, lepsze życie… ;-)

Zabezpieczamy (web)serwer

Niezależnie od tego, czy w przypadku Waszego serwera jest szansa na wykonanie tego typu ataku warto się zabezpieczyć, zwłaszcza że raczej nie powinno tu być żadnych niespodziewanych efektów ubocznych.

Webserwer Apache2

W przypadku webserwera Apache2 otwieramy plik:

sudo nano /etc/apache2/apache2.conf

I dodajemy tam linijkę:

RequestHeader unset Proxy early
Może się zdarzyć, że nie będziecie mieli aktywnego modułu do obsługi nagłówków, w tedy należy skorzystać z polecenia:

sudo a2enmod headers

Następnie jeszcze test konfiguracji i restart webserwera:

sudo apache2ctl configtest
sudo service apache2 restart

Webserwer Nginx

W przypadku webserwera Nginx otwieramy plik:

sudo nano /etc/nginx/fastcgi.conf

I dodajemy linijkę:

fastcgi_param HTTP_PROXY "";
W starszych wersjach Nginx (chyba przed 1.6) będzie to plik:

sudo nano /etc/nginx/fastcgi_params

Cloudflare

Jeśli korzystacie z Cloudflare, i macie aktywny przynajmniej plan pro, to możecie aktywować filtrowanie tego typu ataków za pomocą Web Application Firewall (WAF), aktywując regułę nr 100050.

(!) Zgłoś błąd na stronie