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.