Błędy bezpieczeństwa w oprogramowaniu są wypadkową wielu zdarzeń – intencjonalnych zaniedbań narastających przez lata, priorytetyzacji rozwoju biznesowego czy losowych zdarzeń w postaci tykających bomb istniejących w zewnętrznych bibliotekach. Mogą one także wynikać ze zbyt luźnej interpretacji dokumentacji bądź standardu. W poniższym artykule przyjrzyjmy się przykładom podatności zgłoszonych w ostatnich latach i postaramy się odpowiedzieć na pytanie, czy jesteśmy w stanie ich uniknąć.
HTTP Request Smuggling to podatność polegająca na różnej interpretacji długości żądań między serwerami pośredniczącymi a serwerem aplikacji (backendem). Różnica ta powoduje, iż atakujący jest w stanie ukryć żądanie przed mechanizmami bezpieczeństwa w zewnętrznych warstwach sieci, co bezpośrednio oddziałuje na infrastrukturę sieciową.
Dodatkowo request smuggling zmusza backend do obsługi innej ilości żądań od tej, która została wysłana przez proxy, co prowadzi do desynchronizacji ruchu aplikacji – odpowiedzi wysyłane przez backend są doklejane do żądań innych użytkowników bądź wysyłane w losowy sposób...
Zagadnienia poruszane w tym artykule:
- Długość żądania HTTP;
- Jak wygląda atak w praktyce;
- Skutki ataku typu request smuggling;
- Wzrost zagrożeń;
- Przepełnienie liczby całkowitej;
- Nagłówki hop-by-hop;
- Nie tylko HTTP;
Artykuł pochodzi z magazynu Programista nr 106 (1/2023). Magazyn jest z przełomu lutego i marca 2023 roku. Szczegółowy spis treści wydania nr 106: https://programistamag.pl/programista-1-2023-106/
Autorem artykułu jest Przemysław Samsel. Konsultant do spraw bezpieczeństwa w firmie SecuRing. Pasjonuje się ofensywnym bezpieczeństwem webowym oraz mobilnym. Chętnie dzieli się zdobytą wiedzą poprzez prezentacje, artykuły i szkolenia. W czasie wolnym miłośnik rozwiązywania zagadek, gry na pianinie i pływania.