1 pontos por GN⁺ 2024-03-10 | 1 comentários | Compartilhar no WhatsApp

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

 
GN⁺ 2024-03-10
Opiniões no Hacker News
  • Crítica a uma determinada "funcionalidade" da Apple

    • Essa funcionalidade pode adicionar computação desnecessária ou quebrar o modelo de verificação esperado.
    • O motivo para um usuário querer fornecer sua própria CA pode ser a ausência dessa CA no pacote do sistema operacional ou o desejo de validar contra uma CA específica.
    • Essa atitude da Apple não produz o resultado esperado.
  • A política da Apple prevalece independentemente da intenção do proprietário do dispositivo Apple

    • Não é surpreendente, é um fenômeno comum que a política da Apple prevaleça e ignore o que o "proprietário" do dispositivo Apple deseja.
  • Explicação sobre o uso do repositório de CAs do libcurl

    • Ao definir a opção CURLSSLOPT_NATIVE_CA, o libcurl usa o repositório padrão de CAs do sistema operacional para realizar a verificação de certificados.
    • Se um arquivo ou diretório de certificados CA for configurado, eles também serão pesquisados junto com o repositório padrão de CAs.
    • Quando combinado com a opção --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

    • A Apple parece não se importar.
  • Necessidade de correção do curl após o apontamento de Daniel

    • Se Daniel apontar um problema no curl, a Apple deve corrigi-lo.
  • Problemas na documentação do curl e falha de segurança no libcurl

    • O curl não implementa diretamente todos os protocolos, e sim oferece suporte a várias bibliotecas.
    • A desvantagem dessa abordagem é a dificuldade de garantir um comportamento consistente entre backends independentes.
    • O libressl não é uma reimplementação perfeita do openssl e não tem obrigação de imitar completamente sua API.
    • O curl tem duas opções: encerrar o suporte a essa biblioteca ou documentar o problema.
    • Para evitar quebrar o código dos usuários, pelo menos o problema deveria ser documentado.
    • A abordagem do libressl é falha do ponto de vista de segurança, e pode haver motivo para abrir um CVE.
  • Desconfiança em relação ao software incluído no macOS

    • Usa-se o MacPorts para sobrescrever as ferramentas incluídas no macOS (por exemplo, curl), pois elas muitas vezes estão desatualizadas ou apresentam problemas.
  • O comportamento padrão da Apple pode ser considerado um backdoor

    • Não se está dizendo que seja intencional ou malicioso, mas na prática pode funcionar como um backdoor.
    • Adicionar chaves ao esquema de autenticação do usuário é o mesmo que adicionar um backdoor.
  • Crítica ao fato de a Apple não se importar com a segurança do usuário

    • O comportamento padrão e o comportamento alternativo são diferentes.
    • Isso sugere que a equipe de segurança da Apple pode ter problemas de compreensão de leitura.