Веб-програмування

Уразливості стану гонки у веб-додатках

Уразливості стану гонки у веб-додатках
Коли веб-програма, налаштована на управління функціями у фіксованій послідовності, необхідна для одночасного виконання двох або більше операцій, відбувається атака стану перегонів. Ця техніка використовує затримку часу між тим, коли послуга вводиться, і коли відбувається контроль безпеки. Ця атака може бути здійснена будь-яким із двох способів, заснованих на багатопотокових програмах: вторгнення, спричинене ненадійними процесами, та вторгнення, здійснене надійним процесом, який може мати однакові та рівні права.

Різні процеси можуть взаємодіяти один з одним без відповідних заходів. Ці атаки також відомі як атаки часу перевірки, атаки часу використання або атаки TOC / TOU. Вразливості до стану перегонів трапляються в першу чергу через основні помилки програмування, які зазвичай створюють розробники, і ці збої виявилися дорогими. Шкідливі організації використовували умови перегонів для багатьох зловмисних цілей, тобто.e., від отримання безкоштовних ваучерів для пограбування грошей з інтернет-рахунків та інвестиційних фірм.

Припустимо, що два паралельних потоки виконання намагаються підняти значення глобальної змінної на 5. Зрештою, глобальна змінна матиме значення 10. Однак, якщо всі потоки працюють одночасно, виконання може бути неправильним без блокування ресурсів або синхронізації. Коли перший потік виконує деякі маніпуляції з цією глобальною змінною, другий потік читає його і починає виконувати деякі інші маніпуляції. У цьому випадку остаточне значення буде не таким, як очікувалося.

Це відбувається, оскільки ефект закінчення одного потоку залежить від результату другого. Коли обидва потоки виконуються одночасно, це матиме непередбачені наслідки.

Сфера атак на стан перегонів:

Уявіть, що щось трохи більш критичне виконується двома потоками наведеного прикладу, наприклад, обмін грошима між банківськими рахунками. Щоб правильно відправити гроші, програмі потрібно буде виконати ці завдання в такій послідовності; Перевірте, чи достатньо залишку на рахунку відправника, додайте гроші на рахунок одержувача, а потім відрахуйте з рахунку відправника. Але якщо ви одночасно подаєте два запити, можливо, ви зможете викликати стан, при якому послідовність виконання потоку змінюється. У такій ситуації ви отримаєте іншу суму, ніж очікувалося.

Вразливість перегонового стану виявив Єгор Хомаков на веб-сайті Starbucks. Він відкрив спосіб створити нескінченну суму кредиту на подарункові ваучери Starbucks безкоштовно, використовуючи різні браузери з різними файлами cookie.

Визначна атака Meltdown є прикладом вразливості до стану раси. При атаці розпаду слабкість викликається паралельною обробкою отримання даних з пам'яті та аутентифікацією того, чи дозволено користувачеві доступ до пам'яті. Ця вада дозволяє інструменту уникати стандартних перевірок привілеїв, які відокремлюють механізм атаки від доступу до даних ОС. Ця лазівка ​​дозволяє будь-якому несанкціонованому процесу переглядати дані та інформацію з будь-якої іншої адреси, підключеної до поточного стану прогресу в пам'яті. У процесі несправного виконання інформація з незатвердженої адреси часто швидко укладається в кеш центрального процесора, з якого інформація може бути відновлена.

Сценарії атак у реальному житті:

Подаючи численні запити на веб-сервер безперервно, ви можете шукати та маніпулювати умовами змагань у веб-додатках. Якщо ви хочете побачити, чи можете ви зняти більше грошей, ніж у вас на банківському рахунку, за допомогою функції curl, ви можете одночасно надіслати кілька запитів на виведення коштів на сервер.

curl (зняти 50000) & (зняти 50000) & (зняти 50000) & (зняти 50000) & (зняти 50000) & (зняти 50000)

Чим більше вимог ви подаєте за короткий проміжок часу, тим вище шанси на те, що ваша атака спрацює.

Більше того, якщо ви надсилаєте асинхронні запити на подальші дії, ви будете стежити за користувачем кілька разів, а не надсилати відповідь на помилку. Я.e., якщо ви додаєте підроблений заголовок, що містить% s, відкидаючи запити з використанням турбо-вторгнення та вставляючи такий код python:

def followReqs (ціль, списки слів):
engine = RequestEngine (кінцева точка = ціль.кінцева точка,
concurrentConnections = 40,
requestPerConnection = 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. А потім видаліть будь-яку консоль вручну з інтерфейсу під час запуску потоків.

Висновок:

Як засіб для підриву контролю доступу включаються умови перегонів. Будь-яка програма, яка залежить від механізмів контролю доступу, може бути вразливою. Здебільшого на веб-сайтах фінансових установ хакери експлуатують умови перегонів. Оскільки це може призвести до необмежених фінансових вигод для хакера, якщо стан раси можна буде виявити за такою важливою функцією, як зняття готівки, переказ грошей або оплата кредитною карткою. Інші технології високого ризику - це платформи електронної комерції, відеоігри та послуги онлайн-голосування. Впровадження безпечного паралелізму є секретом уникнення перегонових умов. І ви також можете використовувати блокування ресурсів. Також буде вбудована функція блокування для мов програмування з паралельними можливостями, які допомагають запобігти таким станам. Крім того, дотримуючись стандартів безпечного кодування, i.e., Концепція найменших привілеїв та код аудиту зменшить ймовірність порушення програми.

WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...