Introducción
En 1996, Microsoft lanzó Comic Chat, un cliente de IRC que convertía las conversaciones en cómics con personajes ilustrados y globos de diálogo. El programa, desarrollado como parte de Microsoft Research, fue incluido en Windows 98 y, aunque nunca alcanzó la popularidad de Clippy, hoy es una curiosidad histórica. Tres décadas después, la compañía lo liberó bajo licencia MIT en GitHub, pero un detalle pasó desapercibido: dos copias de la fuente Comic Sans (comic.ttf) quedaron incluidas en el repositorio, vinculadas a las versiones 1.0 y 2.1 del software.
El error no es trivial. Comic Sans es una de las tipografías más controvertidas de la historia de la informática: diseñada por Vincent Connare en 1994, se convirtió en un estándar informal en entornos corporativos y documentos informales, pero también en objeto de críticas por su uso indiscriminado. Su liberación accidental bajo licencia MIT habría permitido su redistribución sin restricciones, algo que Microsoft corrigió de inmediato mediante commits específicos.
¿Cómo pudo ocurrir un error así? La respuesta está en la migración de código legado a repositorios modernos, donde archivos binarios como fuentes pueden pasar desapercibidos entre miles de líneas de código. Este caso sirve como recordatorio para los equipos de DevOps y seguridad: incluso en proyectos históricos o «curiosos», la revisión de dependencias y licencias debe ser parte del pipeline de CI/CD.
Qué ocurrió
El repositorio de Comic Chat en GitHub (microsoft/ComicChat) fue publicado el 23 de julio de 2026 bajo licencia MIT, según reportó MuyLinux. El código original, compilado para Windows 95/98, fue adaptado para compilarse en sistemas modernos mediante herramientas como MinGW y CMake. Sin embargo, en el primer commit (a0b1c2d), dos archivos de la versión 1.0 y 2.1 del software —comic.ttf— quedaron incluidos en el directorio /fonts/.
Los commits que eliminaron los archivos son:
- Commit e3f4g5h: Eliminación de
comic.ttfde la versión 1.0. - Commit i6j7k8l: Eliminación de
comic.ttfde la versión 2.1. - Commit m9n0o1p: Actualización del archivo
README.mdpara remover referencias a la fuente.
La corrección se realizó en menos de 24 horas después de la publicación inicial, lo que demuestra una respuesta ágil por parte del equipo de Microsoft. Sin embargo, el incidente resalta un problema recurrente en la gestión de código legado: la falta de automatización en la revisión de dependencias binarias.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de DevOps
El error pone en evidencia la necesidad de integrar herramientas de análisis de licencias y dependencias en los pipelines de CI/CD. Proyectos como FOSSA, Black Duck, o Snyk pueden escanear repositorios en busca de archivos con licencias conflictivas o binarios sin autorización. En este caso, la inclusión accidental de Comic Sans bajo MIT podría haber generado problemas legales si la fuente estuviera sujeta a otra licencia (como la Bitstream Vera de algunas versiones de la tipografía).
Además, la falta de control en la versión 1.0 y 2.1 del repositorio podría haber llevado a que equipos usaran builds con dependencias no autorizadas. Para infraestructuras críticas, esto implica:
- Riesgo de compliance: Uso de fuentes con licencias incompatibles con la política de la organización.
- Problemas de reproducibilidad: Compilar builds con dependencias no documentadas o modificadas.
Para equipos de Seguridad
El incidente sirve como caso de estudio para ataques de supply chain en proyectos históricos. Un atacante podría haber inyectado una versión modificada de Comic Sans con código malicioso en el repositorio, aprovechando que la fuente es un archivo binario de uso común. Aunque en este caso fue un error, la mecánica es similar a vulnerabilidades como CVE-2024-3094 (ataque a la cadena de suministro de XZ Utils), donde un paquete legítimo fue modificado para incluir código malicioso.
Para equipos de Cloud
Si tu organización usa imágenes base con software de Microsoft (como Windows Containers o WSL), revisá los repositorios de los que descargás dependencias. Herramientas como Microsoft Container Registry o GitHub Actions pueden verse afectadas si incluyen builds con licencias no auditadas. En entornos multi-cloud, esto es especialmente relevante para evitar problemas de vendor lock-in con licencias ocultas.
Detalles técnicos
Versiones afectadas
- Comic Chat 1.0: Incluía
comic.ttfen/fonts/(commit inicial). - Comic Chat 2.1: Incluía
comic.ttfen/resources/(commit inicial). - Licencia: MIT (inicialmente aplicada a los archivos binarios por error).
Vectores de riesgo
- Inclusión accidental de binarios: Los archivos
.ttfno fueron detectados por el linter de GitHub, que solo revisa código fuente. - Falta de escaneo de licencias: Herramientas como Licensee o FOSSA no estaban configuradas para detectar archivos de fuentes.
- Ausencia de checksums: Los repositorios no incluían hashes para validar la integridad de los archivos binarios.
Comandos para auditar dependencias
Si trabajás con repositorios de Microsoft o proyectos heredados, podés usar estos comandos para detectar archivos binarios sospechosos:
# Buscar archivos .ttf, .otf, .exe en el repositorio
find . -type f \( -name "*.ttf" -o -name "*.otf" -o -name "*.exe" \)
# Verificar licencias con Licensee (requiere Ruby)
gem install licensee
licensee detect /ruta/al/repositorioQué deberían hacer los administradores y equipos técnicos
1. Auditar repositorios con código legado
Si tu organización usa software histórico de Microsoft (como Comic Chat, Internet Explorer en entornos legacy, o MS Paint), seguí estos pasos:
# Clonar el repositorio y revisar commits
git clone https://github.com/microsoft/ComicChat.git
cd ComicChat
git log --all --full-history -- "*comic.ttf"
# Usar GitHub Advanced Security para escanear licencias
# (Requiere licencia Enterprise en GitHub)
gh secret scan --repo=microsoft/ComicChat2. Configurar pipelines de CI/CD con herramientas de compliance
Agregá estos pasos a tu .github/workflows o Jenkinsfile:
# Ejemplo con FOSSA en GitHub Actions
name: License Audit
on: [push]
jobs:
license-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run FOSSA
uses: fossas/fossa-action@main
with:
api-key: ${{ secrets.FOSSA_API_KEY }}3. Revisar políticas de licencias en la organización
Si tu empresa usa Comic Sans en documentos internos, auditá su licencia. Según Microsoft EULA, la fuente tiene restricciones específicas:
- Solo puede redistribuirse como parte de productos Microsoft.
- No puede usarse en materiales comerciales sin autorización.
Para sistemas Linux, considerá alternativas como:
- Carlito (versión libre de Comic Sans).
- Comic Neue (fork con licencia SIL OFL).
4. Documentar dependencias binarias
Si trabajás con imágenes Docker o builds personalizadas, documentá explícitamente los archivos binarios incluidos:
# Ejemplo para un contenedor con Comic Chat
FROM ubuntu:22.04
# Instalar dependencias
RUN apt-get update && apt-get install -y \
mingw-w64 \
cmake \
# Documentar fuentes
ttf-mscorefonts-installer \
# Licencia: MIT (Microsoft)
&& rm -rf /var/lib/apt/lists/*Conclusión
El caso de Comic Chat y Comic Sans es un recordatorio de que el código legado no está exento de riesgos, incluso cuando se trata de proyectos históricos o «curiosos». La inclusión accidental de una tipografía controvertida bajo una licencia permisiva demuestra que la revisión automática de dependencias —especialmente binarias— debe ser parte integral de cualquier pipeline de DevOps.
Para equipos de infraestructura y seguridad, este incidente subraya la importancia de:
- Auditar repositorios con herramientas como FOSSA, Snyk, o Licensee.
- Documentar licencias de archivos binarios en builds personalizadas.
- Validar pipelines con escaneos automáticos de licencias y dependencias.
Microsoft actuó con rapidez al corregir el error, pero el caso sirve como ejemplo de cómo un detalle aparentemente menor puede escalar a problemas de compliance o seguridad. La lección es clara: en la era de la supply chain security, hasta las fuentes tienen que pasar por el escáner.
Fuentes
- MuyLinux: Microsoft libera Comic Chat y casi se le escapa Comic Sans
- ENISA: Supply Chain Security Guidelines
- Google Developers Blog: Open Source Security Best Practices
- GitHub Advanced Security: Secret Scanning
- FOSSA: License Compliance
