Lingua ejecuta código no confiable en tu máquina. Lo tomamos en serio. Aquí está lo que hace el pipeline de release para asegurar que el binario instalado sea el que construimos, y lo que hace el runtime para contener tus snippets.

Binarios firmados y notarizados

  • macOS — firmado con certificado Apple Developer ID y notarizado con el servicio de Apple. Gatekeeper no debería advertirte.
  • Windows — firmado con certificado Authenticode. La reputación de SmartScreen crece con cada release.
  • Linux — paquetes .deb y .rpm con firma de maintainer.

Checksums SHA256

Cada release incluye un archivo SHA256SUMS.txt junto a los binarios. Verifica antes de instalar:

shasum -a 256 -c SHA256SUMS.txt

El archivo de checksums se genera en el workflow de release después de construir cada binario. El workflow corre en CI público con pasos auditables.

Auditoría de dependencias bloqueante

Cada ejecución del pipeline de release corre npm audit --omit=dev --audit-level=high como gate bloqueante. Una vulnerabilidad alta o crítica en una dependencia de runtime detiene la release.

Runtime Python vendored

Pyodide v0.26.4 viene dentro del binario desktop con hashes de integridad fijados en runtime-assets.lock.json. La app desktop no carga Python desde CDN. La versión web en app.linguacode.dev cachea Pyodide con Service Worker en la primera carga y lo sirve localmente después.

Ejecución en sandbox

  • JavaScript y TypeScript corren dentro de un Web Worker con timeouts y buffers de salida controlados por el padre; un loop infinito no bloquea el renderer.
  • Python corre en un worker dedicado de Pyodide con los mismos límites de timeout y salida.
  • Los subprocesses de Go y Rust heredan un entorno mínimo (PATH, HOME, LANG, TMPDIR); el entorno completo del host no se expone al snippet.
  • El IPC de filesystem usa un registro basado en capacidades: el renderer solo puede operar sobre rutas bajo un root de proyecto aprobado explícitamente por el proceso principal.

Content Security Policy estricta

El renderer desktop incluye una CSP que bloquea scripts remotos e imports de módulos no aprobados. Todo lo que Lingua necesita en runtime viene empaquetado.

Reportar una vulnerabilidad

Escribe a [email protected] con los detalles. Intentamos confirmar recepción en 72 horas. Por favor danos 90 días antes de hacer divulgación pública.