Noord-Koreaanse aanvallers verbergen OTTERCOOKIE-gerelateerde malware in SVG-landvlagbestanden die worden verspreid via valse coderingstests voor ontwikkelaars. De kwaadaardige code wordt uitgevoerd wanneer een doelwit het aangeleverde e-commerceproject start, niet wanneer iemand alleen maar een afbeelding bekijkt.
De campagne, gevolgd als REF9403, maakt gebruik van social engineering in plaats van een softwarekwetsbaarheid. Aanvallers doen zich voor als recruiters of projecteigenaren, benaderen ontwikkelaars met vacatures en overtuigen hen om een functionele coderingsbeoordeling te downloaden en uit te voeren.
Elastic Security Labs heeft REF9403 ontdektnadat een aanvaller een ontwikkelaarsmogelijkheid had gepost in de Slack-werkruimte van het bedrijf. Elastic koppelt de operatie aan Contagious Interview, een langlopende campagne die wordt toegeschreven aan actoren die banden hebben met Noord-Korea.
Hoe de nepcoderingstest ontwikkelaars bereikt
Op 26 mei 2026 plaatste een Slack-gebruiker genaamd “Maxwell” een bericht op een banenkanaal en beweerde hulp nodig te hebben bij het moderniseren van een e-commerceplatform. Geïnteresseerde ontwikkelaars werden naar privéberichten geleid en gevraagd een codeerbeoordeling uit te voeren.
Het aangeleverde project leek legitiem. Het maakte gebruik van bekende webontwikkelingstechnologieën en bleef na installatie functioneel, waardoor de repository eruitzag als een echte technische test.
Deze aanpak maakt gebruik van het vertrouwen dat ontwikkelaars stellen in rekruteringsworkflows. Een kandidaat verwacht tijdens een beoordeling repositories te klonen, afhankelijkheden te installeren, code te inspecteren en lokale servers te starten, waardoor de aanvallers een plausibele reden krijgen om potentieel gevaarlijke acties aan te vragen.
Het project bevatte SVG-afbeeldingen met landvlaggen. Bestanden zoalsAE.svgEnAF.svgnormaal weergegeven, maar hun bron bevatte commentaarblokken in HTML-stijl met Base64-gecodeerde malwarefragmenten.
SVG is een op XML gebaseerd afbeeldingsformaat dat tekst, metagegevens en commentaar kan bevatten. In dit geval verborgen de aanvallers de code niet via wijzigingen in de beeldpixels. Ze plaatsten gecodeerde tekst rechtstreeks in opmerkingen die een afbeeldingsviewer zou negeren.
Een JavaScript-bestand met de naamserverValidation.jsverzamelde de SVG-bestanden, sorteerde ze alfabetisch, haalde de opmerkingen eruit en voegde de fragmenten samen. Vervolgens werd de gereconstrueerde JavaScript-payload gedecodeerd en uitgevoerd.
| Aanvalsfase | Waargenomen activiteit |
|---|---|
| Rekrutering lokken | Valse ontwikkelaarsmogelijkheid gepost via Slack |
| Privé contact | Geïnteresseerde doelwitten gingen over op directe berichten |
| Projectoplevering | Functionele e-commerce coderingsbeoordeling geleverd |
| Opslag van lading | Base64-fragmenten geplaatst in opmerkingen in SVG-vlagbestanden |
| Wederopbouw | serverValidation.jsleest de fragmenten en voegt ze samen |
| Uitvoering | Herstelde JavaScript wordt uitgevoerd wanneer de projectserver start |
| Gegevensdiefstal | Inloggegevens, portefeuilles, bestanden en klembordgegevens verzameld |
| Toegang op afstand | Het Socket.IO-kanaal maakt interactieve opdrachtuitvoering mogelijk |
De payload wordt uitgevoerd bij het opstarten van de server
Het projectserver/index.jsbestand roept de kwaadaardige validatieroutine aan na het instellen van de initiële middleware. Beidenpm run devEnnpm startstart dit serverbestand.
Als gevolg hiervan wordt de malware elke keer uitgevoerd wanneer de lokale ontwikkelingsserver wordt gestart. Pakketbeheerbesturingselementen die zich alleen op installatiescripts richten, stoppen dit uitvoeringspad mogelijk niet.
Dit betekent ook dat alleen een SVG-voorbeeld het systeem niet infecteert. De waargenomen aanval vereist dat het doelwit het project uitvoert en het JavaScript op de server activeert dat de verborgen lading reconstrueert.
Waarom onderzoekers het OTTERCOOKIE-Aligned noemen
Elastic vond overeenkomsten tussen het herstelde JavaScript en OTTERCOOKIE, inclusief overeenkomende strings, codestructuur, gedrag en API-eindpunten. Het voorbeeld bevatte echter wijzigingen en gecombineerde mogelijkheden die voorheen verdeeld waren over gerelateerde malwarefamilies.
DeMicrosoft Contagious Interview-analysebeschrijft OTTERCOOKIE als een modulaire JavaScript-achterdeur die opdrachten kan uitvoeren, naar cryptocurrency-sleutels kan zoeken, extra modules kan laden en gegevens kan exfiltreren.
Elastic zei dat de grenzen tussen OTTERCOOKIE en BEAVERTAIL minder duidelijk zijn geworden. De REF9403-payload werkt als een alles-in-één toolkit zonder de Python-fase die we wel zagen bij sommige eerdere Contagious Interview-infecties.
Er worden vier malwaremodules op het apparaat uitgevoerd
Het gereconstrueerde JavaScript lanceert vier hoofdcomponenten. Samen zorgen ze voor identiteitsdiefstal, bestandsverzameling, klembordbewaking en externe toegang.
Het eerste onderdeel richt zich op browserreferenties, databases voor automatisch aanvullen en cryptocurrency-portemonnee-extensies voor Windows, macOS en Linux. De procestitel wordt gewijzigd innpm-cacheom te verschijnen als een gewoon Node.js-proces.
De andere componenten doorzoeken het bestandssysteem, creëren een Socket.IO-opdrachtkanaal en verzamelen de inhoud van het klembord. Op Windows kan de malware ook proberen extra uitvoerbare bestanden te downloaden van de door de aanvaller gecontroleerde infrastructuur.
| Module | Belangrijkste mogelijkheid | Ondersteunde platforms |
|---|---|---|
| Browser en portemonnee-diefstal | Verzamelt opgeslagen browsergegevens en databases met cryptocurrency-portemonnee-extensies | Windows, macOS en Linux |
| Bestandsdief | Zoekt naar documenten, broncode, inloggegevens en configuratiebestanden | Windows, macOS en Linux |
| Socket.IO RAT | Biedt systeemregistratie en interactieve uitvoering van shell-opdrachten | Windows, macOS en Linux |
| Klembord-dief | Bewaakt en uploadt veranderende klembordinhoud | Windows en macOS |
| Ladingsdruppelaar | Pogingen om extra bestanden te downloaden en uit te voeren | Ramen |
Browsergegevens en cryptocurrency-portemonnees gericht
De referentiemodule doorzoekt profielen die behoren tot browsers zoals Chrome, Edge, Brave, Opera en LT Browser. De exacte browserpaden variëren per besturingssysteem.
Het richt zich op databases die opgeslagen aanmeldingen, informatie over automatisch aanvullen en extensiegegevens kunnen bevatten. De voorbeelden bevatten ook een hardgecodeerde lijst van 25 browserextensies voor cryptocurrency-portemonnees, waaronder MetaMask, Phantom, Rabby, Trust Wallet, TronLink, OKX Wallet en Coinbase-gerelateerde alternatieven.
Op macOS probeert de module ook de login-sleutelhangerdatabase van de gebruiker te verzamelen. Gestolen browsersessies of gegevens over portemonnee-extensies kunnen nuttig blijven, zelfs nadat een slachtoffer één accountwachtwoord heeft gewijzigd.
File Stealer doorzoekt ontwikkelaarsmappen
De component voor het stelen van bestanden zoekt naar omgevingsbestanden, privésleutels, shellgeschiedenissen, documenten, broncode, configuratiebestanden en afbeeldingen. In Windows worden de gekoppelde schijven opgesomd voordat ze worden gescand.
Op macOS en Linux richt de zoekopdracht zich op de thuismap van de gebruiker. Paden bevatten.aws,.azure,.config,.ssh,.bash_historyof.zsh_historybijzondere aandacht krijgen.
Deze doelgerichtheid brengt ernstige organisatorische risico's met zich mee. Ontwikkelaarsmachines bevatten vaak cloudreferenties, repositorytokens, SSH-sleutels en toegang tot CI/CD-systemen die een breder compromis zouden kunnen ondersteunen.
- Omgevingsbestanden die applicatiegeheimen bevatten
- AWS- en Azure-referenties
- SSH-privésleutels en -configuratie
- Geschiedenissen van Shell-commando's
- Broncodebestanden en projectdocumenten
- Browser-inlogdatabases
- Gegevens over cryptocurrency-portemonnee-extensies
- macOS login-sleutelhangergegevens
Socket.IO Backdoor geeft aanvallers een interactieve schil
De module voor externe toegang maakt verbinding metcontroller.rightwidth[.]devvia Socket.IO via HTTPS. Het registreert het geïnfecteerde systeem en verzendt identificerende hostinformatie naar de controller.
Een operator kan via het kanaal een shell-commando indienen. De malware voert het uit met Node.jschild_process.exec()en retourneert de uitvoer, waardoor interactieve toegang tot de aangetaste machine wordt geboden.
De module controleert op tekenen van VMware, VirtualBox, QEMU en andere gevirtualiseerde omgevingen. Bij een positief resultaat wordt een label van een virtuele machine toegevoegd aan de registratie-informatie, maar de malware blijft actief.
Klembordbewaking wordt elke halve seconde uitgevoerd
Op Windows en macOS controleert de klembordcomponent elke 500 milliseconden op nieuwe inhoud. Elke wijziging kan naar de infrastructuur van de aanvaller worden verzonden.
Windows-systemen voeren herhaalde verborgen PowerShell-opdrachten uit met behulp vanGet-Clipboard. Op macOS gebruikt de malware depbpastecommando. De Linux-implementatie in het geanalyseerde voorbeeld heeft geen inhoud van het klembord verzameld.
Deze functie kan wachtwoorden, API-tokens, portemonnee-adressen, herstelzinnen of privéberichten blootleggen die een ontwikkelaar tijdens normaal werk kopieert.
Windows-component probeert extra downloads uit te voeren
De alleen-Windows-dropper probeert drie bestanden te downloaden, vermomd met.txtextensies. Het hernoemt ze alshostService.exe,printSvc.exeEndhcpSvc.exevóór executie.
Elastic kon deze bestanden niet ophalen omdat de server tijdens de analyse niet beschikbaar was. Hun exacte functionaliteit blijft daarom onbevestigd en mag niet worden afgeleid uit hun bestandsnamen.
Het mislukte ophalen maakt een geïnfecteerd systeem niet veilig. De modules voor diefstal van inloggegevens, het verzamelen van bestanden, het monitoren van het klembord en de modules voor externe toegang kunnen al gevoelige informatie vrijgeven zonder deze extra ladingen.
Besmettelijke interviews richten zich al jaren op ontwikkelaars
Contagious Interview is in ieder geval sinds december 2022 actief. Aanvallers doen zich vaak voor als recruiters van cryptocurrency-, technologie- of kunstmatige-intelligentiebedrijven en begeleiden slachtoffers door een overtuigend wervingsproces.
Het onderzoek naar besmettelijke interviews van Unit 42eerder gedocumenteerde aan Noord-Korea gelinkte nep-recruiters die BEAVERTAIL- en InvisibleFerret-malware leveren aan technologiewerkzoekenden.

De REF9403-campagne verandert de verpakking, maar het doel van social engineering blijft consistent. De aanvaller heeft het doelwit nodig om de opdracht te vertrouwen en code uit te voeren in een omgeving die waardevolle inloggegevens bevat.
Indicatoren geassocieerd met REF9403
Beveiligingsteams moeten bestands-, netwerk- en gedragsindicatoren combineren. Archiefnamen kunnen eenvoudig worden gewijzigd, terwijl legitieme projecten toevallig generieke namen kunnen gebruiken, zoalsecommerce-main.zip.
| Type | Indicator | Gerapporteerd doel |
|---|---|---|
| Bestand | serverValidation.js | Reconstrueert de payload van SVG-opmerkingen |
| Bestand | AE.svgEnAF.svg | Voorbeelden van vlagbestanden die gecodeerde fragmenten bevatten |
| Procestitel | npm-cache | Vermomming van malwareprocessen |
| Domein | rightwidth[.]dev | Klembord en commando-infrastructuur |
| Domein | ldb.rightwidth[.]dev | Browser- en portemonneegegevensverzameling |
| Domein | upload.rightwidth[.]dev | Gestolen bestandsuploads |
| Domein | controller.rightwidth[.]dev | Socket.IO-controller voor externe toegang |
| Domein | file.rightwidth[.]dev | Downloaden van Windows-payloads |
| IPv4 | 195.26.248[.]212 | Gerapporteerde commando-infrastructuur |
| IPv4 | 188.40.64[.]61 | Gerapporteerde commando-infrastructuur |
Hoe ontwikkelaars coderingsbeoordelingen kunnen controleren
Ontwikkelaars moeten elke ongevraagde coderingstest als niet-vertrouwde code behandelen. Een gepolijste interface, geldige afhankelijkheden en werkende functies garanderen niet dat de repository veilig is.
Vóór uitvoering moeten reviewers dit inspecterenpackage.json, serveropstartbestanden, taakconfiguraties en scripts die activamappen lezen. Lang gecodeerde opmerkingen in SVG-, HTML- of andere statische bestanden rechtvaardigen ook onderzoek.
DeRichtlijnen voor Microsoft-beperkingraadt aan geïsoleerde, niet-persistente virtuele machines te gebruiken voor codeertests en primaire werkstations te vermijden die toegang hebben tot productiesystemen, opslagplaatsen of cloudaccounts.
- Verifieer de recruiter en het bedrijf via een onafhankelijk kanaal.
- Controleer de leeftijd en geschiedenis van de repository en het afzenderaccount.
- Bekijk alle opstart- en taakconfiguratiebestanden.
- Zoeken naar
eval(), dynamische functieopbouw en casco-uitvoering. - Inspecteer opmerkingen in SVG, HTML en andere statische elementen.
- Gebruik een wegwerpbare virtuele machine zonder persoonlijke of zakelijke inloggegevens.
- Beperk uitgaande netwerktoegang tijdens het testen van onbekende projecten.
- Schakel beveiligingshulpmiddelen niet uit op verzoek van een recruiter.
Wat te doen na het uitvoeren van een verdachte repository
Iedereen die een matchingproject heeft uitgevoerd, moet het apparaat loskoppelen van het netwerk en contact opnemen met het relevante beveiligingsteam. De repository, terminalgeschiedenis, procesinformatie en netwerklogboeken moeten vóór het opruimen worden bewaard.
Inloggegevens moeten worden gerouleerd vanaf een afzonderlijk vertrouwd apparaat. Teams moeten browsersessies, repositorytokens, npm-inloggegevens, cloudsleutels en andere geheimen intrekken die beschikbaar waren voor het getroffen account.

