(in)sicurezza digitale Notizie cybersecurity, malware, ransomware e sicurezza dei dati
Home > Articolo > Il colloquio di lavoro che installa PolinRider: dentro la campagna AccuraSoftHire
Il colloquio di lavoro che installa PolinRider: dentro la campagna AccuraSoftHire

Un colloquio di lavoro che non porta a nessun impiego, ma a un laptop infetto. È lo schema dietro AccuraSoftHire, una società tecnologica che in realtà non esiste mai esistita, costruita da zero per far scaricare malware a chi risponde a un annuncio su Indeed o Glassdoor. Dietro le quinte, i ricercatori di JFrog e StepSecurity hanno ricostruito una filiera che intreccia account GitHub, pacchetti npm civetta e un canale di comando nascosto dentro le transazioni di un wallet Ethereum — la stessa tecnica di “dead drop” che, secondo le indagini di Binance e dell’FBI, ha un parente stretto nel furto da 6,34 miliardi di dollari dello scorso 29 ottobre.

Un’azienda vera solo sulla carta (digitale)

AccuraSoftHire ha tutto quello che serve per sembrare credibile: un sito di carriere costruito in React, una pagina “About”, una pagina leadership, un job board con dodici posizioni da remoto dietro login, e una presenza su LinkedIn con reclutatori che vantano badge di verifica dell’identità. Il dominio accurasofthire[.]com è stato registrato il 17 aprile 2026 su Hostinger. Da giugno, gli annunci sono apparsi su Indeed, Glassdoor, SimplyHired e jobbers.io.

JFrog Security Research, che ha pubblicato l’indagine più completa sul caso con il post “Contagious Interview – One Interview Away From Infection”, nota un dettaglio che smonta la fiducia nei badge di verifica: i tre reclutatori LinkedIn si sono iscritti a cadenza mensile, uno dopo l’altro, a partire da subito dopo la registrazione del dominio. Un badge “ID verificato” dice solo che qualcuno ha controllato un documento — non che la persona lavori davvero lì. E infatti la sede dell’azienda cambia da pagina a pagina: Tonopah in Arizona, Oregon, Georgia, Kyiv.

La prova tecnica che non controlla mai la fotocamera

Il candidato selezionato riceve un incarico “a casa”: costruire una landing page in React/Redux. Il repository carica undici plugin Tailwind CSS nel file di configurazione — uno di questi, tailwind-custom-forms, è una copia quasi identica del plugin ufficiale @tailwindcss/forms con un loader appeso in coda al file. Il codice malevolo si attiva nel momento in cui Tailwind compila i CSS, non durante npm install: una scelta che aggira silenziosamente gli scanner che controllano solo gli script di installazione.

Il secondo stadio è ancora più teatrale. Durante la “verifica video” richiesta dal processo di selezione, il sito legge un campo lato server chiamato driverStatus: finché resta a zero, il pulsante di avvio mostra per sei secondi “Checking for a camera…” per poi dichiarare che l’ambiente non è compatibile. getUserMedia non viene mai invocato — il controllo della fotocamera non esiste, è pura scenografia pensata per portare il candidato alla pagina successiva, “Recommended VS Code configuration” (/vscode-setup), che genera un comando da copiare e incollare in base allo user agent del browser.

Su Windows, il bootstrap scarica CameraDriverUpdate.msi, installa Node.js se assente, recupera payload.js (circa 13 KB) da /camera-driver/payload.js, lo esegue in background e si autocancella. Il payload comincia con un marcatore di build, A10-online, trasmesso in un header HTTP personalizzato (Sec-V) che permette all’operatore di distinguere le versioni del malware in circolazione. Il corpo è un array di stringhe base64 passato a eval(atob(...)) — un classico offuscamento, ma qui il punto davvero interessante arriva dopo.

Il comando e controllo si nasconde in una transazione Ethereum

Una volta decodificato, il loader non contatta un dominio o un IP scritto nel codice. Legge invece l’ultima transazione inviata dal wallet 0xa322E5f3D311D3080e6f0121063e9aDC2490Ef1a tramite l’API pubblica di Blockscout, ed estrae l’indirizzo del server di comando dal campo destinatario della transazione — che non è un account reale, ma un contenitore di dati: i primi otto byte codificano due indirizzi IP (in pratica lo stesso indirizzo ripetuto due volte), seguiti dalla stringa “helloipbot!!” come marcatore. OpenSourceMalware ha battezzato questa tecnica NullReceiver nell’agosto 2026.

Il vantaggio per l’attaccante è evidente: per cambiare server di comando basta inviare una nuova transazione da pochi centesimi di gas, senza dover mai aggiornare un pacchetto npm o un file infetto già distribuito. StepSecurity ha ricostruito la cronologia del wallet: 609 transazioni dal 25 luglio, quasi tutte senza alcun trasferimento di ETH reale, con un nuovo server annunciato ogni 3 ore e 20 minuti di media. Nessuna transazione dopo il 19 ottobre — segno, secondo i ricercatori, che l’operatore potrebbe essere passato a un wallet diverso.

Una volta stabilito il canale, il loader scarica due ulteriori stadi in chiaro sulla porta 443 (percorsi /0x/cls e /0x/ls), li decodifica con XOR e chiavi hardcoded, ed esegue il primo in-process e il secondo come processo Node separato. Il malware — che JFrog e StepSecurity collegano a una famiglia già nota come PolinRider — sottrae credenziali dei browser, dati dei wallet di criptovalute, chiavi SSH, credenziali cloud e credenziali Git. Con queste ultime, il loader si propaga iniettando codice in altri repository della vittima e riscrivendo i commit per mantenerne la data originale, rendendo la compromissione più difficile da notare in una code review superficiale.

La prova dell’indirizzo email che collega tutto

L’attribuzione nasce da un errore operativo banale: il riuso di un indirizzo email. JFrog ha scoperto che ha************@***il.com è sia l’email dell’account npm sun117 (che ha pubblicato scrollbar-hide-plugin) sia l’email che firma commit sull’account GitHub oleksandr3201, il cui profilo si descrive come “Project Manager” presso AccuraSoftHire. Un secondo indirizzo, an************@***il.com, compare sia nel commit iniziale del repository del test tecnico sia come email dell’account npm goss1000, che ha pubblicato la versione malevola di tailwind-custom-forms il 2 agosto. Nei tredici minuti successivi a quella pubblicazione, altri tre account della stessa campagna (evaward1, sun117, georgeodom1) hanno pubblicato pacchetti civetta identici. Per JFrog, è la prova che reclutatori, autore del test e publisher npm sono la stessa operazione.

Sul fronte dell’attribuzione a uno stato, i ricercatori restano cauti ma non neutrali: JFrog inquadra la campagna sotto l’ombrello “Contagious Interview” — il nome che Unit 42 ha dato al filone di attacchi via falsi colloqui di lavoro — e nota sovrapposizioni tecniche tra i propri indicatori e due famiglie, PolinRider e ClickFake, entrambe attribuite da altri ricercatori ad attori nordcoreani. Sul collegamento con il mega-furto Binance, però, la risposta è netta: “We have found no link between AccuraSoftHire and that intrusion”. L’attacco a Binance, attribuito dall’FBI alla Corea del Nord secondo quanto riportato dall’exchange, è partito da un ingegnere che ha eseguito un altro test di assunzione fraudolento sul proprio computer di lavoro — stessa tattica, operazione diversa.

Cosa controllare, oggi

Il 3 novembre l’operatore ha ripubblicato la famiglia di pacchetti con quattro varianti gemelle condividendo lo stesso loader; npm le ha rimosse entro tre ore. Ma due dei pacchetti originari sono rimasti installabili per cinque e sette mesi, accumulando oltre 4.000 download complessivi secondo il registro — una finestra lunghissima per uno schema che, di fatto, chiunque avrebbe potuto scoprire controllando chi pubblica plugin Tailwind “troppo nuovi per essere veri”.

  • Trattare come sospetto qualsiasi “controllo fotocamera” che fallisce e propone un comando da terminale per risolvere il problema.
  • Eseguire sempre i test tecnici in una VM o container isolato, senza token, chiavi SSH, wallet o profili browser collegati ad account reali.
  • Aprire progetti sconosciuti in VS Code in modalità restricted e controllare .vscode/tasks.json prima di fidarsi della cartella.
  • Verificare le aziende attraverso segnali difficili da falsificare — una registrazione camerale, un contatto che risulti davvero pagato dall’azienda — non un badge LinkedIn.
  • In caso di sospetta infezione, ruotare tutte le credenziali della macchina e controllare la cronologia dei repository: il solo “wipe” del portatile potrebbe non bastare, perché le credenziali Git rubate permettono la reinfezione.

Indicatori di compromissione

Dominio: accurasofthire[.]com (client hold dall'11 novembre 2026)
Wallet Ethereum (dead drop C2): 0xa322E5f3D311D3080e6f0121063e9aDC2490Ef1a
Server C2: 103.179.142.155 (attivo 16-19 ottobre 2026; altri 7 IP ruotati da luglio)
Percorsi: /camera-driver/setup-win, /camera-driver/bootstrap-win?flag=10,
          /camera-driver/payload.js, /camera-driver/ack, /0x/cls, /0x/ls
File: CameraDriverUpdate.msi, CameraDriverUpdate-mac.zip, CameraDriverUpdate.deb,
      payload.js, setup-full-windows.ps1, %USERPROFILE%\.nvm\bootstrap.cmd
Estensione Chrome: extensions/job-new-alerts (native host com.accurasoft.jobalerts)
Marcatori: A10-online, A10-npm-handy, A10-new_npm; header HTTP "Sec-V"

Account npm: sun117, goss1000, evaward1, georgeodom1, helmets, codeCrafts117
Pacchetti npm malevoli:
  tailwind-custom-forms, tailwindcss-contact-forms, tailwind-form-styles,
  tailwind-forms-kit, tailwind-lines-clamps, tailwind-clamps-line,
  tailwind-lineclamp, scrollbar-hide-plugin, tailwindcss-anim, tailwind-anim

Email: ha************@***il.com, an************@***il.com,
       ol***************@************re.com, su*****@************re.com
GitHub: oleksandr3201, hiretechpartners, accurasofthire (ex moderndev117)

Fonti: JFrog Security Research (“Contagious Interview – One Interview Away From Infection”), StepSecurity Blog, dichiarazioni pubbliche di Binance e riferimenti all’avviso congiunto FBI/DoD Cyber Crime Center di settembre 2026.

Condividi: Twitter  |  Facebook  |  LinkedIn
Unisciti alla discussione

Questo è un blog del Fediverso: puoi trovare questo articolo ovunque con @blog@insicurezzadigitale.com e ogni commento/risposta apparirà qui sotto.

Se vuoi commentare su Il colloquio di lavoro che installa PolinRider: dentro la campagna AccuraSoftHire, utilizza la discussione sul Forum.

>> forum community

Commenti

Lascia un commento