# WebRTC DoS
{% hint style="success" %}
Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}
**Este problema foi encontrado neste post do blog:** [**https://www.rtcsec.com/article/novel-dos-vulnerability-affecting-webrtc-media-servers/**](https://www.rtcsec.com/article/novel-dos-vulnerability-affecting-webrtc-media-servers/)
A vulnerabilidade descrita nos servidores de mídia WebRTC surge de uma **condição de corrida** durante a inicialização das sessões de mídia, especificamente entre a **verificação de consentimento de mídia ICE** e a **iniciação de tráfego DTLS**. Aqui está uma análise detalhada:
### Origem da Vulnerabilidade
1. **Alocação de Porta UDP:** Quando um usuário inicia uma chamada WebRTC, o servidor de mídia aloca portas UDP para gerenciar os fluxos de mídia, com o IP e a porta comunicados via sinalização.
2. **Processos ICE e STUN:** O navegador do usuário utiliza ICE para verificação de consentimento de mídia, utilizando STUN para determinar o caminho de conexão até o servidor de mídia.
3. **Sessão DTLS:** Após a verificação bem-sucedida do STUN, uma sessão DTLS é iniciada para estabelecer chaves mestres SRTP, mudando para SRTP para o fluxo de mídia.
### Mecanismo de Exploração
* **Exploração da Condição de Corrida:** Um atacante pode explorar uma condição de corrida enviando uma mensagem DTLS ClientHello antes do usuário legítimo, potencialmente usando um conjunto de cifras inválido como `TLS_NULL_WITH_NULL_NULL`. Isso causa um erro DTLS no servidor, impedindo que a sessão SRTP seja estabelecida.
### Processo de Ataque
* **Escaneamento de Portas:** O atacante precisa adivinhar quais portas UDP estão lidando com sessões de mídia recebidas, enviando mensagens ClientHello com o conjunto de cifras nulo para essas portas para acionar a vulnerabilidade.
* **Diagrama do Ataque:** A sequência envolve múltiplas mensagens ClientHello enviadas pelo atacante para o servidor, intercaladas com sinalizações legítimas e mensagens DTLS, levando a uma falha de handshake devido ao conjunto de cifras errôneo.
### Testes e Mitigação
* **Testes Seguros:** Usando ferramentas como Scapy, os atacantes reproduzem mensagens DTLS ClientHello direcionadas a portas de mídia específicas. Para testes éticos, modificações no Chromium (por exemplo, `JsepTransport::AddRemoteCandidates`) foram usadas para imitar o comportamento da vítima de forma segura.
* **Medidas de Mitigação:** As soluções envolvem descartar pacotes de endereços não verificados, como implementado em versões mais recentes de bibliotecas como libnice. A solução principal enfatiza confiar no processo de verificação ICE e processar apenas pacotes de combinações de IP e porta validadas.
### Cenários Não Vulneráveis
* **Configurações do Servidor DTLS:** Instâncias em que o navegador atua como um servidor DTLS ou quando o servidor de mídia não utiliza portas efêmeras para sessões de mídia não são suscetíveis a essa vulnerabilidade.
### Conclusão
Essa vulnerabilidade destaca o delicado equilíbrio nos processos de inicialização de sessões de mídia e a necessidade de mecanismos de verificação e temporização precisos para prevenir a exploração. Os desenvolvedores são aconselhados a implementar correções de segurança recomendadas e garantir processos de verificação robustos para mitigar tais vulnerabilidades.
{% hint style="success" %}
Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}