IDS dla aplikacji webowej w PHP
kozik 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
.
Wysłano w Blog - Web | Tags: bezpieczeństwo, next, open-source, pcformat, praca, programowanie, www |

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?