Repository navigation
Releases: oscarhenriquezg/msgeater
Release list
v0.8.0
Añadido
Analizador de línea de comandos (msgeater --analyze): el mismo análisis que muestra el panel de la aplicación —señales, ruta de entrega, indicadores y SHA-256 de los adjuntos— sin abrir ventana, con salida de texto o --json.
Abrir los correos de uno en uno no sirve para revisar un buzón entero.
- No abre ventana ni necesita servidor gráfico: funciona por SSH, en un contenedor o desde un cron, con el mismo binario ya instalado — no hay un ejecutable aparte que instalar.
- La bandera se atiende antes del bloqueo de instancia única, así que responde aunque haya una ventana abierta.
- Códigos de salida pensados para scripts:
0sin señales,1alguna señal,2algún archivo no se pudo analizar.0significa exactamente eso, no que el correo sea seguro. - No imprime el cuerpo del mensaje —solo el análisis— y no toca la red.
- Neutraliza las secuencias de escape ANSI del asunto y de los nombres de adjunto (se cuelan codificadas en RFC 2047): en un terminal moverían el cursor y podrían tapar las señales dentro de la propia salida.
Ruta de entrega en el panel de análisis. La cadena Received —los servidores por los que pasó el correo— se muestra como una línea de tiempo legible, del origen declarado a la entrega final, con la IP de cada salto (copiable) y la demora del tramo. Antes ese dato solo estaba en el volcado técnico de Ctrl/Cmd+U.
- Junto a la ruta se explica hasta dónde es fiable: cada servidor añade su línea sin poder comprobar las anteriores, así que los saltos de origen los puede haber escrito íntegramente quien envía el mensaje.
- Por eso mismo no genera ninguna señal de riesgo: derivar un veredicto de la cadena sería acusar a partir de datos que controla el atacante.
- El nombre inverso (rDNS) se muestra solo cuando no coincide con el nombre anunciado.
Corregido
- El nombre del servidor receptor de cada salto arrastraba el
;que separa la fecha (mx.example.com;), tanto en la vista de código fuente como al copiarlo.
Verificar este release: docs/VERIFY-RELEASE.md · Changelog completo: CHANGELOG.md
v0.7.0
Añadido
El panel de análisis es accesible en cualquier momento, con un botón nuevo en la barra de herramientas, la entrada Ver → Analizar el mensaje y el atajo Ctrl/Cmd+Shift+A.
Antes solo se podía abrir cuando el correo disparaba alguna señal de riesgo, lo que dejaba sin acceso a los indicadores y a los hashes de los adjuntos en un correo normal — y querer el SHA-256 de un adjunto no depende de que el mensaje sea sospechoso.
- El aviso automático no cambia: sigue apareciendo solo cuando hay señales que reportar.
- Al abrir el panel en un correo sin señales, se indica exactamente eso —que no se detectó ninguna de las señales comprobadas— junto con la advertencia de que no equivale a que el correo sea seguro.
Corregido
- Con la ventana estrecha, la barra de herramientas dejaba Exportar y Acerca de fuera de la pantalla: seguían existiendo pero era imposible pulsarlos. Ocurría ya en el ancho mínimo que la propia aplicación permite (640 px). Ahora la barra se reorganiza en dos filas y esos botones se mantienen alineados a la derecha.
Verificar este release: docs/VERIFY-RELEASE.md · Changelog completo: CHANGELOG.md
v0.6.0
Añadido
Detección de macros en adjuntos ofimáticos. Si un .docm, .xls, .docx… trae un proyecto VBA, se añade una señal de riesgo: los documentos con macros son una vía de entrega de malware habitual y no se distinguen a simple vista de uno inofensivo.
- Se comprueba sin abrir ni ejecutar el documento, buscando la huella del proyecto:
vbaProject.binen los formatos ZIP modernos, o una entrada de directorio_VBA_PROJECT/Macrosen los.doc/.xlsantiguos. - Se revisan también las extensiones que en teoría no llevan macros (
.docx,.xlsx): si las llevan, es más sospechoso, no menos. - La extensión declarada en las propiedades MAPI la controla quien envía el correo, así que también se tiene en cuenta la del nombre visible del archivo.
- No afecta al tiempo de apertura: solo se leen los bytes de los adjuntos ofimáticos, que en un correo normal son ninguno.
El escaneo de VirusTotal posterior a cada release propone ahora por pull request la actualización del resultado publicado en el README, conservando el del peor de los cinco instalables (no el más favorable).
Verificar este release: docs/VERIFY-RELEASE.md · Changelog completo: CHANGELOG.md
v0.5.0
Añadido
Triaje de phishing. Bajo los metadatos aparece un aviso —solo si hay algo que reportar— con las señales de riesgo detectadas: autenticación del remitente fallida (SPF/DKIM/DMARC), suplantación de dirección (From frente a Return-Path, Reply-To desviado), adjuntos que pueden ejecutar código, dominios con homografía IDN y enlaces acortados. Al pulsarlo se abre el detalle con la explicación de cada señal.
- Indicadores del mensaje: URLs, dominios, IPs y direcciones extraídos y deduplicados, copiables por grupo para reportar un phishing sin recopilarlos a mano.
- SHA-256 de los adjuntos, bajo demanda. Permiten consultar un archivo en un servicio de reputación buscando por hash, sin subirlo: el contenido del correo no sale del equipo.
- Si no se detecta ninguna señal no se muestra nada: no detectar nada no equivale a que el correo sea seguro, así que la app no exhibe un indicador "en verde" que induzca confianza injustificada.
Además: pruebas basadas en propiedades (fast-check), procedencia también como .intoto.jsonl, escaneo automático con VirusTotal al publicar, CONTRIBUTING.md / CODE_OF_CONDUCT.md / guía de usuario / traducciones al inglés, badge passing de OpenSSF Best Practices y cobertura medida en CI.
Corregido
sameOrganizationcomparaba solo las dos últimas etiquetas del dominio:bank.co.ukyattacker.co.ukse trataban como la misma organización y se suprimían las señales de suplantación en un caso de phishing real.- La extracción de enlaces ignoraba atributos HTML sin comillas (
<a href=https://...>), que siguen siendo clicables: esos enlaces evadían señales e indicadores. - Los adjuntos marcados
inlinequedaban fuera de la señal de ejecutable, aunque un.emlpuede etiquetar así un archivo que la interfaz sigue ofreciendo para abrir y guardar. - El filtro interno de
<script>/<style>no seguía la regla de cierre de HTML (</script >,</script/>).
Verificar este release: docs/VERIFY-RELEASE.md · Changelog completo: CHANGELOG.md
v0.4.4
v0.4.3
Añadido
- Cada release incluye ahora
SHA256SUMSy una GitHub Artifact Attestation (Sigstore) por artefacto, más un SBOM en formato SPDX generado desde el dependency graph nativo de GitHub. Ver docs/VERIFY-RELEASE.md para verificarlos. - CI: análisis estático con CodeQL, Dependency Review en PRs y evaluación independiente con OpenSSF Scorecard.
Corregido
- CI llevaba roto varios commits (
npm auditbloqueaba todo el job por vulnerabilidades HIGH reales ennodemailer/undici, dependencias de producción). Actualizadas. - Carrera en el test e2e de seguridad más importante del proyecto ("sin ejecución de scripts en el iframe").
SECURITY.md: tabla de versiones soportadas desactualizada.
Changelog completo: CHANGELOG.md
v0.4.2
Corregido
- Los iconos de la app (menú de aplicaciones, barra de tareas/ventana, diálogo "Acerca de") tenían fondo negro opaco en vez de transparente, por lo que se veían como un bloque invisible en launchers con tema oscuro. Se regeneraron
build/icon.png,build/icon.icns,build/icons/*y los iconos embebidos del renderer desde el pack transparente actualizado enassets/icon-source/.
Cambiado
- El estado vacío (arrastra un
.msg) ahora muestra el tux comiéndose el sobre.msgen vez de un icono de sobre genérico. - README: captura de pantalla actualizada e icono de la app añadido bajo el título.
Changelog completo: CHANGELOG.md
v0.4.1
v0.4.0
Arranque mucho más rápido
El tiempo desde el doble-clic hasta ver el mensaje baja de ~7 s a ~1,8 s en uso normal (y ~2,9 s en el primer arranque tras reiniciar, primer arranque se puede perciibr lento, pero luego mejora.). Tres mejoras:
- Aceleración por hardware en macOS/Windows — antes se desactivaba en todas las plataformas por un workaround de Linux; ahora el render por software es solo Linux.
- Precalentado del worker de parsing — sus librerías se cargan en otro hilo, en paralelo al arranque de la ventana.
- Sanitización del cuerpo en el renderer (DOMPurify sobre el DOM nativo) — el worker deja de cargar jsdom, que era el grueso del coste. El parseo del primer mensaje pasó de ~2 s a ~0,1 s en macOS.
Seguridad
Sin cambios en el modelo de protección: el iframe sandbox + CSP siguen como defensa en profundidad, y la política de sanitización se unifica en una sola fuente de verdad (la usan el renderer al mostrar y el main en la vista de código fuente y al exportar). Las exportaciones sanitizan el cuerpo antes de emitir el archivo, con test de regresión.
v0.3.0
MSG Viewer v0.3.0
Seguridad
- Detectar homografía IDN (punycode) en enlaces y resaltarlos.
- Advertir y marcar adjuntos ejecutables al abrir/guardar.
- Imágenes remotas bajo demanda y aviso de enlaces engañosos.
Interfaz
- Rediseño de la barra: asunto copiable, atajos e iconos.
- Menú único Exportar con 9 formatos; PNG con diálogo de destino.
- Copiar con formato, zoom/oscurecer del cuerpo, fuente y atajos.
- Diálogos in-app (salir del visor con la URL en caja).
Visor / parser
- Decodificar cadenas ANSI (001E) con el codepage del mensaje.
- Markdown, 'Guardar como' congruente con formatos de export.
- Arrastrar-fuera de adjuntos.
- Ofrecer asociar los tipos de archivos .msg al inicio.
Correcciones
- Linux: evitar el diálogo de keyring al arrancar.
- Arranque roto por el import de punycode.