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:

httpoxy_cgi-fastcgi-vulnerability

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 Apache2 i Nginx. 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
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk