Google ha lanzado Magika 1.0, un conjunto de herramientas diseñado para identificar tipos de contenido de archivos mediante el análisis de datos. Magika puede identificar con precisión lenguajes de programación, métodos de compresión, paquetes de instalación, código ejecutable, tipos de marcado y formatos de audio, vídeo, documentos e imágenes. El conjunto de herramientas y el modelo de aprendizaje automático asociados se distribuyen bajo la licencia Apache 2.0. Existen enlaces disponibles para Rust, Python, JavaScript/TypeScript y Go.
Magika se distingue de proyectos similares que detectan tipos MIME basándose en el contenido por su uso de métodos de aprendizaje automático, su alto rendimiento y su precisión de detección. El modelo se entrenó con el framework Keras utilizando 100 millones de ejemplos de archivos (un conjunto de datos de más de 3 TB) y admite el reconocimiento de 200 tipos de datos con una precisión de al menos el 99 %. El modelo está construido en formato ONNX y ocupa solo unos pocos megabytes. El uso de métodos de aprendizaje profundo resultó en un aumento del 50 % en la precisión de detección en comparación con el sistema anterior de Google, que se basaba en reglas definidas manualmente.
En Google, el sistema se utiliza para clasificar archivos en Gmail, Drive, Code Insight y Navegación Segura durante las comprobaciones de seguridad y cumplimiento. Magika está integrado en las plataformas VirusTotal y abuse.ch como capa de filtrado principal antes de ejecutar analizadores específicos. La configuración de Magika implementada en la infraestructura de Google analiza varios millones de archivos por segundo y varios cientos de miles de millones de archivos por semana. Tras cargar el modelo, el tiempo de inferencia es de 5 ms al probarlo en un solo núcleo de CPU. El tiempo de detección es prácticamente independiente del tamaño del archivo.
Para que puedas usar Magika en tus proyectos, hemos desarrollado una utilidad de línea de comandos, paquetes para Python, Rust y Go, y una biblioteca JavaScript que se puede ejecutar en el navegador o en proyectos Node.js. La interfaz de línea de comandos y la API admiten operaciones por lotes, lo que te permite analizar varios archivos en una sola solicitud. Incluye un modo de análisis recursivo para todo el directorio y tres modos de predicción para ajustar la tolerancia a errores (alta confianza, confianza media y estimación aproximada).
El proyecto se desarrolló inicialmente en Python, pero durante la preparación del lanzamiento de la versión 1.0, el motor de detección de tipos de contenido se reescribió en Rust, logrando un mayor rendimiento sin comprometer la seguridad del código. El framework ONNX Runtime se utiliza para ejecutar el modelo de aprendizaje automático, y la biblioteca Tokio para el procesamiento paralelo y asíncrono de solicitudes. En un MacBook Pro (M4), el rendimiento del motor permite procesar aproximadamente 1000 archivos por segundo.
Además del nuevo motor, la versión 1.0 incluye cambios como la ampliación de la compatibilidad de tipos de datos de aproximadamente 100 a 200; la incorporación de un nuevo cliente de línea de comandos escrito en Rust; una mayor precisión en la detección de formatos de texto, como archivos de configuración y código; y módulos de Python y TypeScript rediseñados para simplificar su integración con otros proyectos. Entre los nuevos tipos de contenido compatibles se incluyen formatos utilizados en aprendizaje automático e inteligencia artificial; los lenguajes de programación Swift, Kotlin, TypeScript, Dart, Solidity, WebAssembly y Zig; componentes de DevOps (Dockerfiles, TOML, archivos de compilación de HashiCorp y Bazel, y reglas YARA); bases de datos SQLite; archivos de AutoCAD (dwg, dxf), Adobe Photoshop (psd) y fuentes (woff, woff2). Se ha mejorado la separación del código en C++ y C, JavaScript y TypeScript.
Fuente: opennet.ru
