2.8 KiB

WWW2Exec - sips ICC Profile Out-of-Bounds Write (CVE-2024-44236)

{{#include ../../banners/hacktricks-training.md}}

Visão Geral

Uma vulnerabilidade de escrita fora dos limites no parser de perfil ICC do Apple macOS Scriptable Image Processing System (sips) (macOS 15.0.1, sips-307) devido à validação inadequada do campo offsetToCLUT nos tags lutAToBType (mAB ) e lutBToAType (mBA ). Um arquivo ICC elaborado pode acionar gravações zero até 16 bytes além do buffer da pilha, corrompendo metadados da pilha ou ponteiros de função e permitindo a execução de código arbitrário (CVE-2024-44236).

Código Vulnerável

A função vulnerável lê e zera 16 bytes a partir de um deslocamento controlado pelo atacante sem garantir que esteja dentro do buffer alocado:

// Pseudocode from sub_1000194D0 in sips-307 (macOS 15.0.1)
for (i = offsetToCLUT; i < offsetToCLUT + 16; i++) {
if (i > numberOfInputChannels && buffer[i] != 0)
buffer[i] = 0;
}

Apenas uma verificação offsetToCLUT <= totalDataLength é realizada. Ao definir offsetToCLUT == tagDataSize, o loop indexa até 16 bytes além do final de buffer, corrompendo os metadados da heap adjacente.

Etapas de Exploração

  1. Criar perfil .icc malicioso:
  • Construa o cabeçalho ICC (128 bytes) com a assinatura acsp e uma única entrada de tag lutAToBType ou lutBToAType.
  • Na tabela de tags, defina offsetToCLUT igual ao size da tag (tagDataSize).
  • Coloque dados controlados pelo atacante imediatamente após o bloco de dados da tag para sobrescrever os metadados da heap.
  1. Acionar a análise:
sips --verifyColor malicious.icc
  1. Corrompimento de metadados da heap: As gravações zero fora da faixa sobrescrevem os metadados do alocador ou ponteiros adjacentes, permitindo que o atacante se aproprie do fluxo de controle e consiga execução arbitrária de código no contexto do processo sips.

Impacto

A exploração bem-sucedida resulta em execução remota de código arbitrário com privilégios de usuário em sistemas macOS que executam o utilitário sips vulnerável.

Detecção

  • Monitore transferências de arquivos em protocolos comuns (FTP, HTTP/S, IMAP, SMB, NFS, SMTP).
  • Inspecione arquivos transferidos com a assinatura acsp.
  • Para cada tag mAB ou mBA , verifique se o campo Offset to CLUT é igual ao Tag data size.
  • Marque como suspeito se essa condição for atendida.

Referências

{{#include /banners/hacktricks-training.md}}