Атака повторного відтворення (replay-атака) — атака, за якої перехоплену легітимну передачу даних — повідомлення входу, токен чи команду — зловмисно повторюють, щоб отримати доступ або знову викликати дію.
Як працює replay-атака
Зловмисникові не потрібно розшифровувати чи розуміти перехоплені дані. Досить записати повідомлення, яке одержувач вважає справжнім, і пізніше надіслати його ще раз. Для цього потрібен доступ до трафіку — як правило, позиція «людини посередині», відкрита мережа Wi-Fi або радіоприймач. Типові приклади:
- Повторне надсилання перехопленого повідомлення автентифікації або хешу, щоб увійти від імені жертви (CWE-294, обхід автентифікації через capture-replay).
- Повторне використання викраденого токена сесії чи підписаного API-запиту — близько до перехоплення сесії.
- Запис радіосигналу автомобільного брелока, гаражних воріт чи сигналізації з фіксованим кодом і його відтворення, щоб відчинити двері.
- Повтор платіжного доручення або переказу, щоб його виконали двічі.
Чому це важливо
Replay-атаки показують, що самого шифрування недостатньо: зашифроване повідомлення може залишатися дійсним і під час повтору. Вразливими лишаються слабкі IoT-пристрої та старі радіосистеми, а вади протоколів, як-от атака KRACK на WPA2 2017 року, ґрунтувалися на повторному відтворенні повідомлень рукостискання. Під час форків блокчейнів також знадобився захист від повтору, щоб транзакцію з одного ланцюжка не можна було повторити в іншому.
Як запобігти
- Використовувати протоколи з одноразовими числами (nonce), мітками часу або порядковими номерами, як у TLS і Kerberos, і відхиляти дублікати.
- Робити токени короткоживучими й прив’язувати їх до сесії чи пристрою; застосовувати одноразові паролі, що втрачають чинність після використання.
- Використовувати плаваючі коди (rolling codes) і схему «запит — відповідь» у бездротових замках і брелоках.
- Вимагати ключі ідемпотентності для платіжних операцій та API.