- WhatsApp adoptó e implementó una nueva capa de seguridad para los usuarios, creada con Rust, como parte de su esfuerzo por aumentar las defensas contra las amenazas de malware.
- La experiencia de WhatsApp en la creación y distribución de nuestra biblioteca de coherencia multimedia en Rust a miles de millones de dispositivos y navegadores demuestra que Rust está agudo para la producción a escalera integral.
Nuestra logística de manejo de medios
WhatsApp proporciona criptográfico de extremo a extremo predeterminado para que más de 3 mil millones de personas envíen mensajes de forma segura todos los días. La seguridad en semirrecta es un espacio conflictivo y, para seguir garantizando que los usuarios puedan amparar sus mensajes de forma segura, adaptamos y evolucionamos constantemente nuestra logística contra las amenazas de seguridad cibernética, al mismo tiempo que respaldamos la infraestructura de WhatsApp para ayudar a las personas a conectarse.
Por ejemplo, WhatsApp, como muchas otras aplicaciones, permite a los usuarios compartir medios y otros tipos de documentos. WhatsApp ayuda a proteger a los usuarios advirtiendo sobre archivos adjuntos peligrosos como APK; sin bloqueo, se puede ocultar malware poco popular y sofisticado internamente de un archivo aparentemente amable como una imagen o un video. Estos archivos creados con fines malintencionados pueden apuntar a vulnerabilidades no parcheadas en el sistema eficaz, bibliotecas distribuidas por el sistema eficaz o la propia aplicación.
Para ayudar a guarecerse contra estos posibles hilos, WhatsApp utiliza cada vez más el lengua de programación Rust, incluso en nuestra funcionalidad para compartir medios. Rust es un lengua seguro para la memoria que ofrece numerosos beneficios de seguridad. Creemos que este es el dispersión más ínclito a nivel mundial de cualquier biblioteca escrita en Rust.
Para ayudar a explicar por qué y cómo implementamos esto, primero debemos analizar una vulnerabilidad secreto a nivel del sistema eficaz que envió una señal importante a WhatsApp sobre el fortalecimiento de las defensas para compartir medios.
Vulnerabilidad de Android 2015: una convocatoria de atención para la protección de archivos multimedia
En 2015, los dispositivos Android y las aplicaciones que se ejecutaban en ellos se volvieron vulnerables al «Vulnerabilidad del miedo teatral. El error radicaba en el procesamiento de archivos multimedia por parte de las bibliotecas proporcionadas por el sistema eficaz, por lo que WhatsApp y otras aplicaciones no pudieron solucionar la vulnerabilidad subyacente. Adecuado a que a menudo las personas pueden tardar meses en modernizar a la última interpretación de su software, nos propusimos encontrar soluciones que mantuvieran seguros a los usuarios de WhatsApp, incluso en caso de una vulnerabilidad del sistema eficaz.
En ese momento, nos dimos cuenta de que una biblioteca C++ multiplataforma ya desarrollada por WhatsApp para despachar y formatear consistentemente archivos MP4 (convocatoria «wamedia») podría modificarse para detectar archivos que no cumplen con el normalizado MP4 y podrían desencadenar errores en una biblioteca de sistema eficaz débil en el banda del receptor, poniendo así en aventura la seguridad del objetivo. Implementamos esta comprobación y pudimos proteger a los usuarios de WhatsApp de la vulnerabilidad Stagefright mucho más rápidamente que si dependiéramos de que los usuarios actualizaran el sistema eficaz.
Pero adecuado a que las comprobaciones de medios se ejecutan automáticamente durante la descarga y procesan entradas que no son confiables, identificamos desde el principio que wamedia era un candidato principal para usar un lengua seguro para la memoria.

