Estão disponíveis correções para as versões do servidor JavaScript Node.js 21.6.2, 20.11.1, 18.19.1, que corrigem 8 vulnerabilidades, das quais 4 possuem um alto nível de gravidade:
- CVE-2024-21892 — possibilidade de um usuário não privilegiado inserir código com privilégios elevados sob os quais o processo é executado. A vulnerabilidade é causada por um erro na implementação da exceção, permitindo que variáveis de ambiente definidas por usuários não privilegiados sejam processadas em um contexto de privilégios elevados. A exceção deveria ser restrita apenas às permissões CAP_NET_BIND_SERVICE, mas devido a um erro, foi aplicada a algumas outras permissões.
- CVE-2024-22019 — negação de serviço devido ao esgotamento de recursos disponíveis (carga na CPU e consumo de largura de banda) ao processar requisições chunked especialmente formatadas pelo servidor HTTP integrado, levando à leitura de uma quantidade ilimitada de bytes em uma única conexão.
- CVE-2024-21896 — saída para além do diretório base nos caminhos de arquivos. A vulnerabilidade permite contornar a normalização de caminhos de arquivos ao usar path.resolve() quando um caminho é passado utilizando a classe Buffer. Para obter tal caminho, após a validação, é chamado o método Buffer.from(), mas no aplicativo pode ser utilizado o chamado Buffer.prototype.utf8Write, resultando na substituição do conteúdo após a execução de path.resolve() e a ocorrência da vulnerabilidade.
- CVE-2024-22017 — chamada de setuid() não revogava todas as permissões. Em particular, setuid() não afeta as operações io_uring, utilizadas em libuv, se estas foram inicializadas antes da chamada de setuid().
- CVE-2023-46809 — vulnerabilidade na API privateDecrypt(), permitindo a execução do ataque Marvin para descriptografar RSA com base na medição do tempo das operações.
- CVE-2024-21891 — possibilidade de contornar o modelo de controle de acesso ao usar manipuladores personalizados de normalização de caminhos de arquivos.
- CVE-2024-21890 — processamento incorreto das máscaras nos parâmetros "—allow-fs-read" e "—allow-fs-write". Por exemplo, "—allow-fs-read=\/home\/node\/.ssh\/*.pub" permitirá acesso a todo o conteúdo de ".ssh\/", e não apenas aos arquivos com a extensão ".pub", pois a máscara "*" é tratada como o último elemento do caminho.
- CVE-2024-22025 — negação de serviço por meio do consumo de recursos ao decodificar dados compactados no formato Brotli, recebidos através da chamada fetch().
Além disso, é possível mencionar a liberação da biblioteca libuv 1.48.0, utilizada no Node.js para multiplexação de conexões e processamento assíncrono de entrada/saída. Além do Node.js, a biblioteca também é utilizada em servidores DNS BIND 9 e Knot DNS, no servidor HTTP H2O, e no framework Lua Luvit. máquina virtual MoarVM, na linguagem Julia e no framework Python uvloop. Na nova versão, uma vulnerabilidade (CVE-2024-24806) foi corrigida, que se manifestava em projetos que utilizavam libuv, permitindo um ataque SSRF (Server-side request forgery) para obter acesso à API interna. A vulnerabilidade surgiu devido ao truncamento do nome do host pela função uv_getaddrinfo() para 256 caracteres na fase anterior à resolução de domínio via função getaddrinfo(), o que pode levar à identificação errada endereços IP e à contornamento de verificações. Por exemplo, serviços como MySpace, que criam subdomínios no formato "username.example.com", podem ser atacados através da especificação de um nome de usuário longo.
Também foi lançada uma atualização do cliente HTTP undici 5.28.3 utilizada no Node.js, na qual uma vulnerabilidade (CVE-2024-24758) foi corrigida, resultante da falta de limpeza do cabeçalho HTTP Proxy-Authorization durante o redirecionamento de solicitações.
Fonte: opennet.ru
