Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo do encontro 24
Detecção de erros e protocolos de acesso múltiplo
CVE-2021-32640
A falha pode ser explorada através de um certo campo do header de uma requisição
e pode ser usada para tornar um servidor WS lento. Mais especificamente, a
vulnerabilidade acontece passando um tipo de protocolo personalizado no campo da
requisição "Sec-Websocket-Protocol". Esse tipo de ataque é conhecido como
ReDoS (regular expression denial of service) e ele utiliza entradas que podem levar
muito tempo para serem processadas pelo servidor. O processador de regex do
servidor procura por vírgula e espaços, quando é enviado o pacote malicioso, o
processador fica muito tempo procurando por esses padrões. Esse cenário fica mais
dramático se vários clientes estiverem rodando a mesma requisição maliciosa.
Detecção de erros
1
EDC significa Error Detection and Correction, ou detecção e correção de erros (por
exemplo, redundância). Geralmente esse mecanismo acontece através do
acréscimo de alguns bits no datagrama transmitido.
Checagem de paridade
A checagem de paridade de bit único consegue detectar apenas erros de 1 bit. Essa
checagem se dá através de um bit que indica a paridade da quantidade de "1"s
transmitidos: é 1 se houver um número par de bits "1" no dado transmitido, ou 0,
caso contrário. Se mais de 1 bits estiverem ligados erroneamente no dado
transmitido, pode ser que o erro passe despercebido pelo mecanismo de checagem
de paridade.
Com esse mecanismo, é possível detectar e corrigir erros de um único bit. Ele
funciona da seguinte forma: a sequência de bits que deseja-se transmitir é quebrada
em várias linhas. Assim, definem-se bits de paridade de cada linha e de cada
coluna. A combinação de bits de paridade da linha e da coluna permite saber
exatamente qual no bit errado, o que possibilita, inclusive, a correção.
Não sempre, mas geralmente, os erros de bits acontecem em "rajada", o que torna
uma sequência de bits errada nos dados transmitidos.
Checksum da internet
Esse mecanismo tem por objetivo detectar erros em rajada (ou seja, sequência de
bits trocados) em um segmento transmitido.
2
Nele, o remetente trata conteúdos do segmento UDP (incluindo campos de
cabeçalho UDP e endereços de IP) como sequências de inteiros de 16 bits. Assim, o
checksum (soma) do conteúdo do segmento é calculado e colocado no campo de
checksum do UDP.
Já o destinatário computa o checksum do segmento recebido e checa se o
checksum calculado é igual ao valor do campo checksum do segmento. Se não for
igual, um erro foi detectado. Se for igual, erros não foram detectados. No entanto,
erros podem ter ocorrido mesmo assim.
O destinatário conhece G, divide <D,R> por G. Se o resto não for zero, um erro foi
detectado. Esse mecanismo pode detectar todos os erros menores que r+1 bits. Ele
é amplamente usado na prática (Ethernet, 802.11 Wifi).
Embora cada elemento esteja conectado à rede por um único cabo, existem
barramentos. Em certos casos, pode haver colisão de dados. Dessa forma, o
protocolo deve ser capaz de "se recuperar" toda vez que isso acontece.
Existem dois tipos de enlaces principais: ponto a ponto, onde há um link ponto a
ponto entre o switch Ethernet e os hosts ou PPP para acesso com conexão discada;
e transmissão (cabo compartilhado), usado por cabos ethernet, wireless 802.11, 4G,
satélites.
3
Em um canal de difusão compartilhado, quando há duas ou mais transmissões
simultâneas por nós da rede, pode haver interferência, sobretudo, por colisões, se o
nó recebe dois ou mais sinais ao mesmo tempo.