stringtranslate.com

incidente del pad izquierdo de npm

El 22 de marzo de 2016, el ingeniero de software Azer Koçulu eliminó el left-padpaquete 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. kikleft-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-padha 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 .

Fondo

Contenido de left-paden el momento de su eliminación por npm

left-padfue 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-paden 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-padfue 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-padfuncionar 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 kiknpm, 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 kikpaquete], 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 kikpaquete se transferiría manualmente a Kik Interactive. [1]

Eliminación

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-padproyecto 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-padcomo 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]

Secuelas

Efectos inmediatos

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-padpaquete, 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-padse 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]

Reacciones

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]

Impacto

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-padincidente 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-padincidente 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-padpara 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]

Véase también

Referencias

  1. ^ abcdefghijklmn Collins, Keith (27 de marzo de 2016). «Cómo un programador rompió Internet borrando un pequeño fragmento de código». Quartz . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  2. ^ abcde Weinberger, Matt (23 de marzo de 2016). «Un programador casi destruyó Internet al eliminar 11 líneas de código». Business Insider . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  3. ^ abcdefg Feldman, Brian (24 de marzo de 2016). «Un hombre eliminó 11 líneas de código de Internet y dañó cientos de aplicaciones». Intelligencer . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  4. ^ Claburn, Thomas (22 de abril de 2019). "¿NPM no es particularmente magnánimo? El personal fue despedido después de intentar sindicalizarse: quejas". The Register . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  5. ^ abc Williams, Chris (23 de marzo de 2016). «Cómo un desarrollador rompió Node, Babel y miles de proyectos en 11 líneas de JavaScript». The Register . Archivado desde el original el 16 de octubre de 2023. Consultado el 11 de mayo de 2024 .
  6. ^ ab Sharma, Ax (27 de julio de 2022). "Protestware en aumento: por qué los desarrolladores sabotean su propio código". TechCrunch . Archivado desde el original el 29 de febrero de 2024. Consultado el 11 de mayo de 2024 .
  7. ^ abcd Mazaika, Ken (24 de marzo de 2016). "Cómo 17 líneas de código acabaron con las startups más prometedoras de Silicon Valley". HuffPost . Archivado desde el original el 11 de mayo de 2024 . Consultado el 11 de mayo de 2024 .
  8. ^ abcde Miller, Paul (24 de marzo de 2016). «Cómo un desarrollador furioso rompió brevemente JavaScript». The Verge . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  9. ^ abcd Gallagher, Sean (25 de marzo de 2016). «Rage-quit: Coder unpublished 17 lines of JavaScript and "broke the Internet"» (Renuncia furiosa: un programador anuló 17 líneas de JavaScript y "rompió Internet"). Ars Technica . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  10. ^ Tung, Liam (23 de marzo de 2016). «Desarrollador descontento rompe miles de aplicaciones de JavaScript y Node.js». ZDNET . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  11. ^ ab Williams, Chris (29 de marzo de 2016). "'No hay remordimientos', dice el tipo que derribó la torre Jenga de JavaScript, mientras los desarrolladores preguntan: ¿Hemos olvidado cómo codificar?". The Register . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  12. ^ Claburn, Thomas (3 de febrero de 2022). «Los paquetes npm infectados con malware son más comunes de lo que se teme». The Register . Archivado desde el original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .