El 22 de marzo de 2016, el ingeniero de software Azer Koçulu eliminó el left-pad
paquete que había publicado en npm (un administrador de paquetes de JavaScript ). Koçulu eliminó el paquete después de una disputa con Kik Messenger , en la que la empresa tomó por la fuerza el control del nombre del paquete . Como resultado, miles de proyectos de software que usaban como dependencia , incluido el transcompilador Babel y el marco web React , no pudieron construirse ni instalarse. Esto causó una interrupción generalizada, ya que corporaciones tecnológicas pequeñas y grandes, incluidas Meta Platforms , PayPal , Netflix y Spotify , lo usaron en sus productos de software. kik
left-pad
left-pad
Varias horas después de que el paquete fuera eliminado de npm, la empresa detrás de la plataforma, npm, Inc. , restauró manualmente el paquete. Más tarde, npm deshabilitó la capacidad de eliminar un paquete si han transcurrido más de 24 horas desde su fecha de publicación y al menos otro proyecto depende de él. El incidente atrajo la atención generalizada de los medios y las reacciones de las personas de la industria del software . La eliminación de left-pad
ha provocado un debate sobre el autosabotaje intencional del software para promover la justicia social y ha llamado la atención sobre la elevada posibilidad de ataques a la cadena de suministro en la programación modular .
left-pad
fue un paquete de JavaScript gratuito y de código abierto publicado por Azer Koçulu, un ingeniero de software independiente con sede en Oakland, California. [1] El paquete antepone caracteres de forma repetitiva a una cadena utilizando un bucle . [1] se ha caracterizado por ser extremadamente simple, ya que consta de solo 11 líneas de código (cuando se descartan las líneas vacías) en la versión final creada por Koçulu. [2] [3] left-pad
Koçulu se publicó left-pad
en npm , el administrador de paquetes predeterminado para Node.js , un entorno de ejecución de JavaScript . [4] [2] A pesar de su relativa oscuridad, left-pad
fue muy utilizado; el paquete fue utilizado como una dependencia por miles de otros proyectos de software y alcanzó más de 15 millones de descargas antes de su eliminación. [5] [6] Algunos de los proyectos que requerían left-pad
funcionar eran críticos para el ecosistema de JavaScript en ese momento. Esto incluía Babel , un transcompilador que permite un código JavaScript compatible con versiones anteriores, Webpack , un sistema de agrupación de módulos, y tanto React como React Native , que son marcos ampliamente utilizados para el desarrollo de sitios web y aplicaciones móviles , respectivamente. [7] [8] [1]
Además de left-pad
, Koçulu también poseía kik
npm, que era una herramienta que permitía a los desarrolladores configurar plantillas para sus proyectos. [1] El 11 de marzo de 2016, Kik Interactive, una empresa canadiense propietaria de la plataforma de mensajería instantánea Kik Messenger , se puso en contacto con Koçulu y le solicitó que renunciara al control del paquete debido a que la empresa era propietaria de la marca registradakik
"Kik" . [9] Parte de la correspondencia incluía el siguiente mensaje de Kik:
No queremos ser unos imbéciles con [el
kik
paquete], pero es una marca registrada en la mayoría de los países del mundo y si realmente lanzas un proyecto de código abierto llamado kik, nuestros abogados de marcas van a llamar a tu puerta y a cerrar tus cuentas y cosas así, y no tendríamos más opción que hacer todo eso porque tienes que hacer cumplir las marcas registradas o las pierdes. ¿No podemos llegar a algún tipo de compromiso para que cambies el nombre sin involucrar a los abogados? ¿Hay algo que podamos hacer por ti como compensación para que cambies el nombre? [3]
Koçulu respondió poco después, negándose a cambiar el nombre de su proyecto, diciendo:
Jajaja, en realidad estás siendo un idiota. Así que, que te jodan. No me respondas el correo electrónico. [3]
Koçulu también solicitó 30.000 dólares estadounidenses como compensación "por la molestia de renunciar a mi proyecto favorito por un grupo de imbéciles corporativos". [1] El 18 de marzo de 2016, Isaac Z. Schlueter, el director ejecutivo de npm, Inc., escribió tanto a Kik Interactive como a Koçulu, indicando que la propiedad del kik
paquete se transferiría manualmente a Kik Interactive. [1]
Después de que Koçulu expresara su decepción con la decisión de npm, Inc. y declarara que ya no deseaba ser parte de la plataforma, Schlueter le proporcionó un comando para eliminar los 273 módulos que había registrado. [9] Koçulu ejecutó el comando el 22 de marzo de 2016, eliminando todos los paquetes que había publicado anteriormente. [1] left-pad
fue uno de los paquetes que fue "despublicado", lo que lo hizo ya no accesible públicamente en npm. [5] El left-pad
proyecto de software y sus contenidos permanecieron disponibles en GitHub . [9]
Los usuarios que intentaban crear o instalar cualquier proyecto de JavaScript que se usara left-pad
como dependencia (incluidos los dependientes como Babel o Webpack) recibían un error 404 que causaba que el proceso fallara. [1] Notables corporaciones de tecnología de software usaron el paquete, incluidas Meta Platforms , PayPal , Netflix y Spotify . [8] Los propios desarrolladores de Kik Interactive enfrentaron problemas de compilación como resultado de la eliminación del paquete. [1]
Una hora después de haber eliminado los paquetes, Koçulu publicó una entrada en Medium ("Acabo de liberar mis módulos"), explicando que había despublicado sus proyectos de software de npm para protestar contra los intereses corporativos en el software libre y de código abierto. [1]
Poco después de la eliminación, otros desarrolladores de software comenzaron a publicar una avalancha de quejas, reacciones y soluciones alternativas en el sistema de seguimiento de problemas Git del proyecto . [7] [1]
Los mantenedores de proyectos de código abierto, incluido Babel, publicaron parches para eliminar las dependencias que Koçulu había despublicado. [7] Varios de los otros nombres de paquetes de Koçulu fueron rápidamente reemplazados por paquetes recién publicados. [3] Por ejemplo, otro desarrollador recreó el left-pad
paquete, pero lo publicó como versión 1.0.0. Desde que Koçulu publicó el suyo como versión 0.0.3, los usuarios siguieron encontrando problemas. [3]
Aproximadamente dos horas después de que left-pad
se eliminara el paquete original, npm "anuló la publicación" de la versión original 0.0.3 restaurando una copia de seguridad. [1] Laurie Voss, directora de tecnología de npm, escribió que la empresa "seleccionó las necesidades de la mayoría" a pesar de los desacuerdos internos sobre si la acción fue "la decisión correcta". [10]
npm cambió su política sobre la eliminación de paquetes publicados para evitar su eliminación si han transcurrido más de 24 horas desde su fecha de lanzamiento y al menos otro proyecto lo requiere como dependencia. [11] En nombre de npm, el administrador de la comunidad Ashley Williams se disculpó por la interrupción causada por el incidente, afirmando que la plataforma "[no] pudo proteger a la comunidad". [11] Kik Interactive también se disculpó por el incidente, y el jefe de mensajería de la compañía, Mike Roberts, publicó la cadena de correo electrónico con Koçulu en Medium y caracterizó su interacción como una "solicitud educada". [8] Roberts escribió que inicialmente se habían comunicado con Koçulu porque deseaban publicar un paquete de código abierto en npm con el nombre que Koçulu estaba usando. [5] Koçulu declaró que lamentaba interrumpir el trabajo de otros, pero creía que lo hizo "por el beneficio de la comunidad a largo plazo ". [2]
El incidente provocó reacciones variadas de los usuarios en Twitter , GitHub , Reddit y Hacker News , y muchos afirmaron que "rompió Internet" brevemente. [2] [8] [9] [1] Muchos comentaron sobre la cultura de " moverse rápido y romper cosas " del desarrollo de JavaScript, la naturaleza impredecible del software de código abierto y una percepción de dependencia excesiva de la programación modular . [2] [8] [3] Los usuarios también expresaron su decepción con respecto a la decisión de npm de transferir por la fuerza el paquete de Koçulu a Kik Interactive debido a una amenaza legal. [1]
El incidente demostró cómo la interrupción de un paquete npm podría llevar a un ataque a la cadena de suministro . Además del left-pad
incidente ampliamente publicitado, varias personas habían secuestrado inmediatamente otros paquetes de Koçulu con código desconocido después de que fueron eliminados. [7] npm lanzó una nueva política para evitar adquisiciones maliciosas en disputas similares, [3] pero el left-pad
incidente todavía se cita como un ejemplo de dependencia excesiva de contribuyentes externos que conduce a una mayor superficie de ataque para los productos de software. [12] El autosabotaje intencional de Koçulu left-pad
para resaltar un problema social también se ha descrito como un precursor de incidentes de software de protesta que se publican en plataformas como npm. [6]