Revista de ideas para gente con ideas

REVISTA DE IDEAS PARA GENTE CON IDEAS

Conflicto Ruso-Ucraniano en el sector del desarrollo software

¡Comparte este post!

Por Bruno C.

¿Qué pasaría si la aplicación que llevas utilizando siempre se vuelve… maliciosa? ¿Qué sucedería si una persona en la que confías te traiciona por motivos políticos? ¿Seguirías confiando en ella?

Esta guerra abierta en Europa del este está politizando a la población en contra de Rusia y de sus ciudadanos. Vemos hordas de refugiados ucranianos siendo acogidos por muchos países europeos, donaciones anónimas a organizaciones o empresas que ayudan a estos refugiados, y en ocasiones vías de financiación directa con el estado ucraniano.

Hemos visto también cómo muchas empresas han decidido realizar un boicot contra Rusia bien yéndose del país, o evitando exportar/importar sus productos. Eventos que se pueden identificar, con mayor o menor acierto, sus consecuencias inmediatas y futuras. El problema es cuando estos eventos son más difíciles de ver, de entender y de analizar, a menos que tengas un conocimiento exhaustivo de ciberseguridad, desarrollo de software e informática en general.

Voy a exponer un análisis de una situación que tuvo lugar en una comunidad de desarrollo software de la manera más coloquial posible sin entrar en tecnicismos. Así tener una idea de qué sucede en esta parte del mundo más “virtual”.

Paquete de código

Desarrollar un software(cualquier programa informático) requiere, principalmente, de mucho conocimiento y tiempo. Para reducir exponencialmente el tiempo de programación, los desarrolladores utilizan código que otros desarrolladores han escrito para sus propios proyectos, digamos que se fomenta el compartir para beneficio común.

Cuando uno o varios desarrolladores construyen un código funcional que puede ayudar a otros desarrolladores(como por ejemplo, un código que te permite saber fácilmente predicciones de tiempo, realizar ciertas acciones automáticamente en tu sistema operativo, etc), pueden optar por guardarse dicho código para ellos o hacerlo Open Source y compartirlo con la comunidad, por lo que generarán lo denominado como un paquete.

De esta forma, todos podemos beneficiarnos de software barato, ya que hay muchos paquetes que permiten agilizar muchísimo el ciclo de desarrollo.

Pero… ¿Qué sucede si ese desarrollador o grupo de desarrolladores se quieren volver políticamente activos y atacar a uno de los bandos de un conflicto abierto?

Caballo de troya

Nos ponemos en la situación de un canadiense llamado Brandon Nozaki Miller, alias “RIAEvangelist”, autor de un paquete que cuenta con un paquete que tenía un millón de descargas semanales, 4,7 millones al mes, 72 millones en total y de éste dependen otros 354 paquetes(https://www.npmjs.com/package/node-ipc). El número de descargas es bastante elevado, pero nos tenemos que fijar sobre todo en las dependencias, ya que este paquete no es descargado solamente por desarrolladores que quieren utilizarlo, sino por desarrolladores que utilizan otros paquetes y que esos otros paquetes necesitan de éste para funcionar. Y estos otros paquetes pueden tener a su vez otros paquetes dependientes, haciendo que muchos paquetes de código estén interconectados entre sí.

Este canadiense, decidió que podía contribuir en el conflicto atacando a Rusia con algo que poseía, añadiendo unas líneas de código extra en su paquete.

https://security.snyk.io/vuln/SNYK-JS-NODEIPC-2426370

Dichas líneas de código fueron categorizadas como maliciosas por una firma de ciberseguridad con un 9.8/10 (riesgo extremo).

Objetivo

Lo que hacían esas líneas de código era detectar si tenías una IP de origen Ruso o Bielorruso, si no era así, el paquete funcionará como siempre lo hizo, de lo contrario, se dedicaría a sobreescribir todos los archivos del ordenador que estuviera utilizando dicho paquete con un corazón.

Esta vulnerabilidad estuvo activa durante 1 día entero, si hacemos cuentas sobre el número de descargas diarias, podríamos estar hablando de más de 160.000 usuarios afectados(desarrolladores principalmente, pero también servidores de empresas).

Consecuencias

Toda acción tiene sus consecuencias, y desgraciadamente esta actuación también la ha tenido, como podemos observar en el siguiente link:

https://github.com/RIAEvangelist/node-ipc/issues/308

Un usuario declaraba lo siguiente (cita extraída sin modificar de para evitar que sea eliminada):

“We are an American NGO based in Washington, D.C. that monitors human rights infringements by authoritarian regimes in Belarus, Russia and other post-Soviet states. Since our start in 2014, we have been in contact with over 2,500 whistleblowers that provided us with detailed reports on various kinds of abuse happening there.

Due to internet censorship there, one of the web services used to contact us securely was hosted on servers located inside Belarus. Normally, we backup the received content to an external server on 20th day of every month, as this is reasonable given the volume we usually get, but since the start of the invasion on February 24th, traffic to our web service has increased over fiftyfold. Our staff has been working round the clock to accomodate the influx and during one of their tasks, package containing node-ipc module was updated on a production server, which resulted in executing your code and wiping over 30,000 messages and files detailing war crimes commited in Ukraine by Russian army and government officials. Due to the way the files were stored on the server, we are not able to recover any data and it’s most likely gone forever. For some of the senders, this might as well have been their last contact with the outside world, as many of them were front-line soldiers that could’ve been killed in action during the offensive.

Personally, me and my colleagues are absolutely devastated. All I can say that your little shenanigan did more damage to us than Putin or Lukashenka ever could. Profesionally, our counsel suggested filing criminal charges federally and it’s likely we’ll be proceeding this way.”

Lo que viene a resumir es que los servidores de la ONG donde trabaja recopilando datos de violaciones de derechos humanos en Rusia y Bielorrusia, han sido atacados gracias a que dichos servidores descargaron el código malicioso. Más de 30.000 evidencias sobre crímenes de guerra han sido eliminadas y posiblemente irrecuperables, ya que muchos participantes eran soldados que posiblemente ahora están muertos debido a la guerra.

No se puede afirmar que esta información sea real, pero de ser así, estaríamos hablando que evidencias de delitos han sido ocultados gracias a intentar dañar a ciudadanos rusos y bielorrusos.

Por último, tenemos la respuesta de la comunidad en el repositorio (donde yace el paquete) del autor, básicamente se ha dedicado a borrar mensajes, modificar títulos, y cerrar discusiones.

https://github.com/RIAEvangelist/node-ipc/issues?q=is%3Aissue+is%3Aclosed

Conclusiones

Me gustaría dejar de lado todos los aspectos técnicos y de comunidad que esto ha generado para centrarme en lo que se vendría a denominar ciberguerra.

Todas las aplicaciones que conocemos (y muchas que no) como Instagram, Spotify, Youtube, etc, dependen de muchos pequeños paquetes desarrollados altruistamente por individuos que tienen sus propias motivaciones, aspiraciones y objetivos en su vida. Si alguno de estos individuos se vuelve malicioso, o quiere atentar contra alguna organización (ya sea privada o pública), va a poder hacerlo y es posible que cause un daño aún mayor.

Si por ejemplo los autores de este paquete: https://www.npmjs.com/package/lodash deciden atacar a usuarios israelitas, dado que cuentan con más de 24 millones de descargas semanales es muy posible que sistemas y ciudadanos israelitas pierdan datos, haya cortes de servicio, exfiltración de datos, exposición de documentos secretos… Todo esto puede ocurrir o no, depende exclusivamente de los autores de dichos paquetes. Desde luego esta no es la primera vez que pasa, ni seguramente sea la última.

Para cerrar, me gustaría remarcar la repulsa que ha tenido desde la comunidad esta acción. A pesar de las ideas que los demás desarrolladores puedan tener, se ha visto un abrumador (por no decir prácticamente absoluto) rechazo de estas acciones políticas, lo que me hace pensar que a pesar que se pueden identificar como casos aislados o situaciones excepcionales y no como algo habitual en el mundillo.

¡Comparte este post!