Saltar al contenido
macOS · Disponible

Tsuba

Echa un vistazo antes de que un código desconocido se ejecute por primera vez.

Tsuba app icon
Tipo
macOS
Versión
0.3.0
Lanzamiento
31 oct 2026
Descargas
24
Paquete de reglas
20 reglas · 2026.10.27
Requisitos
macOS 13+
Precio
Gratis
Privacidad
Leer →

Tsuba (鍔) es la guarda de una espada japonesa. Esta vive en tu barra de menús y actúa en el momento en que un código desconocido se ejecuta por primera vez: averigua qué va a hacer el código, de dónde viene y si se parece a un ataque conocido, y luego decide Permitir, Advertir o Bloquear.

La creé después de que clientes falsos de Upwork intentaran infectar mi Mac dos veces. La primera vez lo consiguieron, y ni XProtect ni el antivirus se dieron cuenta. Aquí está la historia completa.

Tsuba en 24 segundos.

El panel: estado de la protección, lo que necesita atención y un registro en vivo de cada comprobación.
El panel: estado de la protección, lo que necesita atención y un registro en vivo de cada comprobación.

Por qué el antivirus no ve estos ataques

Los proyectos de entrevista falsos, las apps de reuniones falsas, los paquetes npm envenenados y las extensiones de editor maliciosas llegan con un envoltorio nuevo cada vez. Se ejecutan con herramientas corrientes como node, curl y bash, así que un antivirus tradicional no tiene nada que señalar. Tsuba vigila los puntos de entrada.

La magnitud del problema:

  • La campaña norcoreana Contagious Interview está activa desde al menos diciembre de 2022. El "proyecto de prueba" es un proyecto npm en GitHub, GitLab o Bitbucket y, en cuanto confías en el repositorio, VS Code ejecuta su archivo de tareas por sí solo (Microsoft, marzo de 2026).
  • Socket ha registrado más de 1700 paquetes maliciosos vinculados a la campaña desde enero de 2025, en npm, PyPI, Go, crates.io y Packagist (Socket, abril de 2026).
  • Las extensiones GlassWorm escondían su código en caracteres Unicode invisibles y llegaron a unas 35 800 instalaciones antes de que las descubrieran (Koi Security, octubre de 2025).
  • Sonatype registró 16 279 nuevos paquetes de código abierto maliciosos en un solo trimestre, 845 204 en total (Sonatype, 2.º trimestre de 2025).

Antes de ejecutar un proyecto que te envió un reclutador

  1. No lo abras todavía en tu editor. Una carpeta de confianza puede ejecutar su .vscode/tasks.json al abrirse.
  2. Lee el package.json: scripts preinstall y postinstall, y dependencias que nunca has oído nombrar o que se publicaron la semana pasada.
  3. Busca código que no pinta nada en una prueba técnica: direcciones IP fijas en el código, eval de texto descargado, lecturas de perfiles del navegador, carteras o el llavero.
  4. Nunca pegues en tu terminal una línea curl … | bash sacada de un chat sin leer el script.
  5. Si ya lo ejecutaste, da por hecho que la máquina está comprometida: busca rastros y luego cambia contraseñas, tokens y claves desde un dispositivo limpio.

Tsuba hace los pasos 1 a 4 por ti justo cuando importan, y su Chequeo de salud cubre el paso 5.

Qué revisa

Punto de entrada Ejemplos Qué mira Tsuba
Comandos en la terminal curl … | bash, npm install, npx, npm start, git clone Descarga el script remoto sin ejecutarlo; compara los paquetes npm con listas de paquetes maliciosos, revisa su antigüedad y sus scripts de instalación; busca en el proyecto código oculto, servidores fijos en el código y lecturas de carteras o gestores de contraseñas
Pegar en la terminal Una página te dice que "copies este comando en tu terminal" Avisa en cuanto pegas; los comandos ofuscados que se envían a un shell se marcan como de alto riesgo
Carpeta Descargas Nuevos archivos .dmg, .pkg, .vsix Firma, notarización, origen de la descarga y scripts de instalación
Extensiones de editor VS Code, Cursor, Windsurf, VSCodium La lista oficial de extensiones maliciosas, activación al iniciar, código oculto en caracteres invisibles; las extensiones de alto riesgo van a cuarentena
Herramientas de IA para programar Servidores MCP, skills y hooks de Claude Code, Cursor, Codex Paquetes maliciosos conocidos, arranques desde carpetas ocultas, instrucciones ocultas al usuario
Chequeo de salud Barra de menús → Chequeo de salud Rastros que dejan ataques conocidos e ítems de inicio sospechosos

Los proyectos que te generan dudas se pueden probar primero en un sandbox: una carpeta de inicio falsa con señuelos, peticiones de red registradas pero nunca enviadas y un límite de 60 segundos.

La instalación bloqueada de una app de reuniones falsa: el veredicto, los motivos y las evidencias, línea a línea.
La instalación bloqueada de una app de reuniones falsa: el veredicto, los motivos y las evidencias, línea a línea.

Escanea carpetas cuando quieras o de forma programada. Lo que sea de riesgo va a cuarentena.
Escanea carpetas cuando quieras o de forma programada. Lo que sea de riesgo va a cuarentena.

El Chequeo de salud busca rastros de ataques conocidos y audita las extensiones de editor y las herramientas de IA.
El Chequeo de salud busca rastros de ataques conocidos y audita las extensiones de editor y las herramientas de IA.

Cómo se compara Tsuba

La mayoría de las herramientas cubren una sola vía de entrada. Tsuba cubre cada primera ejecución en un Mac y funciona junto a las demás.

Herramienta Qué revisa Cuándo
Tsuba Comandos en la terminal, npm y npx, proyectos clonados, .dmg / .pkg / .vsix, extensiones de editor, servidores MCP, skills y hooks, comandos pegados Antes de que el código se ejecute por primera vez
npq, Socket Firewall, Aikido Safe Chain Paquetes de npm (y, algunas, de PyPI y otros) Al instalar
mcp-scan y otros escáneres de MCP Servidores MCP y herramientas de agentes Cuando ejecutas un escaneo
LuLu, BlockBlock, KnockKnock (Objective-See) Conexiones salientes y software que se instala para arrancar al iniciar sesión Después de que el código se haya ejecutado
Antivirus y XProtect Firmas de malware conocido Cuando un archivo coincide con una muestra conocida

Cómo decide

Las reglas sin conexión siempre se ejecutan primero, respaldadas por inteligencia de amenazas pública que se actualiza a diario, con más de 230 000 paquetes npm y PyPI maliciosos reportados por OpenSSF. Después, un modelo de IA puede valorar las evidencias en contexto. Claude funciona mejor, también se admiten otros proveedores y modelos locales, y puedes desactivar la IA por completo.

Al modelo solo se envían las evidencias que necesita una comprobación. Antes se quitan los comentarios del código, y los secretos nunca se suben. La configuración y el historial se quedan en ~/.tsuba, en tu Mac.

Ajustes: activa o desactiva cada defensa y elige cómo se toman los veredictos, con o sin IA.
Ajustes: activa o desactiva cada defensa y elige cómo se toman los veredictos, con o sin IA.

Disponibilidad

Tsuba ya está disponible, es gratis y de código abierto con licencia Apache 2.0 (en GitHub). Hay dos versiones: elige Apple silicon para Macs con M1 o posteriores, Intel para los más antiguos. ¿No sabes cuál tienes? Menú Apple → Acerca de este Mac → Chip.

La app habla diez idiomas, español incluido: English, 简体中文, 繁體中文, 日本語, 한국어, Español, Français, Deutsch, Português y Русский. La interfaz, las notificaciones, las comprobaciones en la terminal, las explicaciones de las reglas y las respuestas de la IA siguen el idioma de macOS, o elige uno en Ajustes → Apariencia.

