Sin dudas, uno de los grandes problemas que enfrenta el repositorio de paquetes de Python (PyPI) es el tema de la seguridad tanto en la introduccion de paquetes, asi como también en la seguridad de las cuentas de los desarrolladores.
Y es que lo más común de escuchar sobre estos problemas es la detección de paquetes maliciosos, lo cual va de la mano con la explotación de fallas en PyPI o también por parte de los desarrolladores de aplicaciones.
La razón de hablar de ello, es que hace poco los administradores de PyPI dieron a conocer mediante una publican de blog los detalles de sobre como un atacante pudo apoderarse del control de la cuenta de un usuario de PyPI y se utilizó para eliminar la propiedad del usuario de 4 proyectos.
Cabe mencionar que sobre este incidente, ahora no fue por ningún tipo de cuestiones de PyPI (vulnerabilidades), sino que la cuenta del usuario no estaba suficientemente protegida contra la apropiación de la cuenta.
Sobre el incidente, se menciona que el atacante, que obtuvo el control de los proyectos, fue bloqueado rápidamente y no tuvo tiempo de realizar cambios y crear versiones modificadas de los repositorios de los cuales obtuvo el control.
Por la parte de los detalles de como el atacante obtuvo el control de la cuenta, se menciona que la adquisición se llevó a cabo mediante la sustitución del propietario del proyecto (el atacante se añadió como colaborador de estos proyectos, y eliminó al propietario original).
El orden cronológico de los movimientos que realizo el atacante, se describen a continuación:
Fecha: 2023-11-22
- 08:42:33 nueva cuenta de usuario dvolk creada
La cuenta 08:44:55 meisnate12 invita a dvolk a ser colaborador en arrapi - 08:47:25 dvolk acepta la invitación
- 08:47:35 dvolk elimina a meisnate12 como colaborador en arrapi (repetido para tmdbapis, nagerapi, pmmutils)
- 08:50:27 se eliminó la cuenta meisnate12
No se observaron más acciones por parte de dvolk después de este punto. - 14:33, admin@pypi.org recibe un correo electrónico desde la dirección asociada con meinstate12’s cuenta:
Tomando en cuenta el orden cronológico, pasaron solo 5 horas de que los proyectos fueran asumidos para que los administradores de PyPI recibieran un mensaje del autor original sobre lo que había sucedido, bloquearon la cuenta del atacante y restauraron la propiedad de los proyectos.
- 14:46 Un administrador de PyPI responde con:
Gracias por el informe. Hemos congelado la cuenta en cuestión mientras investigamos esto.
- 14:44 Los administradores de PyPI discuten las opciones en el canal Slack de administradores de PyPI con otros dos administradores de PyPI
- 14:46 Un administrador de PyPI desactiva la
dvolk
cuenta
La causa del incidente se identificó como una seguridad inadecuada de la cuenta y la falta de uso de la autenticación de dos factores, lo que permitió al atacante determinar los parámetros de inicio de sesión para el usuario «meisnate12» y realizar acciones en su nombre.
Nos integramos con HaveIBeenPwned para verificar la contraseña de un usuario contra su servicio en cada inicio de sesión. Desafortunadamente, la contraseña en cuestión no había aparecido anteriormente. en una infracción que HaveIBeenPwned conoce, por lo que esto no evitó el ataque.
Es debido a este tipo de incidentes que los administradores de PyPI para finales de este año, tiene la intención de transferir todas las cuentas de usuario que respaldan al menos un proyecto o miembros de organizaciones supervisoras al uso obligatorio de la autenticación de dos factores. Ya´que desde el año pasado, debido a un incidente, se tomó esta decisión y desde entonces los desarrolladores han estado implementando los cambios de manera paulatina para la implantación de 2FA
Y es que con el uso de la autenticación de dos factores, los administradores de PyPI mencionan que se fortalecerá la protección del proceso de desarrollo y protegerá los proyectos de cambios maliciosos como resultado de credenciales filtradas, uso de la misma contraseña en sitios comprometidos, hackeo del sistema local del desarrollador o utilización de métodos de ingeniería social.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.