At Xígeni, hem estat ocupats durant l'últim any implementant un sistema complet que supervisa els registres de paquets de codi obert públics per detectar activitats sospitoses o codi inherentment maliciós.
Aquesta infraestructura ens permet analitzar en temps real tots els paquets publicats diàriament. A més, ens permet monitoritzar els comportaments anòmals dels usuaris.
Tot i que la presència de codi maliciós als registres de paquets és ben coneguda, hi ha altres comportaments estranys o inusuals que passen completament desapercebuts per als usuaris habituals d'aquests registres. Fins i tot per a aquells de nosaltres que els observem de prop, no és fàcil trobar una raó o explicació per a aquest comportament.
El que caracteritza l'equip de Xygeni és la nostra persistència quan ens enfrontem a un problema, així que vam aprofundir en això.
Tot va començar amb un augment de les estadístiques
Com ja he esmentat abans, com a part de la nostra infraestructura, supervisem moltes mètriques d'activitat en registres de paquets de codi obert públics.
Els darrers dies de març, la meva companya de feina Carmen va donar l'alarma. Vam començar a observar una desviació substancial en el nombre de paquets publicats a NPM. Després d'una revisió inicial, vam descobrir que aquesta desviació es devia principalment a un nombre relativament petit d'usuaris la taxa de publicació de paquets dels quals s'havia disparat sobtadament.
Això ens va impulsar a revisar el nostre procés i les dades associades dins de la plataforma. Afortunadament, la nostra revisió va determinar que les dades semblaven correctes, però això també era una mica desconcertant!
Després d'una inspecció més detallada, vam descobrir que aquests paquets compartien diverses característiques comunes:
- Els editors eren usuaris de nova creació, amb no més d'un o dos mesos d'antiguitat com a màxim.
- Els paquets tenien noms aparentment aleatoris, probablement generats mitjançant un diccionari. Podem trobar noms de paquets amb noms estranys com ara enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvious_tuna-appteadevInclourem un apèndix amb alguns exemples dels actius que hem trobat.
- El contingut d'aquests paquets era molt similar, sovint el mateix.
En aquest context, vam observar que un dels paquets incloïa un script de Python, possiblement per accident, que sembla que s'utilitza per publicar els paquets automàticament.

Desxifrant la xarxa
L'activitat de publicació d'algunes d'aquestes editorials durant l'últim mes s'ha dut a terme d'acord amb el següent gràfic cronològic:

Aquí teniu les estadístiques completes relacionades amb aquest esdeveniment que podem compartir:

No va sorgir res rellevant de la revisió individual d'alguns dels paquets associats a aquests usuaris. Això ens va portar a analitzar el panorama general de tots ells, buscant patrons que poguessin proporcionar pistes sobre aquest èxit.
Al cap i a la fi, tenim un bon grapat de paquets per analitzar:

Aquests són els punts clau que podem destacar de l'anàlisi:
- Molts dels paquets NPM estan interrelacionats. Alguns són referenciats com a dependències d'altres.
- Tot i ser paquets estranys i probablement ningú en sap res, alguns tenen moltes descàrregues setmanals. És difícil acceptar que un usuari normal vulgui descarregar paquets com 0mc03esisd.
- Alguns tenen repositoris associats. De vegades, els propietaris d'aquests repositoris semblen ser comptes falsos, similars als de npm.
Nota: Els usuaris carreguen paquets addicionals per onades, de manera que les dades proporcionades poden variar lleugerament.

Aquest és un exemple d'un dels repositoris relacionats. Conté el codi d'alguns dels paquets publicats. També alguns altres fitxers, com ara un tea.yaml arxiu.
Trobada amb l'actor o actors
És difícil determinar si es tracta de l'obra d'un sol autor o de diversos col·laboradors. Tanmateix, tenim algunes proves que ens permeten concretar l'origen d'aquesta activitat:
- Idioma: Alguns comentaris del codi són en indonesi.

- Ubicació: Alguns propietaris dels repositoris associats indiquen la seva ubicació a Indonèsia.
- La ubicació que podem identificar a través de les metadades d'activitat a GitHub també apunta a Indonèsia.

Five o'clock tea
Donat que Indonèsia era una colònia britànica, aquí encaixaria perfectament per prendre te. Tanmateix, en aquest cas, és un tipus de te força especial.
Recordes la tea.yaml fitxers que vam veure al principi? En aquell moment no vam mostrar el seu contingut, però tenia aquest aspecte:

Aquests fitxers semblen estar relacionats amb Protocol del tePerò què és exactament? Vam arribar https://tea.xyz/blog/250k-grant-for-open-source-developers, que parla de la finalitat:
Tea està revolucionant el món digital abordant el problema de llarga data de la compensació inadequada per als desenvolupadors de codi obert. Resoldre aquest problema és més urgent que mai, i per això hem decidit desplegar 250 dòlars en subvencions abans del llançament del protocol. Aquesta fase inicial té com a objectiu donar suport als mantenidors de projectes de codi obert que tinguin un impacte material en l'ecosistema de programari de codi obert i un teaRank superior a 30 per davant de la xarxa de proves incentivada del protocol tea.

Segons els documents del protocol del te:
"Perquè un projecte es registri al Protocol del Tea, cal un fitxer tea.yaml que serveix com a constitució del projecte per regir el nombre de col·laboradors i el nombre de vots necessaris per dur a terme determinades accions."
Després d'accedir a la xarxa de te, vam intentar trobar un dels paquets que sospitem que està perdent reputació. L'hem trobat:

Això sembla explicar què està passant aquí: certs usuaris inflen els seus projectes de codi obert amb una popularitat fictícia per segrestar el teaRank i obtenir els beneficis que ofereix l'associació del te. Al cap i a la fi, els diners són la força motriu més antiga, juntament amb el sexe.
Conclusió i reflexions finals
Tot i que no s'ha trobat cap evidència de codi maliciós en aquests paquets de NPM, i probablement no tenien la intenció que ningú els fes servir, és possible que infringeixin diverses Condicions del servei (TOS) de NPM, GitHub o l'associació del te. Tanmateix, això queda fora de l'abast de la nostra feina (tot i que ja han estat notificats i es prendran les mesures que considerin oportunes). L'ús abusiu d'aquestes plataformes ens afectarà a nosaltres i a les nostres organitzacions d'alguna manera.
El que està clar és que qualsevol paquet de codi obert aparentment innocu pot albergar comportaments difícils d'entendre sense informació contextual completa.
Com a desenvolupador, trobo difícil controlar manualment tots els paquets de codi obert que s'utilitzen a les aplicacions que desenvolupem i mantenim amb un cert nivell de garantia. Sense l'ajuda d'una eina que automatitzi aquest control, la tasca podria consumir incomptables hores dels nostres equips.
Sempre hi ha l'opció de mirar cap a una altra banda, confiant que els àmbits de codi obert són llocs segurs. Afortunadament, crec que aquesta mentalitat no està gaire estesa avui dia; aquest cas ha estat pràcticament inofensiu, però recentment hem viscut un incident molt més greu amb el Porta posterior XZ, i no ha estat l'únic.
Si heu llegit fins aquí, espero que hàgiu gaudit de totes les complexitats d'aquest curiós esdeveniment. No us oblideu de dedicar uns minuts a revisar què pot aportar Xygeni a la seguretat de la vostra organització.
Apèndix: Llista d'elements relacionats que s'inclouran a l'article final
Usuaris més rellevants de NPM en funció del nombre de paquets publicats: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17
Una petita mostra dels seus paquets relacionats: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.
Alguns dels repositoris de GitHub relacionats que contenen fitxers tea.yml:







