Žiniatinklio programavimas

Rasės sąlygų pažeidžiamumai žiniatinklio programose

Rasės sąlygų pažeidžiamumai žiniatinklio programose
Kai žiniatinklio programa, sukonfigūruota valdyti funkcijas fiksuota seka, reikalinga vienu metu atlikti dvi ar daugiau operacijų, įvyksta lenktynių būklės ataka. Ši technika naudoja laiko atidėjimą nuo paslaugos įvedimo iki saugos kontrolės. Ši ataka gali būti vykdoma vienu iš dviejų būdų, pagrįstų daugiagijėmis programomis: įsibrovimas dėl nepatikimų procesų ir įsibrovimas dėl patikimo proceso, galinčio turėti tas pačias ir lygias teises.

Skirtingi procesai gali sąveikauti be tinkamų priemonių. Šios atakos taip pat žinomos kaip „Check of Time“, „Time of Use“ atakos arba „TOC / TOU“ atakos. Lenktynių sąlygų pažeidžiamumai pirmiausia būna dėl pagrindinių programavimo klaidų, kurias paprastai kuria kūrėjai, ir šios gedimai pasirodė brangūs. Kenkėjiški subjektai išnaudojo lenktynių sąlygas daugybei kenksmingų tikslų, t.e., nuo nemokamų čekių gavimo, kad apiplėštų pinigus iš internetinių sąskaitų ir investicinių firmų.

Tarkime, kad dvi lygiagrečios vykdymo gijos bando padidinti visuotinio kintamojo vertę 5. Galų gale tada visuotinio kintamojo vertė būtų 10. Tačiau jei visos gijos vykdomos vienu metu, vykdymas gali būti neteisingas be išteklių užrakto ar sinchronizavimo. Kai pirmoji gija atlieka tam tikrus manipuliavimus tuo visuotiniu kintamuoju, antroji gija ją perskaito ir pradeda daryti kitas manipuliacijas. Šiuo atveju galutinė vertė nebus tokia, kokios tikėtasi.

Taip atsitinka, nes vieno gijos nutraukimo poveikis priklauso nuo kito gavimo rezultatų. Kai abi gijos bus vykdomos vienu metu, bus nenumatytų pasekmių.

Lenktynių būklės atakų apimtis:

Įsivaizduokite, kad viskas, kas yra šiek tiek kritiškiau, vykdoma dviem aukščiau pateikto pavyzdžio gijomis, pavyzdžiui, keitimasis pinigais tarp banko sąskaitų. Norint teisingai išsiųsti pinigus, programa turės atlikti šias užduotis tokia seka; Patikrinkite, ar siuntėjo sąskaitoje yra pakankamas likutis, pridėkite pinigų į gavėjo sąskaitą ir atskaitykite iš siuntėjo sąskaitos. Bet jei tuo pačiu metu pateikiate dvi užklausas, galite suaktyvinti sąlygą, kai keičiasi gijų vykdymo seka. Tokioje situacijoje jūs gausite kitą sumą, nei tikėtasi.

Egoras Homakovas „Starbucks“ svetainėje rado pažeidžiamumą dėl lenktynių sąlygų. Jis atrado būdą, kaip nemokamai susikurti begalę kreditų „Starbucks“ dovanų kuponuose, naudojant skirtingas naršykles su skirtingais slapukais.

Ryški „Meltdown“ ataka yra lenktynių sąlygų pažeidžiamumo pavyzdys. Atliekant išardymo ataką silpnumą sukelia lygiagretus duomenų gavimo iš atminties apdorojimas ir autentifikavimas, ar vartotojui leidžiama pasiekti atmintį. Šis trūkumas leidžia įrankiui išvengti standartinių privilegijų patikrinimų, kurie atskiria atakos mechanizmą nuo prieigos prie OS duomenų. Ši spraga leidžia bet kokiam neteisėtam procesui peržiūrėti duomenis ir informaciją iš bet kurio kito adreso, susijusio su dabartinės pažangos būsena atmintyje. Netinkamo vykdymo metu informacija iš nepatvirtinto adreso dažnai bus greitai sukrauta į procesoriaus talpyklą, iš kurios informaciją galima atkurti.

Tikrojo gyvenimo atakų scenarijai:

Nuolat pateikdami daugybę užklausų žiniatinklio serveriui, galite ieškoti ir manipuliuoti lenktynių sąlygomis interneto programose. Jei norite sužinoti, ar galite išsiimti daugiau pinigų nei turite savo banko sąskaitoje, naudodamiesi garbanos funkcija, galite vienu metu išsiųsti keletą prašymų išsiimti į serverį.

susisukti (atsiimti 50000) & (atsiimti 50000) & (atsiimti 50000) & (atsiimti 50000) & (atsiimti 50000) & (atsiimti 50000)

Kuo daugiau reikalavimų pateiksite per trumpą laiką, tuo didesnė tikimybė, kad jūsų ataka veiks.

Be to, jei siunčiate asinchronines tolesnių veiksmų užklausas, kelis kartus stebėsite vartotoją, o ne siųsite klaidos atsakymą. Aš.e., jei pridėdami suklastotą antraštę, kurioje yra% s, atsisakydami užklausų naudodami turbo įsibrovėlį, įklijuokite šį pitono kodą:

def followReqs (target, wordlists):
variklis = RequestEngine (galutinis taškas = tikslas.galutinis taškas,
jungtys = 40,
užklausosPerConnection = 100,
vamzdynas = klaidingas
)
i diapazone (40):
variklis.eilė (tikslas.req, str (i), vartai = 'patikrinti')
variklis.„openGate“ („patikrinti“)
variklis.baigta (skirtasis laikas = 60)
def responseHandle (req, įdomu):
stalo.pridėti (req)

Pamatysite „Attack“ mygtuką. Paspaudęs, „Turbo Intruder“ pateikia 40 užklausų ir nuskaito būsenos kodus. Jei matote kelis atsakymus su būsena „201 sugeneruota“, tai reiškia, kad kelis kartus stebėjote asmenį.

Yra lenktynių sąlygų pažeidžiamumas, kuriame galite pasiekti keletą konsolių, siūlomų nemokamoms paskyroms. Dauguma svetainių, kuriose teikiamos nemokamos konsolės, turi nemokamas paskyras, standartinius ir aukščiausios kokybės paketus. Nemokama paskyra suteikia tik 2 arba 3 konsoles vienam vartotojui. Norėdami peržengti šią ribą ir naudoti neribotas konsoles, įsibrėžkite GET užklausą naudodami NULL naudingąją apkrovą kelis kartus, pvz., 100 ar 200. Tada rankiniu būdu iš vartotojo ištrinkite bet kurią iš konsolių, kol veikia gijos.

Išvada:

Kaip priemonė pakenkti patekimo kontrolei, įtraukiamos varžybų sąlygos. Bet kuri programa, kuri priklauso nuo prieigos kontrolės mechanizmų, gali būti pažeidžiama. Dažniausiai finansų įstaigų interneto svetainėse įsilaužėliai naudojasi lenktynių sąlygomis. Įsilaužėliams tai gali suteikti neribotą finansinę naudą, jei bus galima atrasti lenktynes ​​dėl tokios gyvybiškai svarbios savybės kaip grynųjų pinigų išėmimas, pinigų pervedimas ar atsiskaitymas kreditine kortele. Elektroninės prekybos platformos, vaizdo žaidimai ir internetinės balsavimo paslaugos yra kitos didelės rizikos technologijos. Saugaus lygiagretumo įgyvendinimas yra paslaptis, leidžianti išvengti lenktynių sąlygų. Taip pat galite naudoti išteklių užraktus. Taip pat bus įdiegta programavimo kalbų užrakinimo funkcija, turinti lygiagrečių gebėjimų, padedančių išvengti tokių sąlygų. Be to, laikantis saugių kodavimo standartų, t.e., mažiausios privilegijos koncepcija ir audito kodas sumažins programos galimybę pažeisti.

Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...
Nemokami ir atvirojo kodo žaidimų varikliai, skirti kurti „Linux“ žaidimus
Šiame straipsnyje bus pateiktas nemokamų ir atvirojo kodo žaidimų variklių, kurie gali būti naudojami kuriant 2D ir 3D žaidimus „Linux“, sąrašas. Toki...