Introduction
Les extensions VSCode peuvent présenter des vulnérabilités qui mettent en danger la sécurité de votre machine locale. Un chercheur en sécurité a découvert trois vulnérabilités dans des extensions VSCode, dont deux permettaient l'exfiltration de fichiers locaux. Dans cet article, nous allons analyser ces vulnérabilités et les mécanismes qui les ont rendues possibles.
Contexte Technique
Les extensions VSCode sont des applications Electron qui ont accès au système de fichiers et peuvent exécuter des commandes shell arbitraires. Pour se protéger contre les vulnérabilités XSS, les extensions créent des panneaux UI dans des Webviews sandboxées. Ces Webviews n'ont pas accès aux API NodeJS et peuvent être limitées par des options telles que enableScripts, localResourceRoots et Content-Security-Policy. Les Webviews communiquent avec l'extension principale via l'API postMessage().
Analyse et Implications
Les vulnérabilités découvertes incluent une injection HTML/JavaScript dans l'extension SARIF viewer de Microsoft, qui permettait l'exécution de code arbitraire dans la Webview. Une autre vulnérabilité a été trouvée dans l'extension Live Preview, qui permettait également l'exfiltration de fichiers locaux. Ces vulnérabilités ont été exploitées en utilisant des techniques telles que le leakage de fichiers via DNS pour contourner les politiques de sécurité restrictive, l'utilisation de srcdoc iframes pour exécuter du code JavaScript et le rebinding DNS pour élever l'impact des exploits.
Perspective
Il est essentiel de prendre en compte la sécurité des extensions VSCode, en particulier celles qui parsent des entrées non fiables. Les développeurs d'extensions doivent veiller à configurer correctement les Webviews et à mettre en place des mécanismes de sécurité pour prévenir les vulnérabilités XSS. Les utilisateurs doivent également être conscients des risques potentiels liés à l'utilisation d'extensions non fiables. Il est important de suivre les mises à jour de sécurité et les recommandations des développeurs pour minimiser les risques.