Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Escalada de PrivilégiosForensia de MemóriaAnálise de VulnerabilidadesExploraçãoRed TeamingExploração de Binários
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

Exploit de prova de conceito para CVE-2020-27949, demonstrando leitura/escrita arbitrária de memória em processos macOS através de DTrace fasttrap ioctl sem permissões elevadas.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
3391há 5 anosRevisado pelo Kitploit

Leitura e escrita de memória de outros processos usando fasttrap

O dispositivo /dev/fasttrap para criar nós de trap em processos de espaço de usuário para os provedores pid e objc tem as permissões 666. Em contraste com /dev/dtrace, que também é 666, o fasttrap não possui uma verificação de permissão. Isso permite que qualquer processo emita um ioctl FASTTRAPIOC_MAKEPROBE ou FASTTRAPIOC_GETINSTR.
Um atacante pode criar probes em qualquer outro processo para qualquer localização de memória usando FASTTRAPIOC_MAKEPROBE. Na ativação desses probes, os valores na localização de memória especificada são substituídos por uma instrução de trap (0xCC em x86) e o valor original é colocado em uma memória sombra. Recuperar o valor original é possível com o ioctl FASTTRAPIOC_GETINSTR. Isso permite que o atacante leia memória arbitrária de outro processo colocando múltiplos traps.

Esta vulnerabilidade é rastreada como CVE-2020-27949, corrigida no macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave.

Linha do Tempo da Divulgação

  • 2020-07-07 -> Divulgação inicial para a Apple Product Security.
  • 2020-07-08 <- Confirmação de investigação.
  • 2020-10-28 -> Solicitação de atualização de status.
  • 2020-12-07 <- Notificação sobre atualização futura que aborda o problema.
  • 2020-12-14 <- Atualização lançada.

Requisitos

  • Atacante pode executar código com permissões de usuário comum (não elevadas)
  • Probes no processo vítima devem estar habilitados (ou seja, a vítima deve ser executada sob DTrace)

Configurações de sistema testadas

  • SIP está ativado (sem exceções)
  • 10.15.5 em iMac Late 2012
  • 10.15.5 em MacBook Pro 2020

Impacto

  • Atacante pode ler memória de outros processos executados sob DTrace sem permissões elevadas. É possível até mesmo ler memória de processos executados como root.
  • Atacante pode escrever o valor da instrução de trap (0xCC em x86) em qualquer localização de memória de outros processos executados sob DTrace sem permissões elevadas. É possível até mesmo escrever memória em processos executados como root. Como parte de outras instruções ou endereços de salto, o fluxo de controle da vítima pode ser alterado, permitindo escalada de privilégios.

Expectativas

Como usuário, espero que habilitar o DTrace permita apenas que processos com permissões de root possam rastrear, instrumentar ou modificar outros processos. O DTrace é uma ferramenta valiosa para tarefas administrativas, oferecendo ferramentas como dtruss, iotop, etc.

Detalhes do exploit

Nossa vítima (target) é um executável rodando como root. O atacante (memaccess) é um executável rodando com permissões de usuário comum. O script de rastreamento libc_monitor.d registra o número de chamadas para funções no objeto compartilhado libsystem_c.dylib (este é apenas um exemplo simples de um script administrativo que o proprietário da máquina pode executar).

  1. A vítima é executada
  2. O atacante cria um probe com o PID da vítima e uma localização de memória de interesse.
  3. O atacante aguarda o DTrace rastrear o processo vítima. Isso pode acontecer como parte de uma operação administrativa onde o proprietário da máquina deseja rastrear funções no processo vítima (por exemplo, libc_monitor.d).
  4. Quando o DTrace começa a rastrear a vítima, os probes criados anteriormente serão habilitados, substituindo assim os valores originais da memória.
  5. O atacante usa FASTTRAPIOC_GETINSTR para ler os valores de memória dos probes criados.

O passo 4 substitui a memória no processo vítima pelo valor da instrução de trap. Dependendo da aplicação, um atacante pode usar isso para escrever um valor previamente conhecido em uma localização crítica de memória. Por exemplo, o atacante poderia controlar a semente de um RNG ou substituir chaves criptográficas em um processo.

Nota: O atacante nunca requer permissões elevadas ou de root.
Nota 2: Scripts DTrace escritos pelo próprio não são necessários. Por exemplo, dapptrace também usa o provedor pid para rastrear qualquer função.

Correção Proposta

Implementar verificações de privilégio em /dev/fasttrap como em /dev/dtrace ou remover a permissão de escrita mundial.

Nota: Não verificamos a correção lançada.

Instruções

  1. Certifique-se de que o DTrace está disponível e funcionando corretamente
  2. Execute target e siga as instruções na tela
Baixar ferramenta