Spletno programiranje

Ranljivosti pogojev dirke v spletnih aplikacijah

Ranljivosti pogojev dirke v spletnih aplikacijah
Ko je za izvajanje dveh ali več operacij hkrati potrebna spletna aplikacija, ki je konfigurirana za upravljanje funkcij v fiksnem zaporedju, pride do napada dirkalnih pogojev. Ta tehnika izkorišča časovni zamik med uvedbo storitve in varnostnim nadzorom. Ta napad lahko izvedemo na dva načina, in sicer na podlagi večnitnih aplikacij: vdor, ki ga povzročijo nezaupljivi procesi, in vdor zaupanja vrednega postopka, ki bi lahko imel enake in enake pravice.

Različni procesi lahko medsebojno vplivajo brez ustreznih ukrepov. Ti napadi so znani tudi kot napadi časa preverjanja, napadi časa uporabe ali napadi TOC / TOU. Ranljivosti pogojev dirke so tam na prvem mestu zaradi osnovnih programskih napak, ki jih razvijalci običajno ustvarijo, in te napake so se izkazale za drage. Zlonamerni subjekti so dirkalne pogoje izkoriščali za številne zlonamerne namene, tj.e., od pridobivanja brezplačnih bonov za oropanje denarja s spletnih računov in investicijskih podjetij.

Predpostavimo, da dve vzporedni izvedbeni niti poskušata dvigniti vrednost globalne spremenljivke za 5. Konec koncev bi imela globalna spremenljivka vrednost 10. Če pa se vse niti izvajajo sočasno, je izvedba lahko napačna brez zaklepanja virov ali sinhronizacije. Ko prva nit izvaja nekaj manipulacij s to globalno spremenljivko, jo druga nit prebere in začne izvajati nekatere druge manipulacije. V tem primeru končna vrednost ne bi bila pričakovana.

To se zgodi, ker je učinek zaključka ene niti odvisen od izida druge. Ko se obe niti izvedeta hkrati, bo prišlo do neželenih posledic.

Obseg napadov na dirkalne pogoje:

Predstavljajte si, da obe niti v zgornjem primeru izvršita kaj bolj kritičnega, na primer izmenjavo denarja med bančnimi računi. Za pravilno pošiljanje denarja bo moral program te naloge izvršiti v tem zaporedju; Preverite, ali je na pošiljateljevem računu dovolj sredstev, dodajte denar na račun prejemnika in nato odštejte od računa pošiljatelja. Če pa hkrati oddate dve zahtevi, boste morda lahko sprožili stanje, v katerem se spremeni zaporedje izvajanja niti. V takšni situaciji boste na koncu dobili drugačen znesek od pričakovanega.

Ranljivost pogojev dirke je na spletni strani Starbucks našel Egor Homakov. Odkril je način, kako brezplačno ustvariti neskončno dobroimetje na darilnih bonih Starbucksa z uporabo različnih brskalnikov z različnimi piškotki.

Izrazit napad Meltdown je primer ranljivosti pogojev dirke. Pri napadu taljenja šibkost sproži vzporedna obdelava pridobivanja podatkov iz pomnilnika in preverjanje pristnosti, ali lahko uporabnik dostopa do pomnilnika ali ne. Ta napaka omogoča, da se orodje izogne ​​standardnim preverjanjem pravic, ki ločujejo napadalni mehanizem od dostopa do podatkov OS. Rezultat te vrzeli je, da lahko kateri koli nepooblaščeni postopek vidi podatke in informacije s katerega koli drugega naslova, povezanega s trenutnim stanjem napredka v pomnilniku. V postopku napačnega izvajanja se bodo informacije z neodobrenega naslova pogosto hitro zložile v predpomnilnik CPU-ja, iz katerega je mogoče informacije obnoviti.

Scenariji resničnega napada:

