L’incident de sécurité Apple curl 12604
- Le 28 décembre 2023, le rapport de bug 12604 a été soumis sur le tracker d’issues de curl.
- Le problème portait le titre "flag –cacert behavior isn’t consistent between macOS and Linux" et signalait que le comportement du flag
--cacert n’était pas cohérent entre macOS et Linux.
- Le rapporteur a montré que la version de curl intégrée à macOS se comportait différemment d’un binaire curl entièrement compilé en open source.
La version d’Apple vérifie en second le magasin système des CA
- L’option de ligne de commande
--cacert permet d’indiquer à curl de ne faire confiance qu’à un ensemble spécifique de certificats d’autorité de certification (CA).
- Sur macOS, lorsqu’on utilise la version de curl fournie par Apple, si la validation échoue avec l’ensemble de certificats CA fourni, elle semble alors vérifier en second le magasin système des CA.
- Ce comportement n’est pas documenté et il est inattendu pour les utilisateurs.
Il s’agit d’un problème de sécurité
- Lorsqu’un utilisateur exécute une vérification avec un fichier de certificats CA spécifié, si le magasin système des CA contient un certificat capable de valider le serveur, l’opération n’échoue pas.
- Cela crée un problème de sécurité, car une vérification de certificat qui ne devrait pas passer finit par être acceptée.
Apple affirme qu’il n’y a pas de problème
- Le 8 mars 2024, l’équipe de sécurité produit d’Apple a répondu que la version d’OpenSSL (LibreSSL) utilise intentionnellement le magasin de confiance système intégré comme source de confiance par défaut.
- Comme le certificat du serveur peut être validé avec succès à l’aide du magasin de confiance système intégré, Apple ne considère pas cela comme un problème.
Pas d’accord
- À cause de cette fonctionnalité non documentée, la validation des certificats CA avec curl sur macOS n’est pas totalement fiable et ne correspond pas à la documentation.
- Cela peut semer la confusion chez les utilisateurs.
- Comme ce problème n’est pas une vulnérabilité de sécurité dans la version de curl que nous distribuons, aucun CVE n’est émis.
- Le problème ne se situe pas, à proprement parler, dans le code de curl, mais dans la version de LibreSSL fournie par Apple et utilisée pour compiler curl.
L’avis de GN⁺
- Cet incident souligne l’importance de la sécurité et de la fiabilité des logiciels. Lorsqu’un utilisateur souhaite n’utiliser que les certificats CA auxquels il fait explicitement confiance, le fait que le système accepte implicitement d’autres certificats peut soulever de sérieuses inquiétudes de sécurité.
- La réponse d’Apple montre qu’il existe un écart entre les critères de sécurité définis par l’entreprise elle-même et les attentes de la communauté open source. Cela peut lancer une discussion sur la manière dont utilisateurs et développeurs doivent percevoir et gérer la sécurité sur cette plateforme.
- Ce problème met en évidence les questions de dépendances et d’intégration qui peuvent survenir lors de l’utilisation de logiciels open source. Les développeurs doivent être conscients de ces différences lorsqu’ils utilisent des bibliothèques et des outils fournis par une plateforme spécifique, et y répondre de manière appropriée.
- D’autres projets offrant des fonctionnalités similaires incluent OpenSSL et GnuTLS, chacun avec sa propre philosophie de sécurité et sa propre approche d’implémentation. Les utilisateurs et les développeurs peuvent envisager ces alternatives.
- Lors de l’adoption d’une technologie, il faut examiner attentivement son modèle de sécurité et sa compatibilité entre plateformes. Cet incident montre que l’implémentation de LibreSSL par Apple fonctionne différemment du comportement standard de curl, ce qui souligne l’importance des choix technologiques.
1 commentaires
Avis Hacker News
Critique d’une certaine « fonctionnalité » d’Apple
La politique d’Apple prime, indépendamment de l’intention du propriétaire de l’appareil Apple
Explication sur l’utilisation du magasin de CA de libcurl
CURLSSLOPT_NATIVE_CAest activée, libcurl utilise le magasin de CA par défaut du système d’exploitation pour effectuer la validation des certificats.--cacert, libcurl peut tenter de respecter les deux réglages, ce qui laisse entendre qu’ils peuvent être mutuellement exclusifs.Une situation similaire à l’affaire SQLite F_BARRIERFSYNC
Nécessité pour Apple de corriger curl selon la remarque de Daniel
Problèmes de documentation de curl et faille de sécurité de libcurl
Méfiance envers les logiciels inclus dans macOS
Le comportement par défaut d’Apple pourrait être considéré comme une porte dérobée
Critique du fait qu’Apple ne se soucie pas de la sécurité des utilisateurs