PyPI de Python revela sus secretos
GitGuardian es famoso por su informe anual State of Secrets Sprawl . En su informe de 2023, encontraron más de 10 millones de contraseñas, claves API y otras credenciales expuestas en confirmaciones públicas de GitHub. Las conclusiones de su informe de 2024 no solo destacaron 12,8 millones de nuevos secretos expuestos en GitHub, sino también una cantidad en el popular repositorio de paquetes Python PyPI .
PyPI, abreviatura de Python Package Index, alberga más de 20 terabytes de archivos que están disponibles gratuitamente para su uso en proyectos de Python. Si alguna vez escribió pip install [nombre del paquete], probablemente extrajo ese paquete de PyPI. Mucha gente también lo usa. Ya sea GitHub, PyPI u otros, el informe afirma que "los paquetes de código abierto representan aproximadamente el 90% del código que se ejecuta en producción hoy en día " . Es fácil ver por qué es entonces cuando estos paquetes ayudan a los desarrolladores a evitar la reinvención de millones. de ruedas todos los días.
En el informe de 2024, GitGuardian informó haber encontrado más de 11.000 secretos únicos expuestos , de los cuales 1.000 se agregaron a PyPI en 2023. Eso no es mucho en comparación con los 12,8 millones de nuevos secretos agregados a GitHub en 2023, pero GitHub es órdenes de magnitud mayor.
Un hecho más preocupante es que, de los secretos introducidos en 2017, casi 100 seguían siendo válidos 6 o 7 años después. No tenían la capacidad de comprobar la validez de todos los secretos. Aun así, se descubrieron más de 300 secretos únicos y válidos. Si bien esto es levemente alarmante para el observador casual y no necesariamente una amenaza para los desarrolladores aleatorios de Python (a diferencia de los 116 paquetes maliciosos reportados por ESET a fines de 2023), es una amenaza de magnitud desconocida para los propietarios de esos paquetes.
Si bien GitGuardian tiene cientos de detectores de secretos, que ha desarrollado y perfeccionado a lo largo de los años, algunos de los secretos más comunes que detectó en su estudio general de 2023 fueron las claves API de OpenAI, las claves API de Google y las claves de Google Cloud. No es difícil para un programador competente escribir una expresión regular para encontrar un formato secreto único y común. E incluso si arrojara muchos falsos positivos, automatizar las comprobaciones para determinar si eran válidos podría ayudar al desarrollador a encontrar un pequeño tesoro de secretos explotables.
Ahora es una lógica aceptada que si una clave se ha publicado en un repositorio público como GitHub o PyPI, debe considerarse comprometida. En las pruebas, los robots probaron la validez de los Honeytokens (una especie de clave API "descolgada" sin acceso a ningún recurso) un minuto después de su publicación en GitHub. De hecho, los Honeytokens actúan como un "canario" para un número cada vez mayor de desarrolladores. Dependiendo de dónde haya colocado un token de miel específico, puede ver que alguien ha estado husmeando allí y obtener información sobre ellos en función de los datos de telemetría recopilados cuando se usa el token de miel.
La mayor preocupación cuando se publica accidentalmente un secreto no es sólo que un actor malintencionado pueda aumentar su factura de la nube. Es a donde pueden ir desde allí. Si se filtrara un token de AWS IAM con permisos excesivos, ¿qué podría encontrar ese actor malicioso en los depósitos o bases de datos de S3 a los que otorga acceso? ¿Podría ese actor malicioso obtener acceso a otro código fuente y corromper algo que será entregado a muchos otros?
Ya sea que estés guardando secretos en GitHub, PyPI, NPM o cualquier colección pública de código fuente, el mejor primer paso cuando descubres que se ha filtrado un secreto es revocarlo. Recuerde esa pequeña ventana entre la publicación y la explotación de un token de miel. Una vez que se ha publicado un secreto, es probable que haya sido copiado. Incluso si no ha detectado un uso no autorizado, debe asumir que alguien no autorizado y malicioso ahora lo tiene.
Incluso si su código fuente está en un repositorio privado, abundan las historias de actores maliciosos que obtienen acceso a repositorios privados mediante ingeniería social, phishing y, por supuesto, secretos filtrados. Si hay una lección en todo esto, es que los secretos de texto plano en el código fuente eventualmente se descubren. Ya sea que se publiquen accidentalmente en público o que alguien con acceso que no debería tener los encuentre, los encontrará.
En resumen, dondequiera que almacene o publique su código fuente, ya sea un repositorio privado o un registro público, debe seguir algunas reglas simples:
- No almacene secretos en texto plano en el código fuente.
- Evite que aquellos que se apoderan de un secreto vayan a una expedición manteniendo estrictamente los privilegios que esos secretos otorgan.
- Si descubre que filtró un secreto, revoquelo. Es posible que necesite tomarse un poco de tiempo para asegurarse de que sus sistemas de producción tengan el secreto nuevo y revelado para la continuidad del negocio, pero revocarlo tan pronto como sea posible.
- Implemente automatizaciones como las que ofrece GitGuardian para asegurarse de no depender de humanos imperfectos para observar perfectamente las mejores prácticas en torno a la gestión de secretos.
Si los sigue, es posible que no tenga que aprender las lecciones que 11.000 propietarios de secretos probablemente hayan aprendido de la manera más difícil al publicarlos en PyPI.
0 comentarios:
Publicar un comentario