macOS: Aviso "App Está Danificado": Por Que Acontece e Como Corrigir

macOS: Aviso "App Está Danificado": Por Que Acontece e Como Corrigir

Apple macOS Gatekeeper4 min de leitura

Por Que Este Aviso Aparece?

O macOS usa um mecanismo de segurança chamado Gatekeeper para proteger os usuários de softwares maliciosos. O Gatekeeper espera que aplicativos baixados da internet estejam assinados com um certificado Apple Developer e notarizados pela Apple. Quando um app não passa nessas verificações, o macOS pode se recusar a abri-lo — e a mensagem exibida costuma ser o alarmante "está danificado e não pode ser aberto".

Uma observação sobre o OpenGnothia: as versões atuais são assinadas com um certificado Apple Developer e notarizadas pela Apple, portanto abrem normalmente, sem nenhum aviso e sem etapas adicionais. As versões anteriores eram distribuídas sem assinatura, então um download muito antigo que você tenha guardado ainda pode provocar essa mensagem. O restante deste guia explica o aviso de forma geral — ele vale para qualquer app, de qualquer desenvolvedor, que o Gatekeeper não consiga verificar.

O aviso não significa que o arquivo esteja realmente danificado nem que contenha malware. É apenas a resposta do macOS a um app cuja assinatura ele não consegue verificar. Um download genuinamente corrompido é possível, mas bem menos comum do que um problema de assinatura.

O Que é o macOS Gatekeeper?

O Gatekeeper é um dos recursos de segurança integrados do macOS. Desde o macOS Catalina (10.15), as políticas de segurança foram ainda mais restringidas. O Gatekeeper opera em três níveis: aplicativos baixados da App Store (mais confiáveis), aplicativos assinados de desenvolvedores identificados e aplicativos de fontes desconhecidas.

Quando você baixa um arquivo da internet, o macOS adiciona um atributo especial chamado com.apple.quarantine (um atributo estendido) ao arquivo. Quando o aplicativo é aberto pela primeira vez, o Gatekeeper verifica esse atributo e avalia a confiabilidade do aplicativo.

Para aplicativos não assinados, o Gatekeeper pode exibir dois avisos diferentes: "[App] não pode ser aberto porque a Apple não pode verificar se contém software malicioso" ou o mais severo "[App] está danificado e não pode ser aberto. Você deve movê-lo para a Lixeira." O segundo aviso é particularmente comum no macOS Ventura e versões posteriores.

Solução: Remover o Atributo de Quarentena via Terminal

Para resolver, remova o atributo de quarentena que o macOS anexou ao arquivo no momento do download. A operação é segura e apenas limpa essa marcação — ela não modifica o aplicativo em si.

Passo 1: Abra o aplicativo Terminal. Pressione Command + Espaço para abrir o Spotlight, digite "Terminal" e pressione Enter.

Passo 2: Digite o comando a seguir, substituindo AppName pelo nome real do aplicativo, e pressione Enter:

xattr -cr /Applications/AppName.app

Se o app ainda estiver na pasta Downloads em vez de Aplicativos, aponte o comando para lá:

xattr -cr ~/Downloads/AppName.app

Um atalho útil: digite "xattr -cr " com um espaço no final e depois arraste o app do Finder para a janela do Terminal. O macOS preenche o caminho exato para você, evitando erros de digitação.

Passo 3: Depois de executar o comando, abra o app normalmente. O macOS deixará de tratá-lo como em quarentena.

O Que o Comando Faz?

O comando xattr é usado para gerenciar atributos estendidos em arquivos no macOS. Veja o que as flags em nosso comando significam:

A flag -c: Limpa todos os atributos estendidos do arquivo (clear). Isso inclui o atributo com.apple.quarantine.

A flag -r: Aplica a operação a subpastas também (recursive). Um arquivo .app é na verdade uma estrutura de pastas, então precisamos limpar todos os sub-arquivos também.

Este comando apenas modifica atributos de arquivo — não afeta o aplicativo em si ou as configurações do seu sistema. É completamente seguro de usar.

Método Alternativo: Configurações do Sistema

Se preferir não usar o Terminal, você também pode tentar resolver pelas Configurações do Sistema do macOS, embora esse método nem sempre funcione.

Passo 1: Tente abrir o app, receba o aviso e feche-o.

Passo 2: Vá em Configurações do Sistema > Privacidade e Segurança.

Passo 3: Na parte inferior da página, você verá uma mensagem como "[App] foi bloqueado porque não é de um desenvolvedor identificado". Clique no botão "Abrir Mesmo Assim" ao lado dela.

Passo 4: Outra caixa de confirmação aparecerá — clique em "Abrir".

Observação: Se você está recebendo o aviso mais severo de "está danificado" em vez do de "não pode ser verificado", esse método normalmente não funciona, porque o macOS sequer chega a oferecer o botão de exceção. Nesse caso, use o método do Terminal acima.

Perguntas Frequentes

Executei o comando xattr, mas o app continua sem abrir. O que faço? Primeiro confira o caminho: rode ls /Applications/ no Terminal para confirmar que o app está mesmo lá. Verifique também se você arrastou o app de dentro do DMG montado para a pasta Aplicativos; executar um app de dentro do DMG causa problemas próprios. Se ainda assim falhar, o download pode estar realmente corrompido — baixe novamente.

Isso é seguro? O comando em si é seguro: o xattr -cr remove apenas metadados que o macOS anexou ao arquivo, sem alterar o código do aplicativo nem as suas configurações de segurança do sistema. O julgamento está em onde você o aplica. Limpar a marcação de quarentena é justamente o que impede o Gatekeeper de checar o app, então use-o somente em softwares vindos de uma fonte em que você realmente confia.

Preciso fazer isso após cada atualização? Apenas para apps sem assinatura. O macOS anexa um novo atributo de quarentena a cada download, então um app sem assinatura precisará do comando de novo após cada atualização. Apps devidamente assinados e notarizados — incluindo as versões atuais do OpenGnothia — nunca precisam disso.

Esse problema ocorre no Windows ou Linux? Não, esse aviso específico vem do Gatekeeper do macOS. O Windows tem um recurso comparável no SmartScreen, mas ele exibe um aviso diferente, com sua própria opção "Executar assim mesmo". O Linux não traz um equivalente por padrão.