S stalnim oddajanjem številnih zahtev spletnemu strežniku lahko v spletnih aplikacijah iščete in manipulirate z dirkalnimi pogoji. Če želite preveriti, ali lahko s funkcijo curl dvignete več denarja, kot ga imate na svojem bančnem računu, lahko hkrati strežniku pošljete več zahtev za dvig.

curl (umik 50000) & (umik 50000) & (umik 50000) & (umik 50000) & (umik 50000) & (umik 50000)

Več zahtev, kot jih vložite v kratkem času, večje so možnosti, da bo vaš napad deloval.

Poleg tega, če pošljete asinhrone nadaljnje zahteve, boste uporabniku večkrat sledili, namesto da bi poslali odgovor na napako. jaz.e., če dodate ponarejeno glavo, ki vsebuje% s, medtem ko spustite zahteve s turbo vsiljivcem in prilepite naslednjo kodo python:

def followReqs (target, wordlists):
engine = RequestEngine (končna točka = cilj.končna točka,
concurrentConnections = 40,
questionsPerConnection = 100,
cevovod = False
)
za i v območju (40):
motor.čakalna vrsta (target.req, str (i), gate = 'check')
motor.openGate ('check')
motor.dokončano (časovna omejitev = 60)
def responseHandle (req, zanimivo):
tabela.dodaj (zahteva)

Videli boste gumb Attack. Po pritisku na to Turbo Intruder odda 40 poizvedb in skenira statusne kode. Če vidite več odgovorov s statusom 201 Generated, to pomeni, da ste večkrat sledili osebi.

Obstaja ranljivost pogojev dirke, v kateri lahko dostopate do več konzol, ki so na voljo brezplačnim računom. Večina spletnih mest, ki ponujajo brezplačne konzole, ima brezplačne račune, standardne in premium pakete. Brezplačni računi nudijo le 2 ali 3 konzole na uporabnika. Če želite preseči to omejitev in uporabiti neomejene konzole, večkrat vdrite v zahtevo GET z NULL koristnimi obremenitvami, na primer 100 ali 200. In nato iz uporabniškega vmesnika ročno izbrišite katero koli konzolo med izvajanjem niti.

Zaključek:

Kot sredstvo za spodkopavanje nadzora dostopa so vključeni dirkalni pogoji. Vsak program, ki je odvisen od mehanizmov nadzora dostopa, je lahko ranljiv. Na spletnih mestih finančnih institucij hekerji večinoma izkoriščajo dirkalne razmere. Ker bi hekerju lahko prišlo do neomejenih finančnih koristi, če bi lahko odkrili dirkalne pogoje za bistveno značilnost, kot je dvig gotovine, prenos denarja ali plačilo s kreditno kartico. Platforme za e-poslovanje, video igre na srečo in storitve spletnega glasovanja so druge visoko tvegane tehnologije. Izvajanje varne sočasnosti je skrivnost izogibanja dirkaškim pogojem. Lahko pa uporabite tudi zaklepanje virov. Vgrajena bo tudi funkcija zaklepanja za programske jezike s sočasnimi zmožnostmi, ki pomagajo preprečevati takšne pogoje. Poleg tega v skladu s standardi varnega kodiranja, tj.e., Koncept najmanj privilegij in revizijska koda bosta zmanjšala možnost kršitve programa.

Kako razviti igro na Linuxu
Pred desetletjem le malo uporabnikov Linuxa napoveduje, da bo njihov najljubši operacijski sistem nekoč priljubljena igralna platforma za komercialne ...
Odprtokodna vrata komercialnih igralnih sistemov
Brezplačne, odprtokodne in medplatformacijske igre, ki jih lahko uporabite za igranje starih, pa tudi nekaterih dokaj nedavnih naslovov iger. V tem čl...
Najboljše igre ukazne vrstice za Linux
Ukazna vrstica ni le vaš največji zaveznik pri uporabi Linuxa - lahko je tudi vir zabave, saj jo lahko uporabljate za igranje številnih zabavnih iger,...