Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>VulnSync — MSRC & GitHub AdvisoryNew to Visual Studio Code? Get it now.
VulnSync — MSRC & GitHub Advisory

VulnSync — MSRC & GitHub Advisory

Preview

Felix Andres Gonzalez Ortiz

|
2 installs
| (0) | Free
Detecta el stack del proyecto (.NET, Node.js, Python), sincroniza los boletines de seguridad de Microsoft (MSRC) y la GitHub Advisory Database, y marca en el editor las dependencias y runtimes vulnerables.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

VulnSync — MSRC & GitHub Advisory para VS Code

Extensión que detecta el stack de tu proyecto, sincroniza los reportes de vulnerabilidades publicados por Microsoft y te marca en el editor qué dependencias o runtimes están afectados.

Funciona en VS Code y en editores basados en él (Cursor, Windsurf, VSCodium).

Fuentes de datos

Fuente Qué cubre Cómo se consulta
MSRC – Security Update Guide (API CVRF v3.0) Runtimes y SDK de .NET y ASP.NET Core GET api.msrc.microsoft.com/cvrf/v3.0/updates + documento mensual. Se descargan los últimos N meses (12 por defecto), se reducen a .NET/ASP.NET Core y se guardan en caché; las siguientes sincronizaciones solo bajan boletines nuevos o revisados.
GitHub Advisory Database (Microsoft/GitHub) Paquetes de NuGet, npm y PyPI GET api.github.com/advisories?ecosystem=…&affects=pkg@versión, en lotes de hasta 1000 paquetes. Cada rango vulnerable se vuelve a verificar localmente.

No requiere claves de API. Si inicias sesión en GitHub desde VS Code (comando VulnSync: Iniciar sesión en GitHub), el límite sube de 60 a 5000 peticiones/hora; la sesión no pide permisos sobre tus repositorios.

Detección del stack

Stack Manifiestos Versiones exactas desde
.NET / NuGet *.csproj, *.fsproj, *.vbproj, Directory.Packages.props (CPM), Directory.Build.props, global.json packages.lock.json; runtimes vía dotnet --list-runtimes o RuntimeFrameworkVersion
Node.js / npm package.json (incl. monorepos) package-lock.json, npm-shrinkwrap.json, yarn.lock (v1 y Berry), pnpm-lock.yaml
Python / PyPI requirements*.txt, pyproject.toml (PEP 621, dependency-groups, Poetry), Pipfile poetry.lock, uv.lock, Pipfile.lock, o pines ==

Sin lockfile no se asume una versión instalada: se consultan todos los avisos del paquete y se marca como por confirmar cualquier aviso cuyo rango vulnerable intersecte el rango declarado. Si el rango no se puede interpretar, la dependencia queda como no verificada. En monorepos npm cada workspace se resuelve por su ruta dentro del lockfile.

Las dependencias de desarrollo ([dev-packages], devDependencies) se analizan por defecto.

Estado de cada fuente

El resultado nunca se muestra como limpio si una fuente falló: cada una se reporta como completa, parcial, datos en caché, falló o no aplica. Si algo falta, la barra de estado, el árbol y el reporte indican Escaneo incompleto.

Runtimes de .NET

global.json solo informa del SDK. Cada aplicación (proyecto ejecutable) se evalúa por separado con su TFM, RuntimeFrameworkVersion, SelfContained, RollForward y, si existe, su *.runtimeconfig.json. dotnet --list-runtimes es evidencia auxiliar (solo en workspaces de confianza). Una biblioteca, o una aplicación autocontenida sin versión fijada, produce hallazgos por confirmar.

En el editor

  • Diagnósticos sobre la línea exacta de la versión en el manifiesto (error para crítica/alta, advertencia para media, información para baja o por confirmar), con el ID enlazado al boletín.
  • Acciones rápidas (Ctrl+.): actualizar a la versión corregida solo en pines y rangos simples (con vista previa; en rangos complejos solo se sugiere y nunca se amplía el rango), descargar el runtime de .NET, abrir el boletín o ignorar el ID.
  • Panel VulnSync en la barra de actividad: vulnerabilidades agrupadas por paquete y el stack detectado.
  • Barra de estado con el conteo; roja si hay hallazgos críticos o altos.
  • Reporte Markdown (VulnSync: Generar reporte) para adjuntar a un PR o ticket.
  • Reescaneo automático al guardar un manifiesto o lockfile, y sincronización periódica.

Configuración

Ajuste Por defecto Descripción
vulnsync.ecosystems ["nuget","npm","pip"] Ecosistemas analizados
vulnsync.syncIntervalHours 12 Frecuencia de sincronización y reescaneo
vulnsync.msrc.enabled true Consultar MSRC para runtimes .NET
vulnsync.msrc.monthsToSync 12 Boletines mensuales a mantener
vulnsync.msrc.checkInstalledRuntimes true Ejecutar dotnet --list-runtimes
vulnsync.github.useVSCodeAuth true Usar la sesión de GitHub de VS Code
vulnsync.minimumSeverity low Severidad mínima mostrada
vulnsync.includeTransitive true Analizar dependencias transitivas de los lockfiles
vulnsync.exclude node_modules, bin, obj, .venv… Globs excluidos
vulnsync.ignoredAdvisories [] IDs GHSA/CVE a omitir (se guarda en el workspace)

Desarrollo

npm install
npm run compile      # compila a out/
npm test             # pruebas unitarias del núcleo (node --test)
npm run test:integration   # pruebas dentro de VS Code (descarga una copia aislada)
npm run package      # recompila y genera vulnsync-0.1.1.vsix

Pulsa F5 en VS Code para abrir una ventana de desarrollo con la extensión cargada.

Instalar el .vsix: Extensiones → … → Instalar desde VSIX, o code --install-extension vulnsync-0.1.1.vsix.

Estructura

src/
  core/                 # sin dependencia de 'vscode' (testeable)
    types.ts            # Dependency, RuntimeTarget, Finding
    version.ts          # comparación semver/NuGet/PEP 440 y rangos GHSA
    detect.ts           # combina manifiestos + lockfiles por directorio
    parsers/            # npm, yarn/pnpm, MSBuild/NuGet, Python
    sources/github.ts   # GitHub Advisory API + matching
    sources/msrc.ts     # MSRC CVRF v3.0, sync incremental + matching
    scan.ts             # orquestación, filtros, reporte Markdown
  ui/                   # diagnósticos, acciones rápidas, vistas
  extension.ts          # activación, comandos, watchers, caché

Para publicar en el Marketplace, sube el .vsix desde la página de gestión del Marketplace o ejecuta npx vsce publish.

Limitaciones conocidas

  • Las propiedades MSBuild en versiones (Version="$(MyVersion)") no se resuelven.
  • MSRC solo se usa para .NET / ASP.NET Core; los paquetes NuGet de Microsoft (p. ej. System.Text.Json) se cubren por GitHub Advisory, donde Microsoft también publica sus avisos.
  • Los runtimes autocontenidos solo se confirman con una versión fijada (RuntimeFrameworkVersion o runtimeconfig.json); la arquitectura/plataforma (RID) no se distingue.
  • yarn y pnpm se resuelven por nombre: si un paquete tiene varias versiones en el lockfile queda sin determinar y se usa su rango.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft