Jedna z ostatnich luk SQL-injection w Wordpress zainspirowała mnie do przeprowadzenia krótkiego testu kilku polskich serwisów pocztowych. W tego typu aplikacjach naturalna jest konwersja treści listów z dowolnego kodowania. Jeżeli listy w postaci HTML są filtrowane z niebezpiecznego kodu przed konwersją kodowania, wówczas może wystąpić w serwisie luka XSS (a w skrajnym przypadku także SQL-injection).
Wyniki są pozornie pozytywne - podczas testu (obejmującego tylko UTF-7, i naprawdę bardzo pobieżnego) nie znalazłem luki spowodowanej błędną kolejnością filtrowania/konwersji. Dlaczego “pozornie pozytywne”?
Na marginesie: wszystkie testowane serwisy pocztowe wymagają włączenia obsługi JavaScript do poprawnego funkcjonowania.
Aktualizacja (11 stycznia): Więcej informacji na temat luk XSS w serwisach pocztowych (i nie tylko) można znaleźć na blogach Michała Majchrowicza i Michała Ławickiego.
Ponad rok temu podobna luka występowała w Google. Prostą próbkę błędnego kodu można znaleźć na stronie Chrisa Shifletta. W podanym tam przykładzie problem jest dokładnie odwrotny - ponieważ “obce” kodowanie dotyczy danych wyjściowych, a nie wejściowych, więc prawidłowa kolejność to filtrowanie-konwersja (w szczególnych przypadkach mogą wystąpić wyjątki od tej reguły).