
Análise técnica e exploit de prova de conceito para CVE-2025-61228, uma vulnerabilidade de escalonamento de privilégios no mecanismo de atualização automática do SuperDuper!, com detalhamento do vetor de ataque e orientações de mitigação.
Este problema parece ser pior do que o desenvolvedor sugere, então não quero que esta parte se perca. O desenvolvedor observou em seu blog:
Isso só pode acontecer se um programa em execução no seu sistema estiver procurando pelo SuperDuper para realizar uma atualização, uma atualização real for apresentada por meios legítimos e você clicar em Atualizar.
Isso não é realmente verdade. Explorar esta vulnerabilidade não requer que uma atualização real seja apresentada por meios legítimos. Nunca, jamais aceite uma atualização fornecida pelo SuperDuper 3.10 e versões anteriores! Explico isso com mais detalhes abaixo.
Também é importante entender que esta vulnerabilidade não se limita à escalada de privilégios, mas também envolve uma subversão dos controles de privacidade. Esse detalhe parece ter sido omitido da postagem no blog do desenvolvedor.
Do blog do desenvolvedor:
Nosso mecanismo de atualização automática pode ser sequestrado e convencido a instalar um pacote que não é o SuperDuper.
Embora tenhamos assinado e notarizado nosso pacote de instalador, o Gatekeeper não está verificando essa notarização quando instalado pelo instalador de pacotes do macOS. Como resultado, o download poderia ser alterado, e nós instalaríamos isso em seu lugar. Como a instalação é feita com privilégios elevados, isso poderia permitir que o programa de um terceiro malicioso, que você também teria que instalar, obtenha acesso de administrador ao seu sistema.
Do CVE:
Um problema no Shirt Pocket SuperDuper! V.3.10 e anteriores permite que um invasor local execute código arbitrário através do mecanismo de atualização de software
Este autor não é o descobridor da vulnerabilidade, que é identificado pelo desenvolvedor do SuperDuper como "pesquisador de segurança anônimo". Não reivindico crédito por descobrir esta vulnerabilidade, apenas me interessei em fazer uma análise técnica dela.
Pontuação CVSS 3.1: 7.8 Alta (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Para evitar esta vulnerabilidade, exclua o aplicativo SuperDuper! ou aplique a atualização 3.11.
Aviso: Você deve baixar a atualização diretamente do site do desenvolvedor para evitar esta vulnerabilidade.
Esta análise de exploit e prova de conceito é fornecida apenas para fins educacionais. Use por sua conta e risco.
Em vez de implementar uma solução de atualização de software de código aberto que foi testada por centenas de desenvolvedores e profissionais de segurança, os desenvolvedores do SuperDuper criaram seu próprio mecanismo de atualização de software construído sobre scripts shell inseguros que são executados com privilégios de root e têm acesso total ao disco. Ao não autenticar o software que está sendo instalado durante a atualização, o SuperDuper é enganado para instalar o software de um invasor. A correção do desenvolvedor aborda apenas o aspecto de autenticação desta vulnerabilidade, ela não aborda as vulnerabilidades inerentes que resultam do uso de scripts shell para facilitar o processo de atualização.
O comentário do desenvolvedor de que "o Gatekeeper não está verificando a notarização" é enganoso. O Gatekeeper entra em ação quando você tenta abrir algo que foi baixado em um navegador, mas isso não é aplicável no mecanismo interno de atualização de software de um aplicativo. É 100% responsabilidade do desenvolvedor validar qualquer coisa que seu software baixe e instale no seu computador – não deixe este desenvolvedor te enganar fazendo você acreditar que isso é uma falha do Gatekeeper. Indo ao coração do exploit, um invasor pode enganar o SuperDuper para instalar um pacote alternativo, e isso acontece com privilégios elevados. Presumivelmente, também seria executado com acesso total ao disco, porque o SuperDuper exige acesso total ao disco para fazer qualquer coisa.
O blog do desenvolvedor também afirma:
Isso só pode acontecer se um programa em execução no seu sistema estiver procurando pelo SuperDuper para realizar uma atualização, uma atualização real for apresentada por meios legítimos e você clicar em Atualizar.
Com esse comentário, assumi que provavelmente não seria possível reproduzir este exploit porque envolveria alterações no lado do servidor no mecanismo de atualização que teriam sido feitas juntamente com a postagem do patch 3.11. Em outras palavras, para impedir que versões mais antigas do software sejam afetadas por esta vulnerabilidade, certamente eles desabilitaram o mecanismo de atualização, certo? Bem... baixei uma versão mais antiga do SuperDuper e, quando a abri, fui imediatamente recebido com uma notificação de atualização† – a um clique de um exploit potencial. Achei isso muito intrigante – como alguém que usa uma versão mais antiga do aplicativo será protegido desta vulnerabilidade se o mecanismo de atualização automática não estiver desabilitado? (isso está relacionado ao "alerta" que mencionei no início deste artigo, voltarei a esta pergunta no final)
† Mais ou menos... O resultado foi muito estranho. Não havia descrição da atualização nem aviso de segurança, a janela estava apenas em branco com um botão Pular e Atualizar. Portanto, os usuários mais antigos não estão apenas desprotegidos do exploit por terem o mecanismo de atualização desabilitado, mas também não são informados do problema através do mecanismo de atualização.
Avancei. Quando você aplica a atualização, os mecanismos internos são registrados de forma útil no log do SuperDuper, então começaremos por aí para ver como funciona:
Transcript : UpgradeTranscript.plist
Ext Logging : Disabled
PHASE: 1. Upgrade Application
...ACTION: Downloading upgrade package
......COMMAND => Downloading update package...
......COMMAND => Preparing update package
...ACTION: Installing upgrade package
......COMMAND => Preserving SDAgent owner and mode bits
......COMMAND => Installing upgrade package
installer[3148] <Debug>: Product archive /tmp/SuperDuper!.pkg trustLevel=350
Muitos aplicativos Mac que vivem fora da Mac App Store usam o framework Sparkle de código aberto para gerenciar atualizações de software de forma segura. Não o SuperDuper. Podemos ver aqui que eles criaram o seu próprio, e este é um ótimo exemplo de por que isso é muitas vezes uma má escolha. Mecanismos de atualização de software são alvos principais para exploits, então exigem muito tempo e expertise para mantê-los seguros. "UpgradeTranscript.plist" é uma referência a um arquivo dentro do aplicativo SuperDuper que descreve uma série de comandos do Terminal que o SuperDuper usa para baixar e aplicar a atualização:
cat /Applications/SuperDuper\!.app/Contents/Resources/Transcripts/UpgradeTranscript.plist
<?xml version="1.0" encoding="UTF-8"?>
...
/usr/bin/curl SDHTTPproxy.Host --silent --show-error --output /tmp/superduper.tar.gz -L SDdownloadURL
cd /tmp; if [ -d superduper_install ]; then /bin/rm -rf superduper_install; fi; /bin/mkdir superduper_install; /usr/bin/tar xzf superduper.tar.gz; /bin/rm /tmp/superduper.tar.gz; if [ -d '/Library/Receipts/SuperDuper!.pkg' ]; then /bin/rm -rf '/Library/Receipts/SuperDuper!.pkg'; fi;
/usr/sbin/installer -allow -verboseR -dumplog -pkg '/tmp/SuperDuper!.pkg' -target / >&1 2>&1;
if [ ! -d '/tmp/superduper_install/SuperDuper!.app' ]; then /usr/bin/ditto -rsrc '/Applications/Utilities/SuperDuper!.app' '/tmp/superduper_install/SuperDuper!.app'; fi