Web-ohjelmointi

Kilpailuehtojen haavoittuvuudet verkkosovelluksissa

Kilpailuehtojen haavoittuvuudet verkkosovelluksissa
Kun verkkosovellusta, joka on määritetty hallitsemaan toimintoja kiinteässä järjestyksessä, vaaditaan kahden tai useamman operaation suorittamiseen samanaikaisesti, tapahtuu kilpailutilahyökkäys. Tämä tekniikka hyödyntää aikaviivettä palvelun käyttöönoton ja turvaohjauksen välillä. Tämä hyökkäys voidaan toteuttaa jommallakummalla kahdesta tavasta, perustuen monisäikeisiin sovelluksiin: epäluotettavien prosessien aiheuttama tunkeutuminen ja luotettavan prosessin aiheuttama tunkeutuminen, jolla voi olla samat ja yhtäläiset oikeudet.

Eri prosessit voivat olla vuorovaikutuksessa toistensa kanssa ilman riittäviä toimenpiteitä. Nämä hyökkäykset tunnetaan myös nimellä Check of Check, Time of Use tai TOC / TOU-hyökkäykset. Kilpailuehtojen haavoittuvuudet sattuu olemaan ensinnäkin kehittäjien yleensä luomien ohjelmointivirheiden takia, ja nämä epäonnistumiset ovat osoittautuneet kalliiksi. Haitalliset yhteisöt ovat hyödyntäneet kilpailuolosuhteita moniin haitallisiin tarkoituksiin, so.e., saamasta ilmaisia ​​tositteita ryöstämään rahaa verkkotileiltä ja sijoituspalveluyrityksiltä.

Oletetaan, että kaksi rinnakkaista suoritusketjua yrittää nostaa globaalin muuttujan arvoa viidellä. Viime kädessä sitten globaalin muuttujan arvo olisi 10. Jos kaikki säikeet kuitenkin suoritetaan samanaikaisesti, suoritus voi olla väärä ilman resurssien lukituksia tai synkronointia. Kun ensimmäinen ketju tekee joitain manipulaatioita kyseiseen globaaliin muuttujaan, toinen ketju lukee sen ja alkaa tehdä muita manipulointeja. Tässä tapauksessa lopullinen arvo ei olisi odotettua.

Tämä tapahtuu, koska yhden ketjun päättymisen vaikutus riippuu toisen ketjun lopputuloksesta. Kun nämä kaksi ketjua suoritetaan samanaikaisesti, seuraukset ovat tahattomat.

Kilpailuolosuhteiden hyökkäysten laajuus:

Kuvittele, että yllä olevan esimerkin kaksi ketjua toteuttaa jotain hieman kriittisempää, kuten rahanvaihto pankkitilien välillä. Rahan lähettämiseksi oikein ohjelman on suoritettava nämä tehtävät tässä järjestyksessä; Tarkista, onko lähettäjän tilillä riittävästi saldoa, lisää rahaa vastaanottajan tilille ja vähennä sitten lähettäjän tililtä. Mutta jos lähetät samanaikaisesti kaksi pyyntöä, saatat pystyä laukaisemaan ehdon, jossa säikeiden suoritusjärjestys muuttuu. Tällaisessa tilanteessa päädyt eri määrään kuin odotettiin.

Kilpailuolosuhteiden haavoittuvuuden löysi Egor Homakov Starbucks-verkkosivustolta. Hän löysi tavan luoda ääretön määrä luottoa Starbucks-lahjakortteihin ilmaiseksi käyttämällä eri selaimia ja erilaisia ​​evästeitä.

Näkyvä Meltdown-hyökkäys on esimerkki kilpailutilanteen haavoittuvuudesta. Sulahyökkäyksessä heikkous laukaisee muistin tietojen noutamisen rinnakkaiskäsittelyllä ja todennuksella, sallitaanko käyttäjän käyttää muistia vai ei. Tämä virhe antaa työkalulle mahdollisuuden välttää tavanomaiset käyttöoikeustarkistukset, jotka erottavat hyökkäysmekanismin käyttöjärjestelmän tietojen käyttämisestä. Tämä porsaanreikä johtaa siihen, että luvaton prosessi voi tarkastella tietoja kaikista muista osoitteista, jotka on liitetty nykyisen edistymisen tilaan muistissa. Viallisen suorituksen aikana tiedot hyväksymättömästä osoitteesta pinotaan usein nopeasti suorittimen välimuistiin, josta tiedot voidaan palauttaa.

Tosielämän hyökkäysskenaariot:

Lähettämällä useita palvelupyyntöjä verkkopalvelimelle jatkuvasti voit etsiä ja manipuloida kilpailuolosuhteita verkkosovelluksissa. Jos haluat nähdä, voitko nostaa enemmän rahaa kuin pankkitililläsi, käpristystoiminnon avulla, voit lähettää samanaikaisesti useita nostopyyntöjä palvelimelle.

käpristyminen (vedä 50000) & (vedä 50000) & (vedä 50000) & (vedä 50000) & (vedä 50000) & (vedä 50000)

Mitä enemmän vaatimuksia teet lyhyessä ajassa, sitä suuremmat mahdollisuudet hyökkäyksesi toimivat.

Lisäksi, jos lähetät asynkronisia seurantapyyntöjä, seuraat käyttäjää useita kertoja virhevasteen lähettämisen sijaan. Minä.e., jos lisäät väärennetyn otsikon, joka sisältää% s, samalla kun pudotat pyyntöjä turbo-tunkeilijan avulla, ja liitä seuraava python-koodi:

def followReqs (kohde, sanalistat):
moottori = RequestEngine (päätepiste = kohde.päätepiste,
concurrentConnections = 40,
requestPerConnection = 100,
putki = väärä
)
i: lle alueella (40):
moottori.jono (kohde.kysy, str (i), portti = 'tarkista')
moottori.openGate ('tarkista')
moottori.valmis (aikakatkaisu = 60)
def responseHandle (kysy, mielenkiintoinen):
pöytä.lisää (kysy)

Näet Attack-painikkeen. Painamisen jälkeen Turbo Intruder lähettää 40 kyselyä ja skannaa tilakoodit. Jos näet useita vastauksia, joiden tila on 201 luotu, se tarkoittaa useita kertoja, kun olet seurannut henkilöä.

Kilpailuolosuhteissa on haavoittuvuus, jossa voit käyttää useita konsoleita, joita tarjotaan ilmaisille tileille. Suurimmalla osalla ilmaisia ​​konsoleita tarjoavista verkkosivustoista on ilmaiset tilit, vakio- ja premium-paketit. Ilmaiset tilit tarjoavat vain 2 tai 3 konsolia käyttäjää kohden. Tämän rajan ylittämiseksi ja rajoittamattomien konsolien käyttämiseksi tunkeudu GET-pyyntöön NULL-hyötykuormilla useita kertoja, kuten 100 tai 200. Poista sitten jokin konsoleista manuaalisesti käyttöliittymästä, kun ketjut ovat käynnissä.

Päätelmä:

Kilpailuolosuhteet sisältyvät pääsyvalvonnan heikentämiseen. Kaikki pääsynvalvonnan mekanismeista riippuvat ohjelmat voivat olla haavoittuvia. Hakkerit hyödyntävät suurimmaksi osaksi rahoituslaitosten verkkosivuilla kilpailuolosuhteita. Koska se voi johtaa rajoittamattomiin taloudellisiin etuihin hakkereille, jos kilpailutilanne löydetään elintärkeästä ominaisuudesta, kuten käteisnosto, rahansiirto tai luottokorttimaksu. Verkkokaupan alustat, videopelit ja online-äänestyspalvelut ovat muita korkean riskin tekniikoita. Turvallisen samanaikaisuuden toteuttaminen on salaisuus kilpailuehtojen välttämiselle. Ja voit käyttää myös resurssilukkoja. Siellä on myös sisäänrakennettu lukitusominaisuus ohjelmointikielille, joilla on samanaikaisuusominaisuudet, jotka auttavat estämään tällaiset olosuhteet. Lisäksi noudattaen turvallisia koodausstandardeja, so.e., vähiten oikeuksien käsite ja tarkastuskoodi vähentävät ohjelman mahdollisuutta rikkoa.

Hyödyllisiä työkaluja Linux-pelaajille
Jos haluat pelata pelejä Linuxissa, on todennäköistä, että olet käyttänyt sovelluksia ja apuohjelmia, kuten Wine, Lutris ja OBS Studio, pelikokemuksen...
HD Remastered Games for Linux that Never had a Linux Release Earlier
Many game developers and publishers are coming up with HD remaster of old games to extend the life of franchise, please fans requesting compatibility ...
Kuinka käyttää AutoKey-toimintoa Linux-pelien automatisointiin
AutoKey on työpöydän automaatioapuohjelma Linuxille ja X11: lle, ohjelmoitu Python 3, GTK ja Qt. Komentosarjojen ja MACRO-toimintojen avulla voit auto...