Nuestra opción: óxido a escalera
En circunstancia de una reescritura incremental, desarrollamos la interpretación Rust de wamedia en paralelo con la interpretación diferente de C++. Utilizamos fuzzing diferencial y pruebas unitarias y de integración exhaustivas para avalar la compatibilidad entre las dos implementaciones.
Dos obstáculos importantes fueron el aumento auténtico del tamaño binario adecuado a la incorporación de la biblioteca normalizado Rust y el soporte del sistema de compilación requerido para las diversas plataformas compatibles con WhatsApp. WhatsApp hizo una envite a espacioso plazo para producir ese soporte. Al final, reemplazamos 160.000 líneas de C++ (excluidas las pruebas) con 90.000 líneas de Rust (incluidas las pruebas). La interpretación Rust mostró ventajas de rendimiento y uso de memoria en tiempo de ejecución sobre C++. Cubo este éxito, Rust se implementó por completo para todos los usuarios de WhatsApp y muchas plataformas: Android, iOS, Mac, Web, Wearables y más. Con esta evidencia positiva en la mano, los lenguajes seguros para la memoria desempeñarán un papel cada vez más importante en el enfoque universal de WhatsApp cerca de la seguridad de las aplicaciones y los usuarios.
Con el tiempo, hemos ayudante más comprobaciones de estructuras no conformes internamente de ciertos tipos de archivos para ayudar a proteger las bibliotecas posteriores de intentos de explotación diferencial del analizador. Por otra parte, verificamos los tipos de archivos de anciano aventura, incluso si son estructuralmente conformes, para detectar indicadores de aventura. Por ejemplo, los archivos PDF suelen ser un transporte para el malware y, más específicamente, la presencia de archivos incrustados y instrumentos de secuencias de comandos internamente de un PDF aumenta aún más los riesgos. Además detectamos cuando un tipo de archivo se hace acontecer por otro, mediante una extensión falsa o un tipo MIME. Finalmente, marcamos de modo uniforme tipos de archivos peligrosos conocidos, como ejecutables o aplicaciones, para un manejo peculiar en la UX de la aplicación. En conjunto, llamamos a este conjunto de cheques «Caleidoscopio». Este sistema protege a las personas en WhatsApp de clientes y archivos adjuntos no oficiales potencialmente maliciosos. Aunque las comprobaciones de formato no detendrán todos los ataques, esta capa de defensa ayuda a mitigar muchos de ellos.
Cada mes, estas bibliotecas se distribuyen a miles de millones de teléfonos, computadoras portátiles, de escritorio, relojes y navegadores que se ejecutan en múltiples sistemas operativos para personas en WhatsApp, Messenger e Instagram. Esta es la implementación más ínclito nunca realizada de código Rust para un conjunto diverso de plataformas y productos de heredero final que conocemos. Nuestra experiencia acento de la preparación para la producción y la propuesta de valencia única de Rust del banda del cliente.
Cómo encaja Rust en el enfoque de WhatsApp en materia de seguridad de aplicaciones
Este es sólo un ejemplo de las muchas inversiones de WhatsApp en seguridad. Es por eso que creamos criptográfico de extremo a extremo predeterminado para mensajes y llamadas personales, ofrecemos criptográfico de extremo a extremo copias de seguridady utilizar tecnología secreto de transparencia para confirmar una conexión segura, proporcione información adicional llamando a proteccionesy más.
WhatsApp tiene un sólido historial de ser ruidoso cuando encontramos problemas y de trabajar para responsabilizar a los malos actores. Por ejemplo WhatsApp informes CVE para problemas importantes que encontramos en nuestras aplicaciones, incluso si no encontramos evidencia de explotación. Hacemos esto para brindarles a las personas en WhatsApp la mejor oportunidad de guarecerse al ver un aviso de seguridad y modernizar rápidamente.
Para avalar la seguridad de las aplicaciones, primero debemos identificar y cuantificar las fuentes de aventura. Hacemos esto a través de auditorías internas y externas como Evaluación pública del Reunión NCC de las copias de seguridad cifradas de extremo a extremo de WhatsApp, fuzzing, descomposición inmutabletrámite de la prisión de suministro y descomposición automatizado de la superficie de ataque. Recientemente todavía ampliamos nuestra Software de recompensas por errores para presentar el Proxy de investigación de WhatsApp – una utensilio que hace más efectiva la investigación del protocolo de red de WhatsApp.
A continuación, reducimos el aventura identificado. Como muchos otros en la industria, descubrimos que la mayoría de las vulnerabilidades de incorporación dificultad que publicamos se debían a problemas de seguridad de la memoria en el código escrito en los lenguajes de programación C y C++. Para combatir esto invertimos en tres estrategias paralelas:
- Diseñe el producto para minimizar la exposición innecesaria de la superficie de ataque.
- Invierta en seguro de seguridad para el código C y C++ restante.
- De forma predeterminada, la selección de lenguajes seguros para la memoria, y no C y C++, para el código nuevo.
WhatsApp ha ayudante protecciones como CFI, asignadores de memoria reforzados, API de manejo de búfer más seguras y más. Los desarrolladores de C y C++ cuentan con capacitación en seguridad especializada, pautas de expansión y descomposición de seguridad automatizados sobre sus cambios. Además contamos con SLA estrictos para solucionar problemas descubiertos por el proceso de identificación de riesgos.
Acelerar la apadrinamiento de Rust para mejorar la seguridad
Rust permitió al equipo de seguridad de WhatsApp desarrollar una biblioteca multiplataforma segura y de detención rendimiento para avalar que los medios compartidos en la plataforma sean consistentes y seguros en todos los dispositivos. Este es un importante paso delante para pegar seguridad adicional detrás de ámbito para los usuarios y parte de nuestro enfoque continuo de defensa en profundidad. Los equipos de seguridad de WhatsApp y Meta están destacando oportunidades para una apadrinamiento de Rust de detención impacto para los equipos interesados, y anticipamos una apadrinamiento acelerada de Rust en los próximos abriles.