Уеб програмиране

Уязвимости на състоянието на състезанието в уеб приложения

Уязвимости на състоянието на състезанието в уеб приложения
Когато се изисква уеб приложение, конфигурирано да управлява функции във фиксирана последователност, за да изпълнява едновременно две или повече операции, възниква атака на състезателно състояние. Тази техника се възползва от забавяне във времето между въвеждането на услугата и настъпването на контрол за безопасност. Тази атака може да бъде извършена по двата начина, базирани на многонишкови приложения: проникване, причинено от ненадеждни процеси и проникване, извършено от надежден процес, който може да има същите и равни права.

Различните процеси могат да взаимодействат помежду си без адекватни мерки. Тези атаки са известни още като атака по време на проверка, атака по време на използване или атаки TOC / TOU. Уязвимостите в условията на състезанието се появяват на първо място поради основни програмни грешки, които разработчиците обикновено създават, и тези неуспехи се оказаха скъпи. Злонамерените субекти са използвали условията на състезание за много злонамерени цели, т.е.д., от получаване на безплатни ваучери за ограбване на пари от онлайн сметки и инвестиционни посредници.

Нека приемем, че две нишки за паралелно изпълнение се опитват да повишат стойността на глобалната променлива с 5. В крайна сметка тогава глобалната променлива ще има стойност 10. Ако обаче всички нишки се изпълняват едновременно, изпълнението може да е грешно без заключване на ресурси или синхронизация. Когато първата нишка прави някои манипулации с тази глобална променлива, втората нишка я прочита и започва да прави някои други манипулации. В този случай крайната стойност няма да бъде според очакванията.

Това се случва, тъй като ефектът от прекратяването на една нишка зависи от резултата на другата. Когато двете нишки се изпълняват едновременно, ще има нежелани последици.

Обхват на атаките за състезателно състояние:

Представете си, че нещо малко по-критично се изпълнява от двете нишки на горния пример, като размяна на пари между банкови сметки. За да изпрати парите правилно, програмата ще трябва да изпълни тези задачи в тази последователност; Проверете дали има достатъчно салдо в сметката на подателя, добавете пари към сметката на получателя и след това приспаднете от сметката на подателя. Но ако подадете едновременно две заявки, може да успеете да задействате състояние, при което последователността на изпълнението на нишките се променя. В ситуация като тази ще получите сума, различна от очакваната.

Уязвимостта на състоянието на расата е открита от Егор Хомаков на уебсайта на Starbucks. Той откри начин да създаде безкрайно количество кредит за ваучери за подарък на Starbucks безплатно, използвайки различни браузъри с различни бисквитки.

Видната атака на Meltdown е пример за уязвимост на състоянието на расата. При атаката на разпадане слабостта се задейства от паралелна обработка на извличането на данни от паметта и удостоверяване дали на потребителя е разрешен достъп до паметта или не. Този недостатък дава възможност на инструмент да избягва стандартни проверки на привилегиите, които разделят механизма за атака от достъпа до данни на ОС. Тази вратичка води до разрешаване на всеки неоторизиран процес да преглежда данни и информация от всеки друг адрес, свързан с текущото състояние на напредъка в паметта. В процеса на неправилно изпълнение информацията от неодобрен адрес често ще се натрупва бързо в кеша на процесора, от който информацията може да бъде възстановена.

Сценарии за реални атаки:

Постоянно подавайки многобройни заявки до уеб сървъра, можете да търсите и манипулирате условията на състезанието в уеб приложения. Ако искате да видите дали можете да изтеглите повече пари, отколкото имате в банковата си сметка, като използвате функцията curl, можете едновременно да изпратите няколко искания за теглене до сървъра.

навийте (изтеглете 50000) & (изтеглете 50000) & (изтеглете 50000) & (изтеглете 50000) & (изтеглете 50000) & (изтеглете 50000)

Колкото повече искания подавате за кратък период от време, толкова по-големи са шансовете вашата атака да работи.

Освен това, ако изпращате асинхронни последващи заявки, ще следвате потребител няколко пъти, вместо да изпращате отговор на грешка. Аз.д., ако добавите фалшив хедър, съдържащ% s, докато отпадате заявки с помощта на турбо натрапник и поставяте следния код на python:

def followReqs (target, wordlists):
engine = RequestEngine (крайна точка = цел.крайна точка,
concurrentConnections = 40,
заявкиPerConnection = 100,
тръбопровод = Невярно
)
за i в обхват (40):
двигател.опашка (цел.req, str (i), gate = 'check')
двигател.openGate ('проверка')
двигател.завършен (таймаут = 60)
def responseHandle (req, интересно):
маса.добавяне (req)

Ще видите бутон за атака. След натискане на това, Turbo Intruder изпраща 40 заявки и сканира кодовете на състоянието. Ако видите множество отговори със състоянието 201 Generated, това означава, че няколко пъти сте следвали човека.

Има уязвимост на състезателни условия, при която можете да получите достъп до множество конзоли, предлагани на безплатни акаунти. Повечето уебсайтове, които предоставят безплатни конзоли, имат безплатни акаунти, стандартни и премиум пакети. Безплатните акаунти предоставят само 2 или 3 конзоли на потребител. За да нарушите тази граница и да използвате неограничени конзоли, натрапвайте GET заявката, като използвате NULL полезни товари няколко пъти, като 100 или 200. И след това изтрийте някоя от конзолите ръчно от потребителския интерфейс, докато нишките се изпълняват.

Заключение:

Като средство за подкопаване на контрола на достъпа са включени състезателните условия. Всяка програма, която зависи от механизмите за контрол на достъпа, може да бъде уязвима. По-голямата част от времето, на уебсайтовете на финансови институции, хакерите използват условията на състезанието. Тъй като това може да доведе до неограничени финансови ползи за хакера, ако може да се открие състояние на състезание по жизненоважна функция като теглене на пари в брой, паричен превод или плащане с кредитна карта. Платформите за електронна търговия, видео игрите и услугите за онлайн гласуване са други високорискови технологии. Прилагането на безопасна паралелност е тайната за избягване на състезателни условия. И можете да използвате и заключване на ресурси. Ще има и вградена функция за заключване за програмни езици с паралелни възможности, които помагат да се предотвратят подобни условия. Освен това, следвайки стандартите за сигурно кодиране, т.е.д., концепцията за най-малко привилегии и одиторският код ще намалят шанса на програмата да бъде нарушена.

Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...
Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...