Zainteresował mnie ostatnio projekt PHPIDS, czyli IDS dla aplikacji webowej pisanej w PHP. I to nie tylko z uwagi na ostatnie poważne luki w MyBB, ale i w kontekście mojego serwisu, czyli www.pcformat.pl i www.nextmag.pl.
Jednym z najtrudniejszych elementów hartowania (hardeningu) aplikacji jest chyba oszacowanie zagrożenia związanego z nieznanymi lukami i błędami. Oszacowanie i zabezpieczenie przed nimi. No tak, ale jak zabezpieczyć się przed czymś o czym się nie wie? Da się…
PHPIDS skanuje dane docierające do aplikacji (GET, POST, COOKIE itp.) i na bazie przygotowanych reguł szuka prób wykorzystania luk. Jak zwykle przy tego typu mechanizmie – bazującym na zestawie gotowych reguł – powstaje problem bycia o jeden krok w tyle za atakującym. Napastnik wymyśla nowe metody ataku czy nowe sposoby „ukrycia” ataku w normalnej komunikacji (przykładowo – czyli jak przekazać znacznik <script> by to nie wyglądało dla IDS-u jak <script>). Stąd o 100% skuteczności marzyć nawet nie można… ale zdecydowana większość niechcianego ruchu pewnie da się wykryć.
Innym problemem jest wydajność. Póki co zaimplementowałem PHPIDS tylko na stronie NEXTA i widać niecałe dwukrotne wydłużenie czasu przetwarzania skryptów PHP – średnio z 0.02 sekundy do 0.04 sekundy. Jest to ciągle akceptowalna wartość, a nie wziąłem się jeszcze za tuningowanie IDS-u (ma własne mechanizmy cache’u). Pewnie na stronę PC Formatu też wrzucę bez obaw o zbytne spowolnienie ładowania się strony.
Zgrzyt pojawi się przy implementacji na forum. Nie tylko z powodu idiotycznego wręcz rozbicia punktów wejściowych do aplikacji (kupa plików PHP „wystawionych” dla użytkownika), ale właśnie z faktu obciążenia. Ruch na forum PC Formatu jest całkiem pokaźny (szczegółów nie podaję…) i koszt wdrożenia IDS-u może tu być za wysoki… Z drugiej strony to właśnie na zabezpieczeniu forum przed nieznanymi lukami, których jest tam dużo, najbardziej mi zależy…
No cóż… będzie wyzwanie
.
Update – 19.02.2008:
Napisanie pluginu do MyBB okazało prościutkie i szybkie. Obciążenie na akceptowalnym poziomie. Już widać łapanie typowych exploitów… od phpBB
.
kozik

Kwiecień 30th, 2008 at 0:39
Hmm, ciekawe. Planujesz udostępnić ten plugin?
Nie ma przypadkiem czegoś podobnego dla Apache (nie chodzi o mod_security)?
Maj 6th, 2008 at 20:14
1. Nie planowałem pluginu do MyBB udostępniać. Jest on bardzo prosty, a trudność w użyciu IDS-u raczej się sprowadza do:
– instalacji PHP IDS (niezbyt trudne, ale dla niektórych użycie patcha jest zbyt skomplikowane…),
– dopracowania reguł powiadamiana o wykryciu ataku, by pozbyć się mnóstwa automatycznych exploitów na jakieś phpBB/PHPNuke/Mambo i inne.
Jeśli byłaby potrzeba i zainteresowanie, to może…
2. Jeśli to ma działać na poziomie Apache’a, to może po prostu lepiej zainwestować czas w porządnego IDS-a, np. SNORT?