200 likes | 384 Views
Injection. Urmo Lihten A21 Security team. Kes kujutavad ohtu?. Igaüks võib kujutada ohtu: välised ja sisesed kasutajad ning isegi süsteemihaldajad (adminnid) Vaja läheb ainult süsteemile andmete saatmise võimalust. Haavatavus / Exploitability. Haavatuse tase on lihtne.
E N D
Injection UrmoLihten A21 Securityteam
Kes kujutavad ohtu? • Igaüks võib kujutada ohtu: välised ja sisesed kasutajad ning isegi süsteemihaldajad (adminnid) • Vaja läheb ainult süsteemile andmete saatmise võimalust.
Haavatavus / Exploitability • Haavatuse tase on lihtne. • Ründaja saadab lihtsa tekstipõhise rünnaku teele, mis kasutab ära süsteemi ehk interpreteerija süntaksi turvaaugu. • Igasugune andme hulk ja saatja võib osutuda „süstimise“ vektoriks. • Samuti sisevõrgud tulnud rünnak võib süsteemi haavata.
Levimus ja avastatavus • Süstimise vead ilmnevad kui rakendus saadab ebausaldusväärse info interpreteerijale. • Väga levinud tegevus, eriti juba vananenud tarkvaraga süsteemides kus ei ole tehtud turvauuendusi. • Kasutatakse peamiselt SQL, LDAP, Xpath päringutes, OS käskudes ja programmide argumentides.
Levimus ja avastatavus(2) • Süstimise vigu on kerge avastada koodi uurides, kui raskem leida läbi testimise. • Ründajad saavad kasutada spetsiaalset tarkvara: skännerid ja fuzzer’id, mis aitavad süstitavaid kohti avastada.
Tehniline kahju • … võib olla väga tõsine. • Süstimine võib põhjustada andmekao või rikkumise, usaldatavusekao ja juurdepääsu keelustamise. • Kõige hullemal korral võib juhtuda terve host’i ülevõtmine.
Äriline kahju • … oleneb andmete väärtusest, mida võidakse kahjustada/rikkuda. • Sisuliselt võib kogu äri maine ära kahjustada info vargusel, muutmisel või kustutamisel.
Kas olen haavatav süstimisele? • Kõige kindlam viis on välja uurida, kas rakendus suudab selgelt vahe teha ebausaldusväärsel infol käsus või päringus. • Koodi analüüsimise tööriistad aitavad turvaanalüütikut uurida interpreteerijate kasutust ja jälgida info liikumist rakenduses. • Käsitööd tegevad pen-testijad saavad kinnitada juhtumeid tehes valmis vastavad exploit’id, mis kinnitavad haavatavuse.
Kuidas ennetada süstimist? • Süstimise ennetamine vajab ebaturvalise info eraldihoidmist käskudest ja päringutest. • Kõige parem on kasutada API’t, mis väldib interpreteerija kasutamist täielikult või pakub ainult kindlate parameetritega. • Ettevaatlikult escape’ima spetsiaalseid tähemärke ja tähti, mis mõjutaksid interpreteerija süntaksit. • „Whitelist’ida“ lubatud sisestatavad andmed.
Näidis • Rakendus kasutab ebausaldusväärset infot järgnevas haavatavas SQL päringus: String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") +"'"; • Ründaja muudab aadressi real parameetri id väärtuse järgnevale kujule: http://example.com/app/accountView?id=' or '1‘='1 • See muudab päringu tähenduse tagastamaks kõik read andmebaasist, selle asemel, et ainult id=1 puudutavad read tagastaks.
Failure to Restrict URL Access UrmoLihten A21 SecurityTeam
Ohustajad • Igaüks, kellel on võrgule ligipääs saatmaks rakendusele päringuid. • Kas anonüümsed kasutajad saavad ligipääsu privaatsele lehele või regulaarsed kasutajad vastavate õigustega lehele?
Haavatavus • Lihtne haavatavus. • Ründaja, kes on näiteks on autoriseeritud süsteemi kasutaja, lihtsalt muudab URL’i privileegitud lehe omaks. Kas on ligipääs olemas? • Anonüümsed saavad ainult URLi muutmisega kaitsmata privaatsele lehele ligi.
Levimus ja avastatavus • Levivus on väike. • Rakendused alati korralikult ei kaitse/kontrolli lehe päringuid. • Mõnikord URLi kaitset määratakse conf’is ja süsteem võib muutuda valesti confituks tekitades turvaaugu. • Vigade avastamine on kerge, kuid raskem on leida selliseid URL’e, mis oleksid haavatavad.
Tehniline kahju • … on keskmine. • Sellised vead võivad lubada mõnede või kõikide kontote ründe. • Õnnestumise korral võib ründaja teha kõike, mida ohver teha võib. • Tavaliselt rohkemate õigustega kasutajad on võetud sihtmärgiks.
Äriline kahju • Äriks oluline info võib välja lekkida ja võib tekkida infokadu või oluline muutus. • Äri maine võib kahjustatud saada kui selline haavatavus lekib avalikkusesse.
Kas olen haavatav? • Kõige parem viis välja uurimaks rakenduse URLi ligipääsu uurimist, on läbi vaadata iga leht. • Kas autentimine on vajalik lehele ligipääsul? • Kas leht on ligipääsetav kõigile autentitud kasutajatele? Kui mitte, siis kas tehakse autoriseerimine kontroll, kindlustamaks kasutajaõigust lehe nägemiseks.
Kuidas ennetada? • Rakenduses tuleb teha igale lehele vastav kasutaja autentimine ja autoriseerimine. • Autentimine ja autoriseerimine on rollide põhine minimeerimiseks vaeva vastavate policy’te haldamiseks. • Policy’d peaksid olema seadistatavad vähendamaks kivisse raiutud koodi aspekte. • Vaikimisi keelama kogu ligipääsu, andes ligipääsuõigused igal lehel ainult määratud kasutajatele. • Kui leht on seotud mõne töövooga, siis kontrollida lehe tingimusi, et need oleksid õiged lubamaks ligipääsu.
Näidis • Ründaja lihtsalt muudab URLi. • Järgnevad URL’id vajavad autentimist. • http://example.com/app/getappInfohttp://example.com/app/admin_getappInfo • Kui ründaja pole autenditud, siis tal pole ligipääsu kummalegi. Kui on autenditud, siis ta saab ligi 1.lingile aga mitte teisele. Kui aga ikkagi saab ligi ka teisele, siis on süsteemis turvaviga.