Millal on abi veebirakenduse tulemüürist?

Veebirakenduse tulemüür ei muuda veebi kuulikindlaks, kuid kindlasti teeb selle raskemini rünnatavaks. (Foto: Unsplash)

Enamik veebilehtede vastu suunatud rünnakutest kasutab ära mõnda koodis olevat nõrkust. Milliste nõrkuste vastu sab abi veebirakenduse tulemüürist ehk WAF-ist, selgitab tehnokratt Peeter Marvet.

Levinumad nõrkused

Koodis olevatest nõrkustest on levinumad ebapiisav kasutajaõiguste või külastaja sisestatud andmete kontroll. Näiteks võiks kujutada ette olukorda, kus sisestades kommunaalteenuste ettevõtte näitude teatamise lehel aadressi lahtrisse ‘ OR 1=1;– kuvatakse kõigi klientide aadressid ja eelmised näidud – sest täpselt selline näeb välja andmebaasi- ehk SQL-süst.

Või tehakse WordPressi pihta päring, mis lisab õigusi mitte kontrolliva plugina seadistuste kaudu lehele külastajaid kusagile edasi suunava Javascripti koodi.

Sellised koodivead on põhjus, miks tuleb kõike avalikus internetis kättesaadavat praktiliselt igapäevaselt uuendada: iga paigatud turvaprobleem toob hiljemalt 24 tunni jooksul kaasa skannerite laine, mis otsivad haavatavaid veebe.

Paraku on aga olemas ka haavatavused, millele ei pruugi veel “paika” olemas olla. Kas ei ole arendaja probleemist teadlik või ei ole veel jõudnud viga paigata. Või on paigatud, aga uuemas versioonis ja veebi ülemviimine sellele osutub töömahukaks. Sellistel puhkudel võib abi olla veebirakenduse tulemüürist ehk WAF-ist (web application firewall), mis proovib kahtlased päringud tuvastada ja blokeerida.

Mis on veebirakenduse tulemüür?

Zone virtuaalserverites on kasutuselModSecurityning mugavalt saab aktiveerida kaOWASP ModSecurity Core Rule Set (CRS)tulemüürireegleid.

Tulemüürireeglite aktiveerimine (Foto: Zone)

Valida saab logimise või blokeerimise ja logimise vahel. Kui on plaan ja võimekus logisid analüüsida, tasub loomulikult alustada logimisest ning vältida ausate kasutajate häirimist valepositiivsete tuvastustega. Aga lihtsam on lülitada sisse blokeerimine ning läbi testida funktsionaalsused.

Lülita sisse reaalajas serverisse jõudvad logid

Igal juhul soovitame kontrollida, et sisse oleksid lülitatud ka reaalajas serverisse jõudvad logid. Umbes 10 minutiga jõuab seadistus Virtuaalserverisse ja kui seejärel proovida näiteks WordPressi (WP) otsingusse sisestada’ OR 1=1;–peaks tulemuseks olema Error403.

Selle tulemusel tekkiavad /logs/apache.ssl.error.log faili järgmised read (loetavuse huvides natuke puhastatud):

[2019-08-21 09:17:19.367098] [client 217.146.xx.x] ModSecurity: Warning. detected SQLi using libinjection with fingerprint ‘s&1;c’ [file “REQUEST-942-APPLICATION-ATTACK-SQLI.conf”] [line “64”] [id “942100”] [data “Matched Data: s&1;c found within ARGS:s: ‘ OR 1=1;–“] [severity “CRITICAL”] [uri “/”] [unique_id “XVzh78ean2NKORtLccJqvgAAAAM”]

[2019-08-21 09:17:19.367352] [client 217.146.xx.x] ModSecurity: Access denied with code 403 (phase 2). Inbound Anomaly Score Exceeded (Total Inbound Score: 5 – SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0)

Logist on näha nii põhjus (SQL-i ehk andmebaasisüst), reegli number (942100), selle trigerdanud andmed, kui lisaks ka reeglit sisaldanud OWASP CRS faili nimi.

99,99% juhtudest on selline päring seotud turvanõrkuse otsimise või ärakasutamisega, aga vähemalt teoorias aga vähemalt teoorias võib SQL-friikidele mõeldud poes olla müügil sellenimeline t-särk – samuti võiks tulemüür takistada selle blogipostituse salvestamist.

Reeglite valikuline väljalülitamine

Lahenduseks on reeglite valikuline väljalülitamine. Selleks saab Virtuaalserveri halduses pea- või alamdomeeni seadetes lisada Apache direktiivide ploki, mille sisuks on loetelu reeglitest.

Reeglite loetelu (Foto: Zone)

Vajadusel saab ühele reale sobitada ka rohkem reegleid (tühikuga eraldatuna) või numbrivahemiku (jutumärkides). Hea mõte on lisada juurde #-märgiga algav kommentaaririda ning ümbritseda blokk IfModule tingimusega:

<IfModule mod_security2.c>

#
Keelame särgiotsingut takistavad reeglid:

SecRuleRemoveById
942100 942140 “942160-942170”

</IfModule>

Kuidas tuvastada valepositiivsus?

Kasutaja kaebuse peale logides tuhnimine on vaevarikas töö – pealegi ei ole kuvatav veateade ilus ega informatiivne. Testimiseks võib kasutada vealehte, mida kuvatakse päringu blokeerimisel ning mis saadab juhul, kui kasutaja brauseris on JavaScript olemas, teate e-postile ja/või Slacki kanalisse.

Keerulisemate rünnete puhul võib toimuda ka JavaScripti interpreteerimine, lisaks ei piira see lahendus teavituste hulka ehk seda saab kasutada sihtaadressi teavitustega ülekoormamiseks.

Vealehe koodi leiab https://github.com/zone-eu/waf-handler, seadistamisjuhised sealtsamast. Ning tulemuseks on järgmised teavitused:

Kas WAF lahendab kõik veebirakenduste turvaprobleemid?

Kindlasti ei lahenda WAF kõiki veebirakenduste turvaprobleeme. Clarified Security‘s veebirakenduste turvalist arendust õpetav, läbistustestimise ja punase tiimi ehk ründaja rollis veebe lammutav Elar Lang märgib, et WAF on kasulik “teise liini kaitsemeetmena” ja raskendab ründe läbi viimist ning hoiab heal juhul eemal teadaolevatele turvaaukudele keskendnud skänneritega “skriptijõnglased”. Kuid indlasti ei tee WAF korda programmikoodis olevaid turvaauke ning need vajavad ikkagi parandamist.

Populaarsed lood mujal Geeniuses

Igal argipäeval

Ära jää ilma päeva põnevamatest lugudest

Saadame sulle igal argipäeval ülevaate tehnoloogia-, auto-, raha- ja meelelahutusportaali olulisematest lugudest.