Tal parece que todas las medidas de seguridad en las que han estado trabajando en el repositorio de paquetes Python PyPI (Python Package Index), no han servido de mucho, ya que aunque obligaran a los usuarios a utilizar la autenticación de dos factores y la implementación de medidas de seguridad pará evitar en lo mayor posible la introduccion de paquetes maliciosos, aún continúan teniendo una gran cantidad de problemas con ello.
Y es que uno de los grandes problemas que azota a NPM es la carga descarada de paquetes malintencionados, los cual es una problemática que ha tenido durante los últimos años y no ha logrado erradicar y la razón de mencionar esto es que esta situación es la misma que está viviendo el PyPi, aunque en menor medida, ya que se han intentado implementar diversos filtros de seguridad, y menciono intentar porque los paquetes mal intencionados siguen apareciendo.
La razón de mencionar esto es que hace poco se impuso una prohibición temporal en el registro de nuevos usuarios y la creación de proyectos nuevos en el repositorio de paquetes Python PyPI debido a un ataque automatizado continuo que ha llevado a la descarga masiva de paquetes maliciosos. Esta medida se tomó después de que se cargaran 566 paquetes con código malicioso, los cuales imitaban el estilo de 16 bibliotecas populares de Python, en el repositorio durante los días 26 y 27 de marzo.
Los nombres de estos paquetes maliciosos se forman utilizando técnicas de typosquatting, que consisten en asignar nombres similares pero con diferencias mínimas en caracteres individuales. Por ejemplo, se utilizan nombres como «temsorflow» en lugar de «tensorflow», «requyests» en lugar de «requests», «asyincio» en lugar de «asyncio», entre otros. Estos ataques aprovechan la distracción de los usuarios, que pueden cometer errores tipográficos al buscar o seguir enlaces en foros y chats donde los atacantes dejan instrucciones engañosas.
Los paquetes maliciosos se basan en el código de bibliotecas legítimas e incluyen cambios que instalan malware en el sistema. Este malware busca y envía datos y archivos confidenciales, como contraseñas, claves de acceso, billeteras criptográficas, tokens y cookies de sesión. El código malicioso está incrustado en el archivo setup.py, que se ejecuta durante la instalación del paquete, y al activarse, descarga componentes maliciosos desde un servidor externo.
Este ataque automatizado de typosquat se llevó a cabo durante unas pocas horas en unas cuantas ráfagas rápidas, fue testigo de la publicación de más de 500 paquetes y apuntó a 16 paquetes populares de PyPI. Si bien la respuesta rápida y contundente de PyPI sin duda ayudó a mitigar las consecuencias de este ataque, vale la pena señalar que no todos los ecosistemas son tan rápidos y efectivos para enfrentar un ataque de este tipo.
El ataque al repositorio de PyPI ha sido bastante extenso y ha afectado a varias bibliotecas populares de Python. Los atacantes lograron descargar variantes maliciosas de paquetes como TensorFlow, BeautifulSoup, PyGame, SimpleJson, Matplotlib, PyTorch, CustomTKInter, Selenium, Dramaturgo, Asincio y Request. Además, se identificaron casos aislados de falsificación de bibliotecas como py-cord, colorama, capmonstercloudclient, pillow y bip-utils.
En cuanto al ataque a la comunidad Top.gg, el atacante comprometió la cuenta de GitHub de uno de los desarrolladores, lo que le permitió robar cookies del navegador y realizar cambios maliciosos.
Se agregaron tres paquetes maliciosos al repositorio de PyPI y se registraron dominios falsos para distribuir dependencias de paquetes maliciosos. A través de una cuenta pirateada, se realizó un cambio en el repositorio de GitHub del proyecto Top.gg, donde se agregó un archivo requisitos.txt que contenía un enlace a un clon malicioso del paquete «colorama» alojado en un dominio falso. El objetivo era engañar a los desarrolladores para que descargaran la versión maliciosa del paquete, ya que el dominio falso se asemejaba al dominio legítimo utilizado para descargar paquetes desde PyPI.
Estos ataques resaltan la importancia de la seguridad en los repositorios de paquetes y la necesidad de que los usuarios y desarrolladores estén alerta ante posibles intentos de compromiso de seguridad y descarga de software malicioso.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.