El fin del bitcode: El futuro de la seguridad de las aplicaciones en peligro

Para los desarrolladores de aplicaciones, el bitcode de Baja Nivel de la Máquina Virtual (LLVM, por sus siglas en inglés) ha sido una parte fundamental de la herramienta de Apple y el Kit de Desarrollo Nativo de Android durante los últimos siete años. Con el lanzamiento de la versión beta de Xcode 14, que pronto se convertirá en el estándar para el desarrollo de iOS y macOS a partir de este año, Apple ha deprecado la opción de construir aplicaciones con bitcode.

Índice de Contenido
  1. ¿Qué es la obfuscación de código?
  2. ¿Qué es el bitcode?
  3. ¿Cómo se ve afectado el bitcode por futuras versiones de Xcode?
  4. ¿Por qué esto es importante y quién se ve afectado?
  5. ¿Qué significa esto para el futuro de la seguridad de las aplicaciones?

¿Qué es la obfuscación de código?

La obfuscación de código es una técnica poderosa para proteger el código y una parte esencial de los productos de seguridad de aplicaciones. La idea detrás de la obfuscación es modificar un archivo ejecutable para que ya no sea transparente para un hacker, pero aún así siga siendo completamente funcional.

VISUALIZAR: Política de seguridad de dispositivos móviles (Newsmatic Premium)

Cuando se hace de manera efectiva, la obfuscación hace que sea extremadamente difícil invertir el proceso de ingeniería en un programa y, por lo tanto, se utiliza para proteger propiedad intelectual sensible. Por ejemplo, la obfuscación puede ser utilizada para ocultar un algoritmo que una empresa no quiere que sus competidores entiendan, sobre todo para proteger el código de seguridad.

En el campo del blindaje de aplicaciones, utilizamos varias herramientas para crear un entorno seguro en el que las aplicaciones puedan operar. Esto incluye cosas como la detección de ganchos, la anti-depuración y la anti-manipulación, que paradójicamente son vulnerables a la manipulación o eliminación a menos que estén bien ocultas. Por lo tanto, utilizamos la obfuscación para proteger estas herramientas.

La obfuscación puede ser implementada en tres niveles diferentes: el nivel basado en el código fuente, el nivel basado en binarios nativos y, con mucho, el enfoque más dominante, el nivel intermedio. Entre muchos compiladores y el código nativo hay una capa intermedia donde se realizan optimizaciones.

Protección antivirus en línea: McAfee Clinic lleva la seguridad de tu PC al siguiente nivel

El ejemplo más conocido de este nivel es Low-Level Virtual Machine (LLVM). LLVM es un conjunto de tecnologías de compiladores y herramientas que se pueden utilizar para desarrollar una interfaz para cualquier lenguaje de programación y una plataforma para cualquier conjunto de instrucciones. LLVM es útil porque permite a los compiladores, como Clang o Rustc, dirigirse a diferentes plataformas, como Linux en X86_64, armv7, iOS y Windows. Si un ofuscador puede operar en este nivel, es más fácil de construir y mantener porque no está vinculado ni al lenguaje del compilador ni al conjunto de instrucciones de la máquina.

Sin embargo, hay una desventaja: a menudo está ligado a la cadena de herramientas. Para las aplicaciones en iOS y macOS, aquellos que ofuscan a nivel intermedio están sujetos a cualquier cambio o revisión importante en el desarrollo de software de Apple, como lo es Xcode 14.

¿Qué es el bitcode?

El bitcode es una versión serializada de la Representación Intermedia de LLVM.

Una de las razones por las que LLVM es ampliamente utilizado en el desarrollo de aplicaciones, y por ende del bitcode, es que es de código abierto y está disponible para todos. Esto ha llevado a que muchos proveedores creen ofuscadores que operan en el bitcode. La ventaja para ellos es que también pueden enfocarse en múltiples plataformas y generalmente en varios lenguajes de programación. El hecho de que las bibliotecas de LLVM también proporcionen todas las API necesarias para manipular el bitcode ha contribuido aún más a su dominio.

Anteriormente, Apple hacía uso del bitcode en su cadena de herramientas porque tenían que admitir varias arquitecturas de CPU, como Intel, arm32 y arm64. Incluso en algunos casos, Apple ha exigido que las aplicaciones se envíen en formato de bitcode, no en código de máquina. Esto ha permitido a Apple hacer la fase final de conversión a código de máquina para el dispositivo específico en el que se instalará.

¿Cómo se ve afectado el bitcode por futuras versiones de Xcode?

Apple ha llegado a un punto en el que todos sus nuevos dispositivos utilizan la arquitectura arm64 y ya no requieren de los backend flexibles proporcionados por LLVM. En la presentación principal de la WWDC 2022, se mencionó la capacidad de optimizar mejor exclusivamente para esa arquitectura, lo que sugiere que la capa intermedia de LLVM podría dejar de ser utilizada para ese propósito en el futuro.

Cómo proteger tu computadora de los virus: métodos y consejos

Esto ha dado lugar a una revisión importante en la forma de la versión beta de Xcode 14, donde Apple ha deprecado la opción de construir aplicaciones con bitcode. Los desarrolladores de iOS y macOS aún pueden usar bitcode con una advertencia, pero esta opción será eliminada más adelante. Esencialmente, ahora es más difícil producir aplicaciones con bitcode.

¿Por qué esto es importante y quién se ve afectado?

Las futuras versiones de Xcode podrían impedir que los proveedores de seguridad utilicen bitcode. Los proveedores de ofuscación suelen seguir dos enfoques diferentes para la ofuscación de bitcode, los cuales se verán afectados de manera diferente.

El primer enfoque es la ofuscación de aplicaciones, donde el ofuscador actúa sobre la aplicación en su totalidad en formato de bitcode, después de la construcción, como un archivo IPA o Xcarchive. Este es un enfoque óptimo porque significa que el ofuscador no necesita estar estrechamente integrado en la cadena de herramientas y puede realizar ofuscaciones en toda la aplicación en lugar de en módulos individuales.

El segundo enfoque es una integración en la cadena de herramientas, donde el ofuscador reemplaza o parcha componentes en la cadena de herramientas de Apple para asegurarse de que se llame durante el proceso de construcción. Esto puede causar problemas de mantenimiento, pero típicamente es una integración ligera mediante la creación de envoltorios alrededor del compilador Clang existente.

El primer enfoque está efectivamente deprecado. Es probable que los proveedores que utilizan este enfoque continúen su trabajo (con advertencias) durante al menos otro año. Sin embargo, es probable que este método se prohiba en Xcode 15 o 16.

El segundo enfoque también podría estar en terreno inseguro en el futuro, ya que no sabemos si Apple eliminará LLVM o evitará el acceso a él en el compilador en algún momento, incluso sin previo aviso. Todos los proveedores que actualmente utilizan un ofuscador basado en LLVM para la protección de aplicaciones en iOS y macOS se verán afectados por este cambio.

¡Defiéndete! Protege tu seguridad en línea contra amenazas críticas

¿Qué significa esto para el futuro de la seguridad de las aplicaciones?

En última instancia, LLVM se volverá menos útil y posiblemente desaparecerá por completo a medida que Apple busque aprovechar su arquitectura unificada para CPU, GPU y aceleradores de ML. Xcode 14 ya contiene componentes de la cadena de herramientas que compiten con LLVM para este propósito. Si LLVM desaparece, en el futuro las plataformas de Apple podrían volverse mucho más difíciles de proteger y, por lo tanto, habrá menos proveedores disponibles con productos que ofrezcan esa protección.

Es muy posible que esta situación pueda comprometer la seguridad de muchas de las aplicaciones en la App Store. Si esto sucede o no dependerá de la capacidad de adaptación de los proveedores de seguridad. Aquellos que utilizan un enfoque integrado en la cadena de herramientas estarán bien por el momento, pero corren el riesgo de que este enfoque se bloquee sin previo aviso en el futuro.

Lo más probable es que veamos un aumento en el enfoque basado en binarios nativos para la obfuscación. La diferencia clave con este enfoque es que la manipulación se realiza directamente en el código de máquina construido. Hay pocos ofuscadores que actualmente utilicen este método, ya que es particularmente difícil de hacer y puede requerir el soporte de muchos formatos binarios y/o conjuntos de instrucciones de CPU.

En cualquier caso, aunque el futuro de la obfuscación de código puede ser incierto, una cosa es segura: los desarrolladores de aplicaciones deberán adoptar un enfoque proactivo, seguir de cerca a los proveedores de seguridad y planificar en consecuencia si quieren asegurarse de que sus aplicaciones sigan siendo seguras.

Andrew Whaley es el Director Técnico Senior de Promon, una empresa noruega de seguridad de aplicaciones. Con su vasta experiencia en pruebas de penetración, endurecimiento de aplicaciones, obfuscación de código, criptografía y blockchain, Andrew lidera el equipo de I+D de Promon para mejorar la suite de productos centrales de la empresa con nuevas capacidades de seguridad.

Protege tus contraseñas con PAM: Tu aliado para la seguridad

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a El fin del bitcode: El futuro de la seguridad de las aplicaciones en peligro , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.