Webové programování

Zranitelnost podmínek závodu ve webových aplikacích

Zranitelnost podmínek závodu ve webových aplikacích
Když je webová aplikace nakonfigurovaná pro správu funkcí v pevné sekvenci vyžadována k současnému provádění dvou nebo více operací, dojde k útoku na závod. Tato technika využívá časové zpoždění mezi zavedením služby a kontrolou bezpečnosti. Tento útok lze provést jedním ze dvou způsobů založených na vícevláknových aplikacích: narušení způsobené nedůvěryhodnými procesy a narušení způsobené důvěryhodným procesem, který by mohl mít stejná a stejná práva.

Různé procesy mohou vzájemně interagovat bez odpovídajících opatření. Tyto útoky jsou také známé jako útoky typu Time of Check, Time of Use nebo TOC / TOU. Zranitelnost podmínek závodu je na prvním místě kvůli základním programovacím chybám, které vývojáři obvykle vytvářejí, a tato selhání se ukázala jako nákladná. Škodlivé entity zneužívaly rasové podmínky pro mnoho škodlivých účelů, tj.E., od získávání poukazů zdarma k okrádání peněz z online účtů a investičních společností.

Předpokládejme, že dvě paralelní podpůrná vlákna se pokusí zvýšit hodnotu globální proměnné o 5. Nakonec by tedy globální proměnná měla hodnotu 10. Pokud však všechna vlákna běží souběžně, provádění může být špatné bez zámků prostředků nebo synchronizace. Když první vlákno provádí nějaké manipulace s touto globální proměnnou, druhé vlákno to přečte a začne dělat další manipulace. V tomto případě by konečná hodnota nebyla podle očekávání.

K tomu dochází, protože účinek ukončení jednoho vlákna závisí na výsledku druhého. Pokud jsou dvě vlákna spuštěna souběžně, budou to mít nezamýšlené důsledky.

Rozsah útoků na závodní podmínky:

Představte si, že cokoli trochu kritičtějšího provádějí dvě vlákna výše uvedeného příkladu, jako je směna peněz mezi bankovními účty. Aby bylo možné správně poslat peníze, program bude muset provést tyto úkoly v tomto pořadí; Zkontrolujte, zda je na účtu odesílatele dostatečný zůstatek, přidejte peníze na účet příjemce a poté odečtěte z účtu odesílatele. Ale pokud současně odešlete dva požadavky, můžete být schopni spustit podmínku, ve které se změní posloupnost provádění podprocesu. V takové situaci skončíte s jinou částkou, než jste čekali.

Zranitelnost rasových podmínek našel Egor Homakov na webu Starbucks. Objevil způsob, jak zdarma získat nekonečný kredit na dárkových poukazech Starbucks pomocí různých prohlížečů s různými soubory cookie.

Prominentní útok Meltdown je příkladem zranitelnosti rasových podmínek. Při útoku roztavení je slabost spuštěna paralelním zpracováním načítání dat z paměti a ověřováním, zda má uživatel přístup do paměti či nikoli. Tato chyba umožňuje nástroji vyhnout se standardním kontrolám oprávnění, které oddělují mechanismus útoku od přístupu k datům OS. Výsledkem této mezery je umožnit jakémukoli neautorizovanému procesu prohlížet data a informace z jakékoli jiné adresy připojené ke stavu aktuálního postupu v paměti. V procesu chybného provádění se informace z neschválené adresy často rychle ukládají do mezipaměti CPU, ze které lze informace obnovit.

Scénáře útoku v reálném životě:

Neustálým odesíláním mnoha požadavků na webový server můžete vyhledávat a manipulovat s rasovými podmínkami ve webových aplikacích. Pokud chcete zjistit, zda můžete vybrat více peněz, než kolik máte na svém bankovním účtu, pomocí funkce zvlnění můžete současně odeslat několik žádostí o výběr na server.

zvlnění (výběr 50000) & (výběr 50000) & (výběr 50000) & (výběr 50000) & (výběr 50000) & (výběr 50000)

Čím více požadavků za krátkou dobu zaznamenáte, tím vyšší je šance, že váš útok bude fungovat.

Kromě toho, pokud odešlete asynchronní požadavky na následnou kontrolu, budete místo odeslání chybové odpovědi několikrát sledovat uživatele. Já.E., pokud přidáte falešné záhlaví obsahující% s při rušení požadavků pomocí turbo vetřelce a vložíte následující kód pythonu:

def followReqs (cíl, seznamy slov):
engine = RequestEngine (endpoint = cíl.koncový bod,
concurrentConnections = 40,
requestsPerConnection = 100,
pipeline = False
)
pro i v rozsahu (40):
motor.fronta (cíl.req, str (i), gate = 'check')
motor.openGate ('zkontrolovat')
motor.kompletní (časový limit = 60)
def responseHandle (požadavek, zajímavý):
stůl.přidat (požadavek)

Uvidíte tlačítko útoku. Poté stiskne Turbo Intruder 40 dotazů a naskenuje stavové kódy. Pokud vidíte více odpovědí se stavem 201 Generováno, znamená to, že jste danou osobu několikrát sledovali.

Existuje chyba zabezpečení, ve které můžete přistupovat k více konzolám nabízeným k bezplatným účtům. Většina webů poskytujících bezplatné konzoly má účty zdarma, standardní a prémiové balíčky. Bezplatné účty poskytují pouze 2 nebo 3 konzoly na uživatele. Chcete-li tento limit prolomit a používat neomezené množství konzolí, narušte požadavek GET pomocí NULL užitečných dat několikrát, například 100 nebo 200. A poté některou z konzol ručně odstraňte z uživatelského rozhraní, zatímco jsou vlákna spuštěna.

Závěr:

Jako prostředek k oslabení kontroly přístupu jsou zahrnuty podmínky závodu. Každý program, který je závislý na mechanismech řízení přístupu, může být zranitelný. Na webových stránkách finančních institucí hackeři většinou využívají rasových podmínek. Vzhledem k tomu, že by to mohlo vést k neomezeným finančním výhodám pro hackera, pokud by bylo možné zjistit stav rasy na zásadním prvku, jako je výběr hotovosti, převod peněz nebo platba kreditní kartou. Platformy elektronického obchodování, videohry a hlasovací služby online jsou další vysoce rizikové technologie. Tajemství vyhýbání se závodním podmínkám je implementace bezpečné souběžnosti. A můžete také použít zámky zdrojů. Integrována bude také funkce zamykání programovacích jazyků se schopnostmi souběžnosti, které těmto podmínkám zabrání. Kromě toho dodržování standardů bezpečného kódování, tj.E., koncept nejmenších privilegií a kontrolní kód sníží pravděpodobnost porušení programu.

Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...
Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...
Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...