Koodin lisäys, jota usein kutsutaan koodin etäsuorittamiseksi (RCE), on hyökkäys, jonka hyökkääjät kykenevät pistämään ja suorittamaan haitallista koodia sovellukseen. injektiohyökkäys. Tämä vieras koodi voi rikkoa tietoturvaa, vaarantaa tietokannan eheyden tai yksityiset ominaisuudet. Monissa tapauksissa se voi ohittaa todennuksen hallinnan, ja yleensä nämä hyökkäykset liittyvät sovelluksiin, jotka riippuvat suorituksesta käyttäjän syötteestä.
Yleensä sovellukset ovat haavoittuvampia, jos koodi suoritetaan kulkematta ensin vahvistusta. Alla on esitetty yksinkertainen haavoittuvan koodin tapaus.
Yllä olevassa esimerkissä PHP-tietosivu on haavoittuva ja se näkyy, jos URL-osoite http://example.com/?code=phpinfo (); ajetaan.
Koska käyttäjien vuorovaikutus sovellusten kanssa on yhä tärkeämpää nykypäivän verkkomaailmassa, koodinsyöttö on kasvanut ja siitä on tullut todellinen uhka monille online-resursseille.
Koodinjektiotyypit
Koodinjektioita on pääasiassa neljää tyyppiä: SQL-injektio, Script-injektio, Shell-injektio ja Dynaaminen arviointi. Kaikilla näillä on sama toimintaperiaate, eli koodi tuodaan sovelluksiin ja suoritetaan sovelluksissa, mutta kaksi, joihin kiinnitän huomiota, ovat SQL-injektio ja Script-injektio.
Kuinka SQL-injektiot toimivat
SQL-injektion tapauksessa hyökkäyksen tarkoituksena on korruptoida laillinen tietokantakysely väärennettyjen tietojen tuottamiseksi. Hyökkääjän on ensin löydettävä kohdennettuun verkkosovellukseen tulo, joka sisältyy SQL-kyselyyn.
Tämä menetelmä on tehokas vain, jos verkkosovelluksessa on käyttäjän syötettä SQL-käskyyn. Hyötykuorma (haitallinen SQL-käsky) voidaan sitten lisätä ja suorittaa tietokantapalvelinta vastaan.
Seuraava palvelinpuolen pseudokoodi on yksinkertainen esimerkki todennuksesta, joka voi osoittautua haavoittuvaksi SQL-injektioille.
Yllä olevaan koodiin hyökkääjä voi lisätä hyötykuorman, joka muuttaisi tietokantapalvelimen suorittamaa SQL-käskyä. Esimerkki asettaa salasanakentän:
password’ OR 1=1
Tämä aiheuttaa seuraavan käskyn suorittamisen automaattisesti tietokantapalvelimelle:
SELECT id FROM users WHERE username=’username’ AND password=’password’ OR 1=1
Mitä SQL-injektio voi tehdä
Tämä on yleisin koodinsyötön tyyppi. Kun otetaan huomioon, että SQL on kieli, jota käytetään relaatiotietokantojen hallintajärjestelmiin (RDBMS) tallennettujen tietojen käsittelyssä, hyökkäystä, jolla on valtuudet antaa ja suorittaa SQL-käskyjä, voidaan käyttää tietojen käyttämiseen, muokkaamiseen ja jopa poistamiseen.
Se voi antaa hyökkääjälle mahdollisuuden ohittaa todennuksen, saada koko tietokantaan tallennettu tieto paljastettua, vaarantaa tietojen eheyden ja aiheuttaa kieltäytymisongelmia, muuttaa saldoja ja mitätöidä tapahtumia.
Kuinka estää SQL-injektiot
Muutaman askeleen avulla sovelluksesi on vähemmän haavoittuva, mutta ennen mitään näistä vaiheista on parasta olettaa, että kaikki käyttäjän lähettämät tiedot ovat pahoja, eikä luottaa ketään. Sitten voit harkita seuraavaa:
- Poista dynaamisen SQL: n käyttö käytöstä – tämä tarkoittaa, ettet rakenna tietokantakyselyjä käyttäjän syötteillä. Tarvittaessa puhdista, vahvista ja poista arvot ennen kyselyn tekemistä käyttäjän syöttötiedoilla.
- Käytä palomuuria – Verkkosovellusten palomuuri (ohjelmisto tai sovelluspohjainen) auttaa suodattamaan haitallisia tietoja.
- Osta parempia ohjelmistoja – Tämä tarkoittaa yksinkertaisesti sitä, että kooderit vastaavat virheiden tarkistamisesta ja korjaamisesta.
- Salaa tai hajauta salasanoja ja kaikki muut luottamukselliset tiedot, joihin sinulla on, myös liitosmerkkijonot.
- Vältä yhteyden muodostamista tietokantaan järjestelmänvalvojan etuoikeutetuilla tileillä ellet ehdottomasti tarvitse.
Script-injektio
Tämä tietoturva-aukko on uhka, jonka avulla hyökkääjä voi pistää haitallista koodia suoraan datapohjaisten verkkosivustojen verkkomuotojen läpi käyttöliittymän elementtien kautta. Tätä hyökkäystä kutsutaan usein Cross-Site Scriptingiksi tai XSS: ksi. <script>
, <meta>
, <html>
, <body>
, <embed>
, <frame>
, <frameset>
, <img>
tagit ovat kohdennetuimpia komentosarjojen injektioille.
Kuinka estää komentosarjojen injektiot
Komentosarjainjektioiden estämisen vaiheet riippuvat käyttämästäsi ohjelmointikoodista. Yleensä haluat:
- vahvista ja puhdista käyttäjän syötteet (minkä tahansa muotoiset kentät) poistamalla tai välttämällä mahdollisesti haitallista sisältöä
- siivota kyselymerkkijonot URL-osoitteissa
- tarkista ja puhdista kaikenlaiset tiedot, taulukot ja objektit ennen suorittamista palvelimella
Johtopäätös
Yksinkertaisesti sanottuna ennaltaehkäisy on parempi kuin parannuskeino. Uusien tekniikan päivitysten myötä järjestelmiemme altistuminen uhkaa enemmän. Jotta pysyt ajan tasalla asioista, on tärkeää, että sinulla on uusimmat korjaustiedostot ja päivitykset, ja pidä silmällä parhaita käytäntöjä. Tämä vaikeuttaa näiden haitallisten hyökkäysten uhreja.