JSON-kaappaus viittaa tietoturva-aukkoon, joka hyödyntää verkkoselainten eri toimialueiden käytäntöjä varastaakseen arkaluontoisia tietoja JSON-vastauksesta. JSON, joka tarkoittaa JavaScript Object Notationia, on kevyt tiedonvaihtoformaatti, jota käytetään yleisesti asiakas-palvelin -viestinnässä web-sovelluksissa.
JSON-kaappaus toimii seuraavien vaiheiden kautta:
Tietojen hakeminen eri toimialueelta: Kun web-sovellus hakee tietoa eri toimialueelta käyttämällä JavaScriptiä, se tekee yleensä pyynnön API-päätelaitteeseen, joka vastaa JSON-tiedoilla.
Eri toimialueiden pyynnöt: Suojautuakseen cross-site request forgery (CSRF) -hyökkäyksiltä monet web-sovellukset sallivat eri toimialueiden pyynnöt JSON-tiedoille.
Selaimen manipulointi: Hyökkääjä hyödyntää tätä eri toimialueiden käytäntöä huijaamalla uhrin selainta tekemään pyynnön kohdealueelle. Tämä pyyntö sisältää uhrin todennustiedot, kuten evästeet.
Pyyntöjen sieppaaminen ja tiedonsaanti: Hyökkääjän palvelin sieppaa pyynnön ja saa pääsyn JSON-tietoihin, jotka usein sisältävät arkaluonteista tietoa.
Vähentääksesi JSON-kaappauksen riskiä, voit seurata näitä ehkäisyvinkkejä:
Toteuta Cross-Origin Resource Sharing (CORS) palvelimella: CORS:n avulla voit määritellä, mitkä toimialueet saavat pääsyn JSON-tietoihin. Konfiguroimalla CORS oikein voit rajoittaa pääsyn vain luotettuihin ja valtuutettuihin toimialueisiin.
Vältä arkaluonteisten tietojen sisällyttämistä JSON-vastauksiin: On tärkeää varmistaa, että arkaluonteiset tiedot, kuten todennustunnukset tai henkilötiedot (PII), eivät sisälly JSON-vastauksiin. Pitämällä arkaluonteiset tiedot erillään JSON-tiedoista vähennät riskiä, että hyökkääjät pääsevät niihin käsiksi.
Suojaa arkaluonteiset tiedot salauksen ja tokenisoinnin avulla: Arkaluonteisten tietojen salaaminen ennen niiden välittämistä JSON-vastauksissa tuo ylimääräisen suojakerroksen. Tokenisointia voidaan käyttää myös korvaamaan arkaluonteiset tiedot tunnisteilla, mikä edelleen vähentää tietovuotoriskiä.
Vältä document.write
-metodin käyttöä JSON-vastausten käsittelyssä: document.write
-metodi voi aiheuttaa tietoturva-aukkoja sallimalla hyökkääjän lisätä haitallista sisältöä sivulle. Sen sijaan harkitse turvallisempien menetelmien käyttämistä JSON-tietojen dynaamiseen renderöintiin web-sovelluksessasi.
Vuonna 2007 havaittiin JSON-kaappauksen haavoittuvuus Twitterin verkkosivustolla. Haavoittuvuus salli hyökkääjän varastaa käyttäjän yksityisviestejä manipuloimalla palvelimen JSON-vastausta.
Hyökkäys edellytti, että uhri vietiin erityisesti muotoillulle verkkosivulle, joka teki eri toimialueiden JSON-pyyntöjä Twitterin API:hin. Kun vastaus saatiin, hyökkääjän JavaScript-koodi pystyi käsittelemään JSON-tietoja, mukaan lukien käyttäjän yksityisviestit.
Twitter korjasi nopeasti tämän haavoittuvuuden toteuttamalla vastatoimenpiteitä, kuten käyttämällä while(1);
-etuliitettä JSON-kaappaushyökkäysten estämiseksi.
JSON with Padding (JSONP) on vaihtoehtoinen lähestymistapa JSON-pohjaiseen viestintään, joka on haavoittuva JSON-kaappauksille.
JSONP mahdollistaa ulkoisen JavaScript-tiedoston sisällyttämisen eri toimialueelta. Hyökkääjä voi hyödyntää tätä mekanismia syöttääkseen haitallista koodia JSONP-vastaukseen, mikä voi vaarantaa käyttäjän selaimen ja tietojen turvallisuuden.
JSONP:hen liittyvien riskien vähentämiseksi on oleellista validoida ja puhdistaa JSONP-vastaus palvelinpuolella ja varmistaa, että vain luotetut lähteet saavat tarjota JSONP-takaisinkutsuja.
JSON-kaappaus on ensisijaisesti asiakaspuolen tietoturvaongelma, ja sen onnistunut hyödyntäminen vaatii yhdistelmän haavoittuvuuksia. Viime vuosina selainten tietoturvan parannukset, kuten SameSite-evästeet ja tiukemmat CORS-käytännöt, ovat tehneet näiden hyökkäysten suorittamisesta vaikeampaa hyökkääjille.
On syytä huomata, että termi "JSON-kaappaus" ei ole yleisesti käytetty tietoturvayhteisössä. Sen sijaan hyökkäystä kutsutaan yleensä "JSONP-kaappaukseksi" tai "Cross-Domain JSON-kaappaukseksi."
Jotkut väittävät, että JSON-kaappauksen estämiseen liittyvän vastuun ei tulisi olla pelkästään web-sovelluskehittäjien. Myös verkkoselainten ja verkkostandardien tulisi osallistua tiukempien tietoturvatoimien täytäntöönpanoon tämän haavoittuvuuden lievittämiseksi.
Cross-Site Scripting (XSS): Hyökkäystyyppi, jossa haitallista skriptiä lisätään verkkosivuille, joita muut käyttäjät katsovat.
Cross-Origin Resource Sharing (CORS): Mekanismi, joka mahdollistaa resurssien pyytämisen toisesta toimialueesta.
Cross-Site Request Forgery (CSRF): Hyökkäys, joka pakottaa loppukäyttäjän suorittamaan ei-toivottuja toimia web-sovelluksessa, johon he ovat autentikoituneet.