O erro crítico da máscara de rede afeta milhares de aplicativos

A popular máscara de rede da biblioteca npm tem uma vulnerabilidade de rede crítica.

A máscara de rede é frequentemente usada em centenas de milhares de aplicativos para analisar ou comparar endereços IPv4 e blocos CIDR.

O componente recebe mais de 3 milhões de downloads semanais e ganhou pontuação até o momento. mais de 238 milhões de downloads totais ao longo de sua vida. Também, aprox. 278.000 repositórios do GitHub dependem da máscara de rede.

O bug na biblioteca significa que ao analisar um endereço IP com um zero à esquerda, a máscara de rede vê um IP diferente devido a validações incorretas.

índice

  1. O zero inicial altera o endereço IP
  2. Bypass SSRF e lista de bloqueio para incluir arquivos remotos
  3. Versão corrigida lançada no npm

O zero inicial altera o endereço IP

Hoje, os pesquisadores de segurança Victor Viale, Disease Codes, Nick Sahler, Kelly Kaoudis e John Jackson descobriram uma falha na popular Netmask Library.

A vulnerabilidade, rastreada como CVE-2021-28918, diz respeito a como a máscara de rede lida com endereços IP em formato misto ou, mais especificamente, quando um endereço IPv4 decimal contém um zero à esquerda.

Um endereço IP pode ser representado em vários formatos, incluindo hexadecimal e inteiro, embora os endereços IPv4 mais comuns sejam expressos em formato decimal.

Por exemplo, o endereço IPv4 do BleepingComputer representado no formato decimal é 104.20.59.209, mas pode ser expresso no formato octal como 0150.0024.0073.0321.

Suponha que você receba um endereço IP no formato decimal, 127.0.0.1, que é amplamente entendido como um loopback local ou endereço de host local.

Se você acrescentar um 0, um aplicativo ainda analisaria 0127.0.0.1 como 127.0.0.1 ou outra coisa?

Tente isso no seu navegador da web. Nos testes do BleepingComputer, digitar 0127.0.0.1/ na barra de endereços do Chrome o trata como um IP em formato octal .

Pressionar Enter ou Enter altera o IP para seu equivalente decimal de 87.0.0.1, que é como a maioria dos aplicativos deve lidar com esses endereços IP ambíguos.

A maioria dos navegadores da Web, como o Chrome, compensa automaticamente os endereços IP de formato misto.

De particular interesse é o fato de que 127.0.0.1 não é um endereço IP público, mas um endereço de loopback, porém sua representação ambígua o transforma em um endereço IP público que leva a um host completamente diferente.

Mas, no caso da máscara de rede da biblioteca npm, todos os zeros à esquerda seriam simplesmente removidos e descartados.

De acordo com a especificação original do IETF, partes de um endereço IPv4 podem ser interpretadas como octais se forem precedidas por "0"

"Mas a máscara de rede ignora isso. Ela sempre tratará as partes como decimais, o que significa que, se você tentar validar que um IP pertence a um intervalo, estará errado para as representações octais de endereços IPv4", disseram Sahler e Viale ao BleepingComputer em uma postagem no blog. Entrevista por e-mail.

Bypass SSRF e lista de bloqueio para incluir arquivos remotos

À primeira vista, esse bug pode não parecer grande coisa, mas se um invasor puder influenciar a entrada do endereço IP analisado pelo aplicativo, o bug pode levar a várias vulnerabilidades, desde Bypass Requests até Host-side Request Forgery. (SSRF) uma inclusão de arquivo remoto (RFI).

Os pesquisadores compartilharam vários exemplos com o BleepingComputer que demonstram a mesma coisa.

"Alguém está executando um servidor de nó para limpar uma solicitação de entrada ou parâmetro de consulta que deve ser um URI usado para conexões adicionais, obtenção de recursos, algo assim."

"O invasor cria um IP com alguns ou todos os octetos de base 8, na antiga representação JavaScript com o prefixo 0."

"Isso pode ser útil para o SSRF, por exemplo, para forçar um servidor a se conectar a 127.0.0.1 passando 0177.0.0.01. 177 é base 8 vezes 127 em decimal", disse Kaoudis ao BleepingComputer.

"Um bom exemplo é um sistema que expõe webhooks e valida URLs de usuários por meio de uma verificação de máscara de rede vulnerável ao SSRF", acrescentou Viale.

Considerando que esse bug também pode ser explorado para inclusão remota de arquivos (RFI) se um invasor criar um endereço IP que pareça privado para uma máscara de rede, devido à maneira como a máscara de rede converte todas as partes do IPv4 (octetos) para o formato decimal, mas outros componentes avalie-o como público, explicou Kaoudis ao BleepingComputer.

Em 2018, o popular projeto de software snuggle também encontrou uma falha idêntica ao tratar endereços IPv4 octais como decimais:

Nos testes do BleepingComputer, a execução de "curl -v 0177.0.0.1" fez com que o curl se conectasse a 177.0.0.1 em vez do endereço de loopback 127.0.0.1.

Curl já havia sofrido de um defeito idêntico
Fonte: Twitter

Naquela época, um hacker da Attic Grgoire também havia esclarecido como essa falha poderia ser explorada para contornar listas de controle de acesso (ACLs) baseadas em IP.

“Costumo usar essas conversões para contornar listas negras anti-SSRF”, disse Ella ao hacker costarriquenho Nicolas Grgoire.

Vários produtos de infraestrutura e segurança de rede, como firewalls de aplicativos da Web, contam com a máscara de rede para filtrar endereços IP na lista de bloqueio e na lista de permissões.

Isso também significa que falhas como essas, se não forem verificadas, podem levar a erros graves nas verificações de segurança do perímetro.

Anteriormente, Sick Codes Jackson e Sahler haviam identificado uma falha semelhante no arquivo. private-ip O pacote resultante também usa a máscara de rede como dependência até hoje.

Com o tempo, diz Jackson, esse problema de máscara de rede recém-descoberto deixa milhares de projetos vulneráveis ​​ao desvio do SSRF.

"O Netmask tem milhões de downloads por semana, o que torna o impacto bastante grande. Esta é uma enorme vulnerabilidade na cadeia de fornecimento de software."

"Em retrospectiva, nosso CVE de IP privado atingiu um nível de criticidade de 9,8 e teve apenas cerca de 175.000 downloads por semana", disse Jackson à BleepingComputer.

A principal preocupação do pesquisador é que muitos projetos usando máscaras de rede para análise de IP podem ser erroneamente considerados protegidos contra SSRF.

Versão corrigida lançada no npm

Após a notificação dos pesquisadores responsáveis ​​sobre a vulnerabilidade, o desenvolvedor de máscara de rede Olivier Poitrey removeu várias correções [1, 2, 3] para o bug no GitHub, juntamente com casos de teste validando que octetos IPv4 com prefixos 0 são tratados como números octais e não decimais .

A correção para CVE-2021-28918 foi lançada na versão 2.0.0 por netmask download npm .

Quando perguntado sobre a natureza crítica dessa vulnerabilidade, o desenvolvedor disse ao BleepingComputer que depende de como ela se define como "crítica".

"Depende de como você define crítico e como você usa esta biblioteca. Isso não é um estouro de buffer ou algum tipo de erro de execução remota."

"Não posso DoS seu aplicativo, mas enfraqueço sua ACL se depender de acesso IP usando esta biblioteca."

"Ainda tenho que imaginar um cenário em que isso possa ser explorado, já que na maioria das vezes as ACLs são baseadas em IPs aprendidos da pilha de IP e nunca usarão o formato vulnerável", disse Poitrey à BleepingComputer.

Recomenda-se que os usuários da biblioteca npm netmask atualizem para a versão fixa 2.0.0.

Os pesquisadores divulgaram seus resultados em uma postagem de blog consultiva do GitHub.

Embora o BleepingComputer ainda não tenha encontrado nenhuma informação indicando se o Perl Net::Netmask sofre dessa falha, os desenvolvedores que usam a versão Perl são aconselhados a garantir que seus aplicativos limpem e normalizem os endereços IP antes de passá-los como entrada para o Netmask.

  • Como desativar o Centro de Controle na tela de bloqueio do iPhone
  • Como ajustar a taxa de bits de áudio no Discord

descubra mais conteúdo

O que é um amplificador integrado?

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão Geek

Deixe uma resposta Cancelar resposta

O que é a máscara de sub-rede 30?

CIDRinfo

máscara de sub-rede bits número de hospedeiros
255.255.255.248 29 8
255.255.255.252 30 4
255.255.255.254 31 dois
255.255.255.255 32 1

Quantos IPs tem a máscara 30?

CIRD MÁSCARA DE SUB-NET Nº DE ENDEREÇOS IP ÚTEIS
/31 255.255.255.254 dois*
/ 30 255.255.255.252 dois
/29 255.255.255.248 6
/28 255.255.255.240 14

O que é a máscara de rede e para que serve?

Uma máscara de rede é definida como uma combinação de bits que funcionam para delimitar uma rede de computadores e dividir essa rede em sub-redes. Este código numérico é utilizado para realizar corretamente o processo de transferência de mensagens entre dispositivos na mesma sub -rede.

Ir arriba