En el repositorio de paquetes de Python PyPI (Python Package Index) se ha introducido un nuevo método seguro de publicación de paquetes, que permite prescindir del almacenamiento de contraseñas fijas y tokens de acceso a la API en sistemas externos (por ejemplo, en GitHub Actions). Este nuevo método de autenticación se ha denominado 'Trusted Publishers' y tiene como objetivo resolver el problema de la publicación de actualizaciones maliciosas debido a la compromisión de sistemas externos y la obtención de contraseñas o tokens predefinidos por parte de atacantes.
El nuevo método de autenticación se basa en el uso del estándar OpenID Connect (OIDC), que implica el uso de tokens de autenticación de duración limitada, que son intercambiados entre servicios externos y el catálogo de PyPI para confirmar la operación de publicación del paquete en lugar de utilizar las tradicionales credenciales de nombre de usuario/contraseña o tokens de acceso a la API generados manualmente y de forma permanente. La posibilidad de aplicar el mecanismo 'Trusted Publishers' ya se ha implementado para los controladores que se ejecutan en GitHub Actions. Se espera que en el futuro se implemente el soporte para Trusted Publishers también en otros servicios externos.
Los paquetes relacionados pueden en el lado de PyPI establecer un indicador de confianza para los identificadores proporcionados por proveedores externos de OpenID (IdP, OpenID Connect Identity Provider), que el servicio externo utilizará para solicitar a PyPI tokens de corta duración. Los tokens generados por OpenID Connect confirman la relación entre el proyecto y el controlador, lo que permite a PyPI realizar una verificación adicional de los metadatos, por ejemplo, comprobando que el paquete publicado corresponde a un repositorio específico. Los tokens no se almacenan, están vinculados a APIs específicas y caducan automáticamente después de un corto periodo de tiempo.
Además, se puede destacar el informe de la empresa Sonatype que informa sobre la detección en marzo de 2023 de 6933 paquetes maliciosos en el catálogo de PyPI. Desde 2019, el número total de paquetes maliciosos identificados en PyPI ha superado los 115 mil. La mayoría de los paquetes maliciosos se ocultan bajo bibliotecas populares mediante técnicas de typosquatting (designación de nombres similares que difieren en caracteres individuales, por ejemplo, exampl en lugar de example, djangoo en lugar de django, pyhton en lugar de python, etc.) — los atacantes cuentan con usuarios descuidados que cometen errores tipográficos o no notan las diferencias en los nombres al buscar. Las actividades maliciosas generalmente se reducen a enviar datos confidenciales encontrados en el sistema local como resultado de la identificación de archivos típicos que contienen contraseñas, claves de acceso, criptobolsas, tokens, cookies de sesión y otra información confidencial.
Fuente: opennet.ru
