Articulo de referencia

incidente de npm left-pad

El 22 de marzo de 2016, el programador Azer Koçulu retiró el left-pad paquete que había publicado en npm (un gestor de paquetes para JavaScript ). Koçulu eliminó todos sus paque...

Este es un buen artículo. Haz clic aquí para obtener más información.

El 22 de marzo de 2016, el programador Azer Koçulu retiró el left-padpaquete que había publicado en npm (un gestor de paquetes para JavaScript ). Koçulu eliminó todos sus paquetes tras una disputa con Kik Messenger , en la que npm, Inc.kik le otorgó a la empresa el control del nombre del paquete. Como resultado, miles de proyectos de software que lo utilizaban como dependencia , incluyendo el transcompilador Babel y el framework web React , no pudieron compilarse ni instalarse. Esto causó una interrupción generalizada, ya que grandes y pequeñas empresas tecnológicas, como Facebook , PayPal , Netflix y Spotify , lo utilizaban como dependencia en sus productos de software.left-padleft-pad

Varias horas después de que el paquete fuera retirado de npm, la empresa detrás de la plataforma, npm, Inc., lo restauró manualmente. Posteriormente, npm deshabilitó la posibilidad de retirar un paquete si habían transcurrido más de 24 horas desde su fecha de publicación y al menos otro proyecto dependía de él. El incidente atrajo la atención de los medios y reacciones de personas de la industria del software . La retirada del paquete left-padha provocado un debate sobre el autosabotaje intencional del software como actos de protesta y ha llamado la atención sobre la mayor posibilidad de ataques a la cadena de suministro en la programación modular .

Fondo

left-padfue un paquete JavaScript gratuito y de código abierto publicado por Azer Koçulu, un programador independiente radicado en Oakland, California. [ 1 ] El paquete agrega repetidamente caracteres al principio de una cadena usando un bucle . [ 1 ] se ha caracterizado por ser extremadamente simple, [ 2 ] [ 3 ] consta de solo 11 líneas de código en la versión final escrita por Koçulu, que se muestra a continuación: [ 4 ]left-pad

módulo.exports = leftpad ;función leftpad ( str , len , ch ) { str = String ( str );var i = - 1 ;ch || ( ch = ' ' ); len = len - str . length ;mientras ( ++ i < len ) { str = ch + str ; }devolver str ; }

Koçulu se publicó left-paden npm , el gestor de paquetes predeterminado para Node.js , un entorno de ejecución de JavaScript . [ 5 ] [ 2 ] A pesar de su relativa oscuridad, left-padfue muy utilizado; el paquete fue utilizado como dependencia por miles de otros proyectos de software y se descargó más de 15 millones de veces antes de su eliminación. [ 6 ] [ 7 ] Algunos de los proyectos que lo requerían left-paderan críticos para el ecosistema de JavaScript en ese momento. Esto incluía Babel , un transcompilador que permite código JavaScript retrocompatible; Webpack , un sistema de empaquetado de módulos; y React y React Native , frameworks ampliamente utilizados para desarrollar sitios web y aplicaciones móviles , respectivamente. [ 8 ] [ 9 ] [ 1 ]

Además de left-pad, Koçulu también era propietario kikde en npm, 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 , solicitó a Koçulu que cediera el control del kikpaquete porque la empresa era propietaria de la marca registrada "Kik" . [ 10 ] Parte de la correspondencia incluía el siguiente mensaje de Kik:

No queremos ser groseros con respecto al kikpaquete, pero es una marca registrada en la mayoría de los países del mundo y si publicas un proyecto de código abierto llamado Kik, nuestros abogados de marcas te llamarán a la puerta y te cerrarán las cuentas y demás; y no tendríamos más remedio que hacerlo porque tienes que proteger tus marcas registradas o las pierdes. ¿No podríamos llegar a algún tipo de acuerdo para que cambies el nombre sin involucrar a 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 te estás portando como un idiota. Así que, vete a la mierda. No me respondas el correo electrónico. [ 3 ]

Koçulu también solicitó US$30,000 como compensación "por las molestias de renunciar a mi proyecto personal por [ sic ] un montón de imbéciles corporativos". [ 1 ]

El 18 de marzo de 2016, Isaac Z. Schlueter, director ejecutivo de npm, Inc., escribió a Kik Interactive y 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 formar parte de la plataforma, Schlueter le proporcionó un comando que eliminaría los 273 módulos que había registrado. [ 10 ] Koçulu ejecutó el comando el 22 de marzo de 2016, eliminando todos los paquetes que había publicado previamente. [ 1 ]left-pad fue uno de los paquetes que fue "no publicado", lo que hizo que ya no fuera accesible públicamente en npm. [ 6 ] El left-padproyecto de software y su contenido permanecieron disponibles en GitHub . [ 10 ]

Los usuarios que intentaban compilar o instalar cualquier proyecto JavaScript que utilizara left-padcomo dependencia (incluidas dependencias como Babel o Webpack) recibían un error 404 que provocaba que el proceso fallara. [ 1 ] Entre las corporaciones de tecnología de software que utilizaban el paquete se encontraban Meta Platforms , PayPal , Netflix , Spotify , [ 9 ] y la propia Kik Interactive. [ 1 ]

Secuelas

Efectos inmediatos

Una hora después de eliminar los paquetes, Koçulu publicó una entrada en Medium ("Acabo de liberar mis módulos"), explicando que había retirado 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 incidencias Git del proyecto . [ 8 ] [ 1 ]

Los responsables del mantenimiento de proyectos de código abierto, incluido Babel, publicaron parches para eliminar las dependencias que Koçulu había dejado sin publicar. [ 8 ] 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 la versión 1.0.0. Dado que Koçulu publicó el suyo como la versión 0.0.3, los usuarios continuaron encontrando problemas. [ 3 ]

Aproximadamente dos horas después de left-padque se eliminara el paquete original, npm restauró manualmente 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 "eligió las necesidades de la mayoría" a pesar de los desacuerdos internos sobre si la acción era "la decisión correcta". [ 11 ]

Reacciones

npm cambió su política sobre la eliminación de paquetes publicados para evitar la eliminación si han transcurrido más de 24 horas desde su fecha de lanzamiento y al menos otro proyecto lo requiere como dependencia. [ 12 ] En nombre de npm, la administradora de la comunidad Ashley Williams se disculpó por la interrupción causada por el incidente, afirmando que la plataforma "[falló] en proteger a la comunidad". [ 12 ] 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 correos electrónicos con Koçulu en Medium y caracterizó su interacción como una "solicitud cortés". [ 9 ] Roberts escribió que inicialmente se habían puesto en contacto con Koçulu porque deseaban publicar un paquete de código abierto en npm con el nombre que Koçulu estaba usando. [ 6 ] Koçulu declaró que lamentaba haber interrumpido el trabajo de otros, pero creía que lo hizo "en beneficio de la comunidad a largo plazo ". [ 2 ]

El incidente provocó reacciones variadas de usuarios en Twitter , GitHub , Reddit y Hacker News , y muchos afirmaron que brevemente "rompió Internet". [ 2 ] [ 9 ] [ 10 ] [ 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 supuesta dependencia excesiva de la programación modular . [ 2 ] [ 9 ] [ 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 podía conducir a un ataque a la cadena de suministro . Además del left-padincidente ampliamente difundido, varias personas secuestraron inmediatamente otros paquetes de Koçulu con código desconocido después de que fueran eliminados. [ 8 ] npm publicó una nueva política para prevenir tomas de control maliciosas en disputas similares, [ 3 ] pero el left-padincidente aún se cita como un ejemplo de dependencia excesiva de colaboradores externos que conduce a una mayor superficie de ataque para los productos de software. [ 13 ] El autosabotaje intencional de Koçulu left-padtambién se ha descrito como un precursor de incidentes de protestware publicados en plataformas como npm. [ 7 ]

Véase también

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Collins, Keith (27 de marzo de 2016). "Cómo un programador rompió internet borrando un pequeño fragmento de código" . Quartz . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  2. 1 2 3 4 5 Weinberger, Matt (23 de marzo de 2016). "Un programador casi colapsa internet al eliminar 11 líneas de código" . Business Insider . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  3. 1 2 3 4 5 6 7 Feldman, Brian (24 de marzo de 2016). "Un hombre eliminó 11 líneas de código de Internet y rompió cientos de aplicaciones" . Intelligencer . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  4. Koçulu, Azer (15 de agosto de 2014). "left-pad/index.js" . GitHub . Archivado del original el 11 de mayo de 2024. Consultado el 2 de marzo de 2026 .
  5. Claburn, Thomas (22 de abril de 2019). "¿NPM no es particularmente magnánimo? Despiden a empleados tras intentar sindicalizarse: quejas" . The Register . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  6. 1 2 3 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 del original el 16 de octubre de 2023. Recuperado el 11 de mayo de 2024 .
  7. 1 2 Sharma, Ax (27 de julio de 2022). "El software de protesta en auge: por qué los desarrolladores están saboteando su propio código" . TechCrunch . Archivado del original el 29 de febrero de 2024. Recuperado el 11 de mayo de 2024 .
  8. 1 2 3 4 Mazaika, Ken (24 de marzo de 2016). "Cómo 17 líneas de código derribaron a las startups más populares de Silicon Valley" . HuffPost . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  9. 1 2 3 4 5 Miller, Paul (24 de marzo de 2016). "Cómo un desarrollador furioso rompió brevemente JavaScript" . The Verge . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  10. 1 2 3 4 Gallagher, Sean (25 de marzo de 2016). "Renuncia furiosa: un programador eliminó 17 líneas de JavaScript y "rompió Internet"" . Ars Technica . Archivado del original el 11 de mayo de 2024 . Recuperado el 11 de mayo de 2024 .
  11. Tung, Liam (23 de marzo de 2016). "Desarrollador descontento rompe miles de aplicaciones JavaScript y Node.js" . ZDNET . Archivado del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .
  12. 1 2 Williams, Chris (29 de marzo de 2016) .«Sin remordimientos», dice el tipo que derribó la torre Jenga de JavaScript, mientras los desarrolladores se preguntan: «¿Hemos olvidado cómo programar?» . The Register . Archivado del original el 11 de mayo de 2024. Consultado el 11 de mayo de 2024 .
  13. 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 del original el 11 de mayo de 2024. Recuperado el 11 de mayo de 2024 .