Interpolique chroni przed XSS, SQLi

2010-06-16 00:00:00 +0100


Dan Kaminsky opublikował implementację techniki chroniącej przed atakami XSS i SQL injection, którego założenia omówił na tegorocznej konferencji CONFidence 2010. Projekt Interpolique to zbiór procedur, których podstawowym zadaniem jest unieszkodliwienie złośliwego kodu wstrzykiwanego w atakach takich jak Cross Site Scripting (XSS) czy SQL Injection. Według Kaminskiego źródłem tych ataków jest trudność w jednoznacznym określeniu typów danych przyjmowanych z zewnątrz i następnie przetwarzanych przez aplikację. Rozwiązaniem jest wyraźne rozgraniczenie typów - a więc jeśli coś jest tekstem to musi wyglądać jak tekst i być jako tekst opisane oraz interpretowane. Analogicznie z kodem JavaScript czy SQL.

Koncepcyjnie rozwiązanie Dana Kaminskiego jest proste - jako uniwersalny mechanizm dezaktywacji wykorzystuje on kodowanie BASE64. Każda porcja danych, która przychodzi z zewnątrz jest kodowana na ciąg BASE64 i w tej formie przemieszcza się wewnątrz aplikacji tam, gdzie z jej punktu widzenia powinna być traktowana jako pozbawiony znaczenia ciąg znaków alfanumerycznych ze stałego przedziału. Nie trzeba go eskejpować, filtrować Unicode itd.

Gdy taki - opatrzony odpowiednią etykietką - ciąg znaków trafia do bazy danych to dekodowany jest dopiero przez procedurę składowaną w bazie - dzięki temu może podlegać np. przeszukiwaniu ale gdyby zawierał wstrzyknięty kod SQL to będzie on traktowany jako zwykły tekst.

Obecna wersja biblioteki jest opublikowana jako beta i autor zachęca do w szukania potencjalnych luk tak w architekturze jak i implementacji:

http://recursion.com/interpolique.html