WhatsApp rehace su protección en Rust para acabar con los virus en imágenes de «buenos días»

WhatsApp rehace su protección en Rust para acabar con los virus en imágenes de «buenos días»

Los desarrolladores de WhatsApp sustituyeron 160.000 líneas de código por C++ para reforzar la seguridad de la app.

image

WhatsApp introdujo un nuevo nivel de protección que funciona de forma invisible para el usuario, pero ayuda a bloquear archivos maliciosos ocultos. Los desarrolladores implantaron un componente importante, escrito en el lenguaje de programación Rust, para reducir el riesgo de ataques a través de imágenes, vídeos y documentos.

El equipo del mensajero explicó que el sistema de verificación de archivos multimedia ahora usa una biblioteca en Rust, desplegada ya en miles de millones de dispositivos y en navegadores. Este paso forma parte de la estrategia para reforzar la protección contra adjuntos maliciosos. A pesar del cifrado de extremo a extremo de las conversaciones, los propios archivos pueden representar un peligro. A veces el código malicioso se disfraza de imagen o vídeo normal y trata de explotar vulnerabilidades del sistema operativo o de las bibliotecas integradas de procesamiento multimedia.

El motivo para revisar el enfoque fue la conocida vulnerabilidad de Android llamada Stagefright, descubierta en 2015. En aquella ocasión el problema estaba en las herramientas del sistema para procesar archivos multimedia, y los desarrolladores de aplicaciones no podían arreglarlo rápidamente. Las actualizaciones del sistema operativo llegaban a los usuarios con meses de retraso. WhatsApp entonces modificó su propia biblioteca de procesamiento de MP4 para detectar de forma proactiva desviaciones sospechosas en la estructura de los archivos y evitar su uso. Esto permitió proteger a las personas más rápido que esperar las actualizaciones de la plataforma.

Con el tiempo quedó claro que esas comprobaciones debían hacerse con código lo más seguro posible, ya que tratan con datos no confiables. Por eso, en lugar de rehacer gradualmente la antigua biblioteca en C++, los desarrolladores crearon una nueva versión en paralelo, ya en Rust. Ambas implementaciones se compararon durante largo tiempo mediante pruebas automáticas y métodos de detección de errores. Al final, el volumen de código se redujo y mejoraron el rendimiento y el uso de memoria.

La nueva biblioteca sustituyó aproximadamente 160 000 líneas de código en C++ por una versión de alrededor de 90 000 líneas en Rust, junto con las pruebas. Actualmente se utiliza en Android, iOS, macOS, en la versión web y en dispositivos portátiles. En la empresa afirman que es una de las implementaciones de Rust más a gran escala en productos de consumo.

Además, el sistema recibió un conjunto de comprobaciones llamado «Kaleidoscopio». Identifica estructuras sospechosas en los archivos, vigila los tipos de documentos peligrosos y los casos en que un formato se hace pasar por otro. Se presta especial atención a PDF, ya que con frecuencia se usan para distribuir código malicioso, sobre todo cuando incluyen archivos incrustados y scripts. Los archivos ejecutables y las aplicaciones se marcan como potencialmente peligrosos.

Los desarrolladores subrayan que las comprobaciones del formato no pueden detener el 100% de los ataques, pero reducen significativamente el riesgo. Mensualmente estos componentes de protección se entregan a miles de millones de teléfonos y ordenadores de los usuarios de los servicios de la compañía.

En WhatsApp indican que la mayoría de las vulnerabilidades críticas en el sector están relacionadas con errores de manejo de memoria en programas en C y C++. Por eso el equipo apuesta por lenguajes con protección de memoria incorporada para el código nuevo, refuerza las comprobaciones de los componentes antiguos y reduce la potencial superficie de ataque. Se espera que la proporción de Rust en la infraestructura de seguridad del servicio siga aumentando.