🧩 Хакер-челлендж
На проде магазина замечают странные списания: одни пользователи платят дважды, у других приходит товар без списания. Вот фрагмент логов (время в ms).
❓ Что наиболее правдоподобно объясняет произошедшее, голосуйте эмодзи
🔥 — Неправильно реализован механизм идемпотентности:
👾 — Race condition/несинхронизированное состояние между бэкендами: параллельные запросы обрабатываются разными экземплярами, каждый создал транзакцию до репликации/блокировки.
❤️ — Replay-атака: перехват и повторная отправка запроса с тем же ключом с других IP.
👍 — Интеграционный баг с платёжным провайдером: двойное создание транзакции на стороне провайдера или несогласованность статусов.
🐸 Библиотека хакера
#ctf_challenge
На проде магазина замечают странные списания: одни пользователи платят дважды, у других приходит товар без списания. Вот фрагмент логов (время в ms).
🔥 — Неправильно реализован механизм идемпотентности:
Idempotency-Key
не проверяется глобально/атомарно (ключ принимается разными бекендами), из-за чего созданы две транзакции.👾 — Race condition/несинхронизированное состояние между бэкендами: параллельные запросы обрабатываются разными экземплярами, каждый создал транзакцию до репликации/блокировки.
❤️ — Replay-атака: перехват и повторная отправка запроса с тем же ключом с других IP.
👍 — Интеграционный баг с платёжным провайдером: двойное создание транзакции на стороне провайдера или несогласованность статусов.
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👾12❤11👍1🔥1🥱1
Раннее мы выкладывали задачу
В логах магазина видно два почти одинаковых запроса на оплату с одинаковым Idempotency-Key. Но обработаны они разными инстансами: один вернул статус processing, второй — paid. В итоге пользователю пришёл товар, но система зарегистрировала две транзакции.
1. 🔥 Неправильно реализована идемпотентность: проверка Idempotency-Key не выполняется централизованно или атомарно. Из-за этого два разных инстанса приняли один и тот же ключ и создали две транзакции. Это самая вероятная причина проблемы.
2. 👾 Race condition: параллельные запросы были обработаны разными инстансами, что привело к созданию двух транзакций до синхронизации состояния между ними.
3. ❤️ Replay-атака: маловероятно, потому что IP-адреса в логах разные. Хотя теоретически возможно, что запрос был повторно отправлен с тем же ключом.
4. 👍 Интеграционный баг с платёжным провайдером: это также возможно, но не является основной причиной. Провайдер зарегистрировал оба статуса, но ошибки на его стороне не столь очевидны.
Правильный ответ:
#ctf_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2❤1