Incidente de segurança do curl da Apple 12604
- Em 28 de dezembro de 2023, o relatório de bug 12604 foi enviado ao rastreador de issues do curl.
- O título do problema era "flag –cacert behavior isn’t consistent between macOS and Linux", apontando que o comportamento da flag
--cacert não é consistente entre macOS e Linux.
- O autor do relatório mostrou que a versão do curl incluída no macOS se comporta de forma diferente do binário do curl compilado totalmente a partir do código aberto.
A versão da Apple consulta o repositório de CAs do sistema em segundo lugar
- A opção de linha de comando
--cacert fornece uma forma de instruir o curl a confiar apenas em um conjunto específico de certificados de CA.
- Ao usar no macOS a versão do curl fornecida pela Apple, parece que, se a validação falhar com o conjunto de certificados de CA fornecido, ele consulta o repositório de CAs do sistema como uma segunda etapa.
- Isso não está documentado e é um comportamento inesperado para o usuário.
Isso é um problema de segurança
- Ao executar a verificação com um arquivo de certificado de CA especificado pelo usuário, se houver no repositório de CAs do sistema um certificado capaz de validar o servidor, a verificação não falha.
- Isso cria um problema de segurança em que uma verificação de certificado que não deveria passar acaba sendo aprovada.
A Apple diz que não há problema
- Em 8 de março de 2024, a equipe de segurança de produtos da Apple respondeu que a versão do OpenSSL (LibreSSL) usa intencionalmente o repositório de confiança embutido do sistema como fonte de confiança padrão.
- Como o certificado do servidor pode ser validado com sucesso usando o repositório de confiança embutido do sistema, eles não consideram isso um problema.
Discordo
- Por causa dessa funcionalidade não documentada, a validação de certificados de CA com curl no macOS não é totalmente confiável e não corresponde à documentação.
- Isso pode confundir os usuários.
- Como esse problema não é uma vulnerabilidade de segurança na versão do curl que distribuímos, nenhum CVE será emitido.
- Estritamente falando, o problema não está no código do curl, mas na versão do LibreSSL fornecida pela Apple e usada na compilação do curl.
Opinião do GN⁺
- Este incidente destaca a importância da segurança e da confiabilidade do software. Quando o usuário quer usar apenas certificados de CA explicitamente confiáveis, o fato de o sistema aceitar implicitamente outros certificados pode gerar uma séria preocupação de segurança.
- A resposta da Apple mostra que existe uma lacuna entre os padrões de segurança definidos pela própria empresa e as expectativas da comunidade de código aberto. Isso pode estimular discussões sobre como usuários e desenvolvedores devem perceber e gerenciar a segurança nessa plataforma.
- Esse tipo de problema destaca questões de dependência e integração que podem surgir ao usar software de código aberto. Desenvolvedores precisam estar cientes dessas diferenças ao usar bibliotecas e ferramentas fornecidas por plataformas específicas e reagir de forma adequada.
- Outros projetos com funcionalidades semelhantes incluem OpenSSL e GnuTLS, cada um com sua própria filosofia de segurança e forma de implementação. Usuários e desenvolvedores podem considerar essas alternativas.
- Ao adotar uma tecnologia, é preciso revisar cuidadosamente seu modelo de segurança e a compatibilidade entre plataformas. Este incidente reforça a importância da escolha tecnológica ao mostrar que a implementação do LibreSSL da Apple funciona de maneira diferente do comportamento padrão do curl.
1 comentários
Opiniões no Hacker News
Crítica a uma determinada "funcionalidade" da Apple
A política da Apple prevalece independentemente da intenção do proprietário do dispositivo Apple
Explicação sobre o uso do repositório de CAs do libcurl
CURLSSLOPT_NATIVE_CA, o libcurl usa o repositório padrão de CAs do sistema operacional para realizar a verificação de certificados.--cacert, o libcurl pode tentar respeitar ambas as configurações, o que sugere que elas podem ser mutuamente exclusivas.Situação semelhante ao caso SQLite F_BARRIERFSYNC
Necessidade de correção do curl após o apontamento de Daniel
Problemas na documentação do curl e falha de segurança no libcurl
Desconfiança em relação ao software incluído no macOS
O comportamento padrão da Apple pode ser considerado um backdoor
Crítica ao fato de a Apple não se importar com a segurança do usuário