Elastic's REF9403-indicatorenkan jacht ondersteunen, maar hulpverleners moeten ook gedragsbewijs onderzoeken, zoals brede bestandsopsomming, herhaalde toegang tot het klembord, verdachte Node.js-processen en onverwachte Socket.IO-verbindingen.
- Isoleer het vermoedelijke ontwikkelaarsapparaat.
- Bewaar de repository en leg de bron- en commit-informatie vast.
- Verzamel lopende processen, terminalgeschiedenis en netwerklogboeken.
- Zoek naar de bekende bestandsnamen, domeinen, IP-adressen en archiefhashes.
- Trek actieve sessies in vanaf een schoon apparaat.
- Roteer GitHub-, GitLab-, npm-, SSH-, cloud- en CI/CD-referenties.
- Controleer cryptocurrency-portefeuilles en verplaats fondsen als blootstelling waarschijnlijk is.
- Controleer bronbeheer- en cloudauditlogboeken op ongeautoriseerde toegang.
- Onderzoek andere systemen die bereikbaar zijn via de inloggegevens die op het apparaat zijn opgeslagen.
- Bouw het eindpunt opnieuw op wanneer responders niet het volledige bereik kunnen vaststellen.
Eindpunten voor ontwikkelaars hebben sterkere isolatie nodig
Ontwikkelaars hebben tools nodig die code kunnen uitvoeren, pakketten kunnen installeren en externe services kunnen bereiken. Deze mogelijkheden maken hun systemen tot waardevolle doelwitten en kunnen de controles die zijn ontworpen voor gewone kantoorapparaten verzwakken.
Hoe eerderUnit 42 bevindingen op het gebied van targeting op ontwikkelaarsliet zien hoe nep-interviews platformonafhankelijke malware op Windows- en macOS-systemen konden plaatsen. REF9403 breidt dat patroon uit naar activa waarvan ontwikkelaars mogen aannemen dat ze onschadelijk zijn.
Organisaties moeten speciale omgevingen bieden voor de beoordeling van kandidaten, open source-testen en onbekende opslagplaatsen. Inloggegevens met een korte levensduur, geheime kluizen en strikte toegangsgrenzen kunnen de impact verminderen als een ontwikkelaar kwaadaardige code uitvoert.
Veelgestelde vragen
Wat is de REF9403-campagne?
REF9403 is een trackingnaam van Elastic Security Labs voor een aan Noord-Korea gelinkte Contagious Interview-campagne die kwaadaardige coderingsbeoordelingen verspreidt onder softwareontwikkelaars.
Kan bij het bekijken van een geïnfecteerde SVG-afbeelding OTTERCOOKIE-malware worden uitgevoerd?
De waargenomen REF9403-infectie begint niet wanneer iemand eenvoudigweg een vlagafbeelding bekijkt. De malware wordt uitgevoerd wanneer het slachtoffer het geleverde project start en het JavaScript op de server reconstrueert en voert Base64-fragmenten uit die zijn opgeslagen in SVG-opmerkingen.
Welke informatie kan de malware stelen?
De malware kan browsergegevens, gegevens voor automatisch aanvullen, databases met cryptocurrency-portemonnee-extensies, cloudgegevens, SSH-bestanden, omgevingsbestanden, documenten, broncode, shell-geschiedenis en klembordinhoud verzamelen.
Welke besturingssystemen zijn getroffen?
De belangrijkste modules voor het stelen van inloggegevens, het stelen van bestanden en externe toegang ondersteunen Windows, macOS en Linux. De klembordverzameling werkt in het geanalyseerde voorbeeld op Windows en macOS, terwijl extra uitvoerbare downloads zich op Windows richten.
Wat moet een ontwikkelaar doen na het uitvoeren van een verdachte coderingstest?
De ontwikkelaar moet het apparaat isoleren, bewijsmateriaal bewaren en het beveiligingsteam op de hoogte stellen. Vanaf een afzonderlijk, schoon apparaat moeten blootgestelde sessies en inloggegevens worden ingetrokken of gerouleerd, inclusief broncontroletokens, cloudsleutels, SSH-sleutels en cryptocurrency-portemonneegeheimen.