Tsuba aún no está firmado ni notarizado por Apple, así que macOS lo bloquea la primera vez que lo abres. Ve a Ajustes del Sistema → Privacidad y seguridad y haz clic en Abrir igualmente. Por favor, no quites la marca de cuarentena con xattr: Tsuba advierte de los instaladores que te lo piden, y el suyo no debería ser la excepción.

Solo tienes que hacerlo una vez. Después, Tsuba se actualiza solo: te avisa cuando sale una versión nueva y solo la instala si su firma coincide con la clave integrada en la app.

Para comprobar que tu DMG es el que GitHub compiló a partir del código público, compara shasum -a 256 Tsuba_*.dmg con SHA256SUMS.txt en la página de la versión.

Pruébalo

Salida real, reglas reales

Elige una muestra para ver lo que imprimió la app al escanearla: solo reglas sin conexión, versión 0.1.1. Las muestras salen de sus pruebas. Imitan la forma de ataques reales, pero son inofensivas.

$ tsuba scan ~/code/fake_interview_project

Tsuba ✗ Block recommended  ~/code/fake_interview_project
  Evidence:
   High Decodes and then dynamically runs code (eval/Function + base64), common in obfuscated poisoned code [server/server.js] Source: Tsuba rules · Apache-2.0
      eval(Buffer.from("Y29uc29sZS5sb2coImxvY2FsZ3VhcmQgdGVzdCBmaXh0dXJlIik=", "base64").toString()); const C2 = "http://203.0.113.7:1224/api"; app.get('/', (q, r) =>
   High Connects straight to a hard-coded IP address and port (typical of a C2 server) [server/server.js]
      eval(Buffer.from("Y29uc29sZS5sb2coImxvY2FsZ3VhcmQgdGVzdCBmaXh0dXJlIik=", "base64").toString()); const C2 = "http://203.0.113.7:1224/api"; app.get('/', (q, r) =>
   High Code is pushed off the right edge of the screen by whitespace, out of sight (a typical way to hide a poisoned payload) [server/server.js]
      const app = require("express")(); ⟨400 spaces⟩ eval(Buffer.from("Y29uc29sZS5sb2coImxvY2FsZ3VhcmQgdGVzdCBmaXh0dXJlIik=", "base64").toString()); const C2 = "http:
Novedades

Novedades

Feed de versiones ↗
Archivos · v0.3.0Tamaño
Tsuba_0.3.0_aarch64.dmg19.5 MB4b8ff8f2cc343864f63be59c43460f4396ab61ad4ae2ddd368d13ff61a58d1d3
Tsuba_0.3.0_x64.dmg22.3 MB02cfbea2b133032c5207c9e1dcbd1432ecc737408db29fbc1d9fb92fb5962122
  1. 0.3.031 oct 2026
    • f8aa092Give other languages' relative times room in the terminal log
    • d4a8ac6Translate the README into nine languages and refresh its screenshots
    • 7c0a4a6Add seals, a crest and gold fittings to the samurai look
    • 9de218fSpeak ten languages
    • 52826a5Restyle the shell as held-back samurai armor
    • c103f41Show the guard on a laptop and open the app through it
    • 1d22fd0Replace the katana logo with a 3D tsuba
    • 0cfcdfdAdd pnpm app to start the app from the repo root
    • 54bf89dDeclare all four MCP tool hints and test quarantine_list
    • 51a757fAdd the M8ven Verified badge to the README
    • 4ccb857Give the README a product page look with screenshots
    Todos los cambios ↗
  2. 0.2.129 oct 2026
    Todos los cambios ↗
  3. 0.2.029 oct 2026
    • be28cfaPlay a short, soft sound with Block notifications
    • 14d4349Redesign Settings, Health Check and the window chrome
    • 42754edUpdate Tsuba in the app from GitHub Releases
    • 4392c89Let users ignore warnings and choose which notifications they get
    Todos los cambios ↗
  4. 0.1.228 oct 2026
    • d0353e4Add the Apache-2.0 LICENSE
    • e7f620eLeave folders the sandbox hides out of its PATH
    • d8fc3b7Let the website workflow run by hand to test the hook
    • a1f8191Rebuild the website when a release is published
    Todos los cambios ↗
Preguntas

Preguntas

¿Es seguro ejecutar un proyecto que me envió un reclutador?

Trátalo como no fiable hasta revisarlo: en las entrevistas de trabajo falsas, el proyecto de prueba es el malware. Arrastra la carpeta a la ventana de Tsuba, o clónala con Tsuba conectado a tu terminal, y revisará dependencias, scripts de instalación y tareas de VS Code antes de que nada se ejecute. Si ya lo ejecutaste, haz un Chequeo de salud y lee lo que me pasó a mí.

¿Cómo reviso un paquete npm antes de instalarlo?

Con Tsuba conectado a tu terminal, npm install y npx se revisan antes de ejecutarse: paquetes maliciosos conocidos de la lista de OpenSSF, paquetes publicados hace solo unos días y scripts de instalación. Herramientas de línea de comandos como npq hacen una revisión parecida, solo para npm.

¿Por qué macOS dice que no se puede abrir Tsuba?

Tsuba aún no está firmado ni notarizado por Apple, así que la primera vez que lo abras ve a Ajustes del Sistema → Privacidad y seguridad y haz clic en Abrir igualmente. Por favor, no quites la marca de cuarentena con xattr: Tsuba advierte de los instaladores que lo piden. Para verificar tu descarga, compárala con el SHA-256 que aparece en Novedades.

¿Tsuba sube mi código?

No se sube ningún archivo. Si activas la IA, solo las evidencias que necesita una comprobación van al modelo que elegiste, sin los comentarios del código y sin secretos. Con la IA desactivada, las comprobaciones se hacen en tu Mac con reglas sin conexión. La configuración y el historial se quedan en ~/.tsuba. El aviso de privacidad enumera todo lo que Tsuba envía y cuándo.

¿Necesito una suscripción de IA o una clave de API?

No. Las reglas sin conexión siempre se ejecutan primero y funcionan por sí solas. La IA es opcional: Claude funciona mejor, y también se admiten otros proveedores y modelos locales.

¿Sustituye a mi antivirus?

No. Reconocer malware conocido queda en manos de XProtect de macOS y de la inteligencia de amenazas abierta. Tsuba cubre lo que a ellos se les escapa: código con un envoltorio nuevo que nadie ha visto todavía, como proyectos de entrevista falsos, apps de reuniones falsas, paquetes envenenados y extensiones maliciosas, y actúa antes de que ese código se ejecute.

¿En qué Macs funciona?

macOS 13 o posterior, en Apple silicon e Intel, con una descarga distinta para cada uno. Menú Apple → Acerca de este Mac → Chip te dice cuál tienes.

¿Y si marca algo que en realidad es seguro?

Cada Advertir y cada Bloquear muestra sus evidencias (qué archivo, qué línea, qué coincidió), para que lo juzgues tú, y una advertencia que ya revisaste se puede ignorar, o lo que es de confianza puede ir a la lista de permitidos. Por favor, reporta el falso positivo: cada uno se convierte en una prueba de regresión.

Comentarios

¿Encontraste un bug o algo que se le escapó?

Los reportes van a GitHub Issues, en público. Nunca pegues secretos. Para una muestra maliciosa real, envía su hash y de dónde salió, no el archivo.

Sígueme

Comparto proyectos, experimentos y aprendizajes sobre la marcha.

Vídeos nuevos en YouTube, notas cortas en X. Cada artículo de aquí enlaza a ambos.

YouTube