mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
5.0 KiB
5.0 KiB
WebRTC DoS
{{#include ../../banners/hacktricks-training.md}}
Цю проблему було виявлено в цьому блозі: https://www.rtcsec.com/article/novel-dos-vulnerability-affecting-webrtc-media-servers/
Описана вразливість у медіа-серверах WebRTC виникає через умову гонки під час ініціалізації медіа-сесій, зокрема між перевіркою згоди медіа ICE та ініціацією трафіку DTLS. Ось детальний розгляд:
Походження вразливості
- Розподіл UDP портів: Коли користувач ініціює дзвінок WebRTC, медіа-сервер розподіляє UDP порти для обробки медіа-потоків, з IP та портом, які передаються через сигналізацію.
- Процеси ICE та STUN: Браузер користувача використовує ICE для перевірки згоди медіа, використовуючи STUN для визначення шляху з'єднання до медіа-сервера.
- Сесія DTLS: Після успішної перевірки STUN починається сесія DTLS для встановлення SRTP майстер-ключів, переходячи до SRTP для медіа-потоку.
Механізм експлуатації
- Експлуатація умови гонки: Зловмисник може експлуатувати умову гонки, надіславши повідомлення DTLS ClientHello до того, як це зробить законний користувач, потенційно використовуючи недійсну шифрувальну сукупність, таку як
TLS_NULL_WITH_NULL_NULL. Це викликає помилку DTLS на сервері, що заважає встановленню сесії SRTP.
Процес атаки
- Сканування портів: Зловмисник повинен вгадати, які UDP порти обробляють вхідні медіа-сесії, надсилаючи повідомлення ClientHello з нульовою шифрувальною сукупністю на ці порти, щоб активувати вразливість.
- Схема атаки: Послідовність включає кілька повідомлень ClientHello, надісланих зловмисником на сервер, чергуючи їх з законними сигналізаційними та DTLS повідомленнями, що призводить до збою рукостискання через помилкову шифрувальну сукупність.
Тестування та пом'якшення
- Безпечне тестування: Використовуючи інструменти, такі як Scapy, зловмисники повторно відтворюють повідомлення DTLS ClientHello, націлюючись на конкретні медіа-порти. Для етичного тестування були внесені зміни до Chromium (наприклад,
JsepTransport::AddRemoteCandidates), щоб безпечно імітувати поведінку жертви. - Заходи пом'якшення: Рішення включають скидання пакетів з неперевірених адрес, як це реалізовано в новіших версіях бібліотек, таких як libnice. Основне рішення підкреслює довіру до процесу перевірки ICE та обробку пакетів лише з перевірених комбінацій IP та портів.
Невразливі сценарії
- Конфігурації сервера DTLS: Випадки, коли браузер діє як сервер DTLS або коли медіа-сервер не використовує епhemerальні порти для медіа-сесій, не підлягають цій вразливості.
Висновок
Ця вразливість підкреслює тонкий баланс у процесах ініціалізації медіа-сесій та необхідність точного таймінгу та механізмів перевірки для запобігання експлуатації. Розробникам рекомендується впроваджувати рекомендовані заходи безпеки та забезпечувати надійні процеси перевірки для пом'якшення таких вразливостей.
{{#include ../../banners/hacktricks-training.md}}