Incidente de seguridad 12604 de Apple curl
- El 28 de diciembre de 2023, se presentó el reporte de bug 12604 en el rastreador de issues de curl.
- El título del problema era "flag –cacert behavior isn’t consistent between macOS and Linux", señalando que el comportamiento de la bandera
--cacert no es consistente entre macOS y Linux.
- El reportero mostró que la versión de curl incluida con macOS se comporta de forma distinta al binario de curl compilado completamente desde el código abierto.
La versión de Apple revisa en segundo lugar el almacén de CA del sistema
- La opción de línea de comandos
--cacert ofrece una forma de indicarle a curl que confíe solo en un conjunto específico de certificados CA.
- Al usar en macOS la versión de curl proporcionada por Apple, si el conjunto de certificados CA entregado falla en la validación, aparentemente revisa en segundo lugar el almacén de CA del sistema.
- Esto no está documentado y es un comportamiento inesperado para el usuario.
Esto es un problema de seguridad
- Cuando el usuario ejecuta la verificación con un archivo de certificados CA especificado, si en el almacén de CA del sistema existe un certificado capaz de validar el servidor, la verificación no falla.
- Esto provoca un problema de seguridad en el que una verificación de certificados que no debería pasar termina pasando.
Apple dice que no hay problema
- El 8 de marzo de 2024, Apple Product Security respondió que la versión de OpenSSL (LibreSSL) usa intencionalmente el almacén de confianza del sistema integrado como fuente de confianza predeterminada.
- Como el certificado del servidor puede validarse correctamente usando el almacén de confianza del sistema integrado, no lo consideran un problema.
No estoy de acuerdo
- Debido a esta función no documentada, la validación de certificados CA usando curl en macOS no es completamente confiable y no coincide con la documentación.
- Esto puede confundir a los usuarios.
- Como este problema no es una vulnerabilidad de seguridad en la versión de curl que distribuimos, no emitiremos un CVE.
- Estrictamente hablando, el problema no está en el código de curl, sino en la versión de LibreSSL que Apple proporciona y usa para compilar curl.
Opinión de GN⁺
- Este incidente subraya la importancia de la seguridad y la confiabilidad del software. Cuando un usuario quiere usar únicamente los certificados CA en los que confía explícitamente, que el sistema acepte implícitamente otros certificados puede generar una seria preocupación de seguridad.
- La respuesta de Apple muestra que existe una brecha entre los criterios de seguridad definidos por la empresa y las expectativas de la comunidad de código abierto. Esto puede detonar una discusión sobre cómo usuarios y desarrolladores deben percibir y gestionar la seguridad en esa plataforma.
- Este tipo de problemas destaca los asuntos de dependencias e integración que pueden surgir al usar software de código abierto. Los desarrolladores deben reconocer estas diferencias y responder adecuadamente al usar bibliotecas y herramientas provistas por una plataforma específica.
- Otros proyectos que ofrecen funciones similares incluyen OpenSSL y GnuTLS, cada uno con su propia filosofía e implementación de seguridad. Los usuarios y desarrolladores pueden considerar estas alternativas.
- Al adoptar una tecnología, se debe revisar cuidadosamente su modelo de seguridad y la compatibilidad entre plataformas. Este incidente pone de relieve la importancia de la elección tecnológica al revelar que la implementación de LibreSSL de Apple funciona de manera distinta al comportamiento estándar de curl.
1 comentarios
Opinión de Hacker News
Crítica a cierta "función" de Apple
La política de Apple prevalece independientemente de la intención del propietario del dispositivo Apple
Explicación sobre el uso del almacén de CA en libcurl
CURLSSLOPT_NATIVE_CA, libcurl utiliza el almacén de CA predeterminado del sistema operativo para realizar la validación de certificados.--cacert, libcurl puede intentar respetar ambas configuraciones, lo que sugiere que podrían ser mutuamente excluyentes.Una situación similar al incidente de SQLite F_BARRIERFSYNC
Necesidad de que curl haga una corrección según lo señalado por Daniel
Problemas en la documentación de curl y una falla de seguridad en libcurl
Desconfianza hacia el software incluido en macOS
El comportamiento predeterminado de Apple puede considerarse una puerta trasera
Crítica a que Apple no da importancia a la seguridad del usuario