SQL-injektiohyökkäykset kuuluvat vanhimpiin verkkosovellusten haavoittuvuuksiin – niistä on puhuttu jo 1990-luvun loppupuolelta, mutta ne ovat ajankohtaisia tänäkin päivänä. Tässä tiedotteessa kerrotaan, mitä ne ovat, miten ne toimivat ja miten voit estää ne.
SQL-injektio, josta käytetään joskus lyhennettä SQLi, on haavoittuvuus, jossa hakkeri käyttää osaa koostettu kyselykieli (structured query language, SQL) -koodista manipuloidakseen tietokantaa ja päästääkseen käsiksi mahdollisesti arvokkaaseen tietoon. Se lukeutuu yleisimpiin ja uhkaavimpiin hyökkäystyyppeihin, koska sitä voidaan käyttää mitä tahansa SQL-pohjaista tietokantaa hyödyntävää verkkosovellusta tai verkkosivustoa vastaan (mikä kattaa useimmat sovellukset tai sivustot).
SQL-injektion ymmärtämiseksi on tärkeää tietää, mikä on koostettu kyselykieli (SQL). SQL on kyselykieli, jota käytetään ohjelmoinnissa relaatiotietokantoihin tallennettuihin tietoihin pääsemiseksi, niiden muokkaamiseksi ja poistamiseksi. Koska suurin osa verkkosivustoista ja verkkosovelluksista pohjautuu SQL-tietokantoihin, SQL-injektiohyökkäys voi aiheuttaa vakavia seurauksia organisaatioille.
SQL-kysely on pyyntö, joka lähetetään tietokannalle jonkinlaista toimintaa tai toimintoa varten, kuten tiedon kyselyä tai suoritettavan SQL-koodin toteutusta varten. Esimerkiksi kun sisäänkirjautumistiedot annetaan verkkolomakkeen välityksellä, jotta käyttäjä pääsee sivustolle. Tyypillisesti tämän kaltainen verkkolomake on suunniteltu hyväksymään vain tietynlaisia tietoja, kuten nimi ja/tai salasana. Kun tämä tieto lisätään, se tarkistetaan tietokannan avulla ja jos se täsmää, käyttäjälle sallitaan sisäänpääsy. Jos se ei täsmää, pääsy evätään.
Potentiaalisia ongelmia syntyy, koska useimmissa verkkolomakkeissa ei ole keinoa pysäyttää ylimääräisten tietojen lisäystä lomakkeille. Hakkerit voivat käyttää tätä heikkoutta hyväkseen ja käyttää lomakkeen syöttöruutuja lähettääkseen omat pyyntönsä tietokantaan. Tämä saattaa mahdollistaa sen, että he voivat suorittaa erilaisia rikollisia toimia, arkaluonteisten tietojen varastamisesta tietokannan tietojen peukaloimiseksi omiin tarkoituksiinsa.
Koska suurin osa verkkosivustoista ja palvelimista käyttää tietokantoja, SQL-injektion haavoittuvuudet kuuluvat kyberhyökkäysten vanhimpiin ja levinneisimpiin tyyppeihin. Useat hakkeriyhteisön kehitykset ovat lisänneet tämän tyyppisen hyökkäyksen riskiä, näistä tärkeimmät SQL-injektion tunnistamisen ja hyödyntämisen työkalut. Nämä työkalut ovat vapaasti saatavilla avoimen lähdekoodin kehittäjiltä, ja niiden avulla kyberrikolliset pystyvät tekemään hyökkäyksiä automaattisesti vain muutamassa minuutissa ja pääsemään mihin tahansa tietokannan taulukkoon tai sarakkeesen vain yhdellä napsautuksella ja hyökkäämään prosessiin.
Onnistunut SQL-injektiohyökkäys ei välttämättä näy mitenkään. Joskus siitä on kuitenkin merkkejä, kuten:
Riippuen siitä, miten SQL-injektiot pääsevät taustatietoihin ja miten paljon vahinkoa ne voivat saada aikaan, ne on jaettu kolmeen kategoriaan:
Kaistan sisäinen SQLi:
Tämän tyyppinen SQLi-hyökkäys on helppo hyökkääjille, sillä ne käyttävät samaa viestintäkanavaa hyökkäämiseen ja tulosten keräämiseen. Tällä SQLi-hyökkäyksellä on vielä kaksi variaatiota:
Sokea SQL-injektio:
Tämän tyyppisessä SQLi:ssä hakkerit käyttävät palvelimen vastaus- ja käytösmalleja sen jälkeen, kun he ovat lähettäneet datan tietosisältöä saadakseen lisätietoja sen rakenteesta. Data ei siirry verkkosivuston tietokannasta hyökkääjälle, joten tämä ei näe tietoa kaistan sisäisestä hyökkäyksestä (tämän vuoksi käytetään nimitystä "Sokea SQLi"). Sokea SQLi voidaan luokitella edelleen kahteen alatyyppiin:
Kaistan ulkopuolinen, Out-of-band SQLi:
Tämän tyyppinen SQL-hyökkäys tapahtuu kahdessa eri tilanteessa:
Onnistuneella SQL-injektiohyökkäyksellä voi olla vakavia seurauksia yritykselle. Tämä johtuu siitä, että SQL-injektiohyökkäyksellä voidaan
SQL-injektiohyökkäyksen aiheuttamat tappiot eivät ole vain rahallisia: hyökkäys voi johtaa asiakkaan luottamuksen ja maineen menetykseen, mikäli henkilökohtaisia tietoja, kuten nimiä, osoitteita, puhelinnumeroja ja luottokortin numeroita varastetaan. Kun asiakkaan luottamus on menetetty, sitä voi olla vaikea saada takaisin.
Vuosien mittaan monet yritykset ovat joutuneet SQLi:n kohteeksi. Näihin lukeutuvat myös seuraavat tunnetut nimet:
Fortnite, 2019
Fortnite on verkkopeli, jolla on yli 350 miljoonaa käyttäjää. Vuonna 2019 havaittiin SQL-injektion haavoittuvuus, joka mahdollisti sen, että hakkerit pääsivät käsiksi käyttäjätileihin. Haavoittuvuus korjattiin.
Cisco, 2018
SQL-injektion haavoittuvuus löydettiin Cisco Prime License Manager -ohjelmasta vuonna 2018. Haavoittuvuuden ansiosta hakkerit pääsivät komentotulkkiin järjestelmissä, joissa License Manageria käytettiin. Cisco on sittemmin korjannut haavoittuvuuden.
Tesla, 2014
Vuonna 2014 tietoturvatutkijat ilmoittivat kykeneensä hakkeroimaan Teslan verkkosivuston SQL-injektion avulla, saaneensa järjestelmänvalvojan käyttöoikeudet ja varastaneensa käyttäjätietoja.
SQLi:n usein kysyttyjä kysymyksiä ovat seuraavat:
SQL-injektiohyökkäyksessä hyödynnetään SQL-haittakoodeja taustatietojen tietokannan manipuloimiseen ja yksityisten tietojen saamiseen. Näihin tietoihin voivat lukeutua arkaluonteiset yritystiedot, käyttäjäluettelot tai asiakastiedot. SQL tarkoittaa koostettua kyselykieltä, ja SQL-injektiosta käytetään välillä lyhennettä SQLi.
SQL-injektiohyökkäyksissä hakkerit voivat huijata identiteettinsä suhteen, muuntaa olemassa olevia tietoja, luovuttaa järjestelmän tietoja, tuhota dataa tai tehdä siitä muutoin saavuttamatonta ja ryhtyä tietokantapalvelimen järjestelmänvalvojiksi. SQL-injektiohyökkäykset voivat aiheuttaa huomattavaa haittaa yrityksille ja myös asiakkaiden luottamuksen menettämisen, mikäli luottamuksellisiin käyttäjätietoihin päästään käsiksi.
SQL-injektiohyökkäykset on suhteellisen helppo toteuttaa, ja niiden potentiaalinen tuotto on suuri, joten ne eivät ole harvinaisia. Tilastotiedot vaihtelevat, mutta arvion mukaan SQL-injektiohyökkäykset ovat enemmistönä ohjelmistosovelluksiin kohdistuvissa hyökkäyksissä. Open Web Application Security Project -projektin mukaan injektiohyökkäykset, joihin SQL-injektiot sisältyvät, muodostivat kolmanneksi vakavimman verkkosivustojen turvallisuusriskin vuonna 2021.
Seuraavassa on pääperiaatteet verkkosivustojen ja verkkosovellusten puolustamiseksi yrityksille, jotka haluavat ennaltaehkäistä SQL-injektion:
Henkilökunnan koulutus:lisää tietoisuutta SQLi-riskeistä verkkosovelluksestasi vastuussa olevan tiimin keskuudessa ja anna tarvittavaa tehtäväkohtaista koulutusta kaikille käyttäjille.
Pidä käyttäjien syötteitä silmällä:Kaikenlaiset SQL-kyselyssä käytetyt käyttäjän syötteet aiheuttavat riskin. Kohtele varmennetuilta ja/tai sisäisiltä käyttäjiltä tulevaa syötettä samoin kuin julkista syötettä, kunnes se varmennetaan. Anna SQL-tietokantaan liittyville tileille vain tarvittavat vähimmäiskäyttöoikeudet. Käytä valkoisia listoja vakiokäytäntöinä mustien listojen sijaan käyttäjän syötteen varmennuksessa ja suodattamisessa.
Käytä viimeisimpiä versioita:On tärkeää käyttää viimeisintä kehitysympäristön versiota suojan maksimoimiseen, sillä vanhemmissa versioissa ei välttämättä ole ajantasaisia turvallisuusominaisuuksia. Muista asentaa viimeisin ohjelmisto ja tietoturvapäivitykset, kun saatavilla.
Skannaa verkkosovelluksia jatkuvasti:
Käytä kattavia sovelluksen suorituskyvyn hallinnointityökaluja. Verkkosovellusten säännöllinen skannaus tuo esiin mahdollisia haavoittuvuuksia ja puuttuu niihin ennen kuin niistä syntyy vakavia vahinkoja.
Käytä palomuuria:Verkkosovelluksen palomuuria (WAF) käyetään usein SQLi:n sekä muiden verkkouhkien pois suodattamiseksi. WAF tukeutuu laajaan ja usein päivitettyyn allekirjoitusten luetteloon, mikä mahdollistaa haitallisten SQL-kyselyjen pois suodattamisen. Yleensä luettelossa on allekirjoitukset tiettyihin hyökkäysvektoreihin keskittymiseen, ja se päivitetään usein juuri havaittujen haavoittuvuuksien osalta.
Aiheeseen liittyvät tuotteet:
Lue lisää: