
Prova de conceito para o estouro de buffer heap CVE-2023-38545 no tratamento de proxy SOCKS5 do curl, demonstrando exploração via redução de buffer de limite de taxa.
Este POC é baseado no POC anterior criado por UTsweetyfish, compartilhado neste repositório: https://github.com/UTsweetyfish/CVE-2023-38545. Ao contrário daquele POC, este é para a ferramenta de linha de comando e não para a biblioteca libcurl, e não requer Python nem compilação
Este POC é para o estouro de buffer heap SOCKS5 do curl e mostra como estourar o buffer de recebimento na ferramenta de linha de comando curl. Por padrão, o curl inicializa o buffer de recebimento com um tamanho de 100k, o que o torna insuscetível ao CVE-2023-38545. Mas o tamanho desse buffer pode ser reduzido definindo um limite de taxa (--limit-rate).
Para executar o POC, primeiro configure um proxy SOCKS5 local usando SSH (isso requer um servidor SSH em execução localmente):
ssh -fND 10801 localhost
Em seguida, execute o scriptt poc.sh (isso requer que o Netcat (nc) esteja instalado):
./poc.sh
Pode ser necessário várias tentativas para acionar o estouro de buffer. Se o estouro for acionado, o script sairá com um código de erro e uma mensagem de erro indicando que a execução foi abortada. Quando o estouro falha e o curl não é afetado, uma mensagem é exibida indicando que um host com o nome "AAAA...." não pôde ser resolvido.
Links: