Visual Studio Code wordt door beveiligingsonderzoekers steeds vaker genoemd als onderdeel van supply chain-aanvallen op ontwikkelaars. Onderzoekers van Jamf hebben recent repositories geïdentificeerd waarin misbruik wordt gemaakt van het tasks.json-configuratiebestand.
Door taken automatisch te laten uitvoeren bij het openen van een projectmap, kunnen aanvallers ongemerkt kwaadaardige code activeren, meldt DevClass.
Het gaat daarbij niet om een kwetsbaarheid in Visual Studio Code zelf, maar om functionaliteit die werkt zoals bedoeld. Het tasks.json-bestand is ontworpen om command line-tools vanuit de editor te starten en kan taken automatisch uitvoeren zodra een map wordt geopend. Deze configuraties staan meestal in de verborgen .vscode-map en worden zo eenvoudig meegedeeld wanneer code via platforms als GitHub wordt gedeeld.
Microsoft heeft verschillende beschermingsmaatregelen ingebouwd. Mappen worden standaard als onbetrouwbaar aangemerkt en taken worden pas uitgevoerd nadat een gebruiker expliciet vertrouwen verleent. Ook verschijnt er een waarschuwing wanneer automatisch code wordt gestart. In de praktijk blijkt deze bescherming echter beperkt effectief. Het dialoogvenster legt visueel de nadruk op doorgaan na vertrouwen, terwijl de waarschuwingstekst juist wijst op de risico’s. Daarnaast kunnen eerder ingestelde vertrouwensregels ertoe leiden dat nieuwe submappen automatisch worden geaccepteerd.
Gebruiksgemak botst met security awareness
Onderzoekers plaatsen vraagtekens bij deze ontwerpkeuzes. In de dagelijkse praktijk kiezen gebruikers vaak voor snelheid, zeker wanneer de interface dat gedrag faciliteert. In zo’n situatie is het lastig om de volledige verantwoordelijkheid bij de gebruiker neer te leggen, aangezien het openen van een project al voldoende kan zijn om verborgen code te activeren.
De bevindingen van Jamf Threat Labs illustreren hoe ver dit misbruik kan reiken. In het onderzochte geval werd via tasks.json een achterdeur geïnstalleerd die remote code execution mogelijk maakte, systemen in kaart bracht en een blijvende verbinding met een command and control-server onderhield. De taken bevatten commando’s voor macOS, Windows en Linux en haalden externe JavaScript op via curl. Doordat de payload extern werd gehost, was detectie door beveiligingstools lastiger.
Hoewel de betrokken repository inmiddels is verwijderd, blijft het risico bestaan. Kwaadaardige repositories worden regelmatig verspreid onder het mom van sollicitaties of technische opdrachten. Ook zonder automatisch uitgevoerde taken kan het openen van dergelijke code al tot problemen leiden.
Bescherming blijft daarmee complex. Het volledig doorlichten van een repository is vaak onhaalbaar, zeker bij grotere projecten. Voorzichtigheid bij het werken met code van derden blijft daarom noodzakelijk. Steeds vaker wordt geadviseerd om te ontwikkelen in geïsoleerde omgevingen zoals containers of tijdelijke virtuele machines, zodat de impact van misbruik beperkt blijft.