La importancia de la ofuscación y el polimorfismo del código para la seguridad de las aplicaciones
Compartir
Comentario
La importancia de la ofuscación y el polimorfismo del código para la seguridad de las aplicaciones
1 de abril de 2023
Índice
Al hacer que el código fuente, el código de bytes o el código máquina sean significativamente más difíciles de entender por los humanos, la ofuscación del código se erige como un aspecto esencial de la seguridad de las aplicaciones debido a su papel consistente en hacer que sea molesto y complicado (si no casi imposible) para los atacantes realizar ingeniería inversa del código de manera oportuna.
Obviamente, esto es importante porque el código vulnerable podría revelar el funcionamiento interno de la aplicación y sus vulnerabilidades explotables. Además, el código ofuscado es mucho menos susceptible de ser manipulado, lo que lo convierte en un componente esencial para garantizar la integridad del código de las aplicaciones.
8 Técnicas de ofuscación de código
Las técnicas de ofuscación de código modifican el código de tal manera que sigue siendo funcional y tiene un impacto insignificante en el rendimiento y la huella de memoria, pero es más difícil de analizar para los ciberdelincuentes. Sin embargo, no todas las soluciones de ofuscación son iguales.
Los enfoques de código abierto tienden a centrarse en "minimizar" la aplicación, y la ofuscación del código se convierte simplemente en un efecto secundario. Este tipo de ofuscación no ofrece una barrera contra los ataques. Para una ofuscación sólida, se requiere flujo de control y otras técnicas avanzadas.
Algunas técnicas de ofuscación que no suelen estar presentes en las soluciones de código abierto son:
01
Manipulación de APK
Añade código muerto o mutado, aumentando la complejidad de la aplicación sin añadir ningún dato al flujo original de las funciones. Esta técnica dificulta la lectura de la aplicación sin afectar a su flujo de datos ni a sus funciones.
02
Inserción de código condicional mutado
Duplica y cambia el código legítimo en código muerto para confundir a los atacantes.
03
Desbobinado de bucles
Cambia los bucles a instancias repetibles para detener la concordancia de patrones alterando los patrones estándar que suelen buscar los atacantes (incluidos los patrones criptográficos). Esto hace que los patrones sean demasiado grandes para utilizar la concordancia de patrones para atrapar un patrón.
04
Sustitución de valores literales
Los valores literales están ofuscados y no aparecerán en el código durante el análisis estático. En su lugar, se calcularán durante el tiempo de ejecución cuando lo requiera la aplicación.
05
Ofuscación de cadenas
Las cadenas están ofuscadas y son ilegibles durante el análisis estático. Sólo se generarán durante el tiempo de ejecución cuando la aplicación las requiera.
06
Ir a Inserciones
Añade redireccionamientos en el código para pasar de un bloque de código a otro, ocultando así la estructura del código.
07
Cifrado de secciones
Cifra toda la sección del binario, haciéndola ilegible mediante análisis estático. Esta técnica se aplica a las URL y a las sentencias SQL utilizadas por las aplicaciones, lo que disminuye la posibilidad de que los atacantes apliquen ingeniería inversa a los valores sensibles.
08
Crypto-Vars
Una versión mejorada del cifrado de secciones que funciona en tiempo de ejecución de la aplicación. Los valores se descifrarán globalmente durante el tiempo de ejecución para que la aplicación los utilice cuando sea necesario. Una vez utilizados, los valores se volverán a cifrar.
Mientras que la ofuscación del código permite retrasar los intentos de ingeniería inversa al hacer que el código sea más difícil de analizar, los actores maliciosos que analizan el código a fondo pueden, con el tiempo suficiente, entender el código y superar la ofuscación. En respuesta a una situación de este tipo, las organizaciones deben asegurarse de que emplean múltiples capas de protección en su paquete RASP.
Polimorfismo
Además de las comprobaciones dinámicas RASP, que bloquean los intentos de depuración, hooking, proxy y rooting, también deben existir protecciones estáticas, incluidas las técnicas de ofuscación mencionadas y más tácticas.
Una de esas tácticas es el polimorfismo de código, una técnica que consiste en cambiar activamente el código de una aplicación durante cada una de sus fases de compilación. El polimorfismo de código conduce a un resultado diferente en cada compilación, aunque el código fuente no haya cambiado.
Este tipo de protección dificulta a los atacantes el uso de la información obtenida a través de la experiencia, obligándoles a empezar desde cero en cada compilación. La combinación de múltiples capas de ofuscación de código y polimorfismo de código son algunos factores que proporcionan a las organizaciones una protección contra la ingeniería inversa mucho mayor.
En general, la ofuscación de código y el polimorfismo de código sirven como potentes herramientas que dificultan exponencialmente el proceso de ingeniería inversa a los actores maliciosos y les impiden obtener acceso no autorizado a datos sensibles o interrumpir el funcionamiento de la aplicación.
En consecuencia, la aplicación de estas técnicas permite a las empresas y organizaciones garantizar la seguridad de sus aplicaciones y protegerse contra ataques potencialmente devastadores.
Mediante este enfoque, el método de seguridad de aplicaciones multicapa que incluye medidas tanto estáticas como dinámicas, permite mejorar el alcance de la protección al contar con diferentes medidas de seguridad en diferentes capas que trabajan juntas para proteger contra los vectores de ataque en constante expansión.
Para obtener información sobre la pila tecnológica de inyección de código cero de Verimatrix y sus numerosas innovaciones en seguridad de aplicaciones, haga clic aquí.
Dominar el arte de la ofuscación de código y el polimorfismo
Proteja sus aplicaciones de ataques maliciosos Suscríbase a nuestro boletín para conocer las últimas técnicas de ofuscación de código y polimorfismo para una seguridad robusta de las aplicaciones.
Escrito por
Dr. Klaus Schenk
El Dr. Klaus Schenk es vicepresidente senior de seguridad e investigación de amenazas de Verimatrix y dirige sus Laboratorios VMX.
Comentario
La importancia de la ofuscación y el polimorfismo del código para la seguridad de las aplicaciones
Índice
Al hacer que el código fuente, el código de bytes o el código máquina sean significativamente más difíciles de entender por los humanos, la ofuscación del código se erige como un aspecto esencial de la seguridad de las aplicaciones debido a su papel consistente en hacer que sea molesto y complicado (si no casi imposible) para los atacantes realizar ingeniería inversa del código de manera oportuna.
Obviamente, esto es importante porque el código vulnerable podría revelar el funcionamiento interno de la aplicación y sus vulnerabilidades explotables. Además, el código ofuscado es mucho menos susceptible de ser manipulado, lo que lo convierte en un componente esencial para garantizar la integridad del código de las aplicaciones.
8 Técnicas de ofuscación de código
Las técnicas de ofuscación de código modifican el código de tal manera que sigue siendo funcional y tiene un impacto insignificante en el rendimiento y la huella de memoria, pero es más difícil de analizar para los ciberdelincuentes. Sin embargo, no todas las soluciones de ofuscación son iguales.
Los enfoques de código abierto tienden a centrarse en "minimizar" la aplicación, y la ofuscación del código se convierte simplemente en un efecto secundario. Este tipo de ofuscación no ofrece una barrera contra los ataques. Para una ofuscación sólida, se requiere flujo de control y otras técnicas avanzadas.
Algunas técnicas de ofuscación que no suelen estar presentes en las soluciones de código abierto son:
01
Manipulación de APK
Añade código muerto o mutado, aumentando la complejidad de la aplicación sin añadir ningún dato al flujo original de las funciones. Esta técnica dificulta la lectura de la aplicación sin afectar a su flujo de datos ni a sus funciones.
02
Inserción de código condicional mutado
Duplica y cambia el código legítimo en código muerto para confundir a los atacantes.
03
Desbobinado de bucles
Cambia los bucles a instancias repetibles para detener la concordancia de patrones alterando los patrones estándar que suelen buscar los atacantes (incluidos los patrones criptográficos). Esto hace que los patrones sean demasiado grandes para utilizar la concordancia de patrones para atrapar un patrón.
04
Sustitución de valores literales
Los valores literales están ofuscados y no aparecerán en el código durante el análisis estático. En su lugar, se calcularán durante el tiempo de ejecución cuando lo requiera la aplicación.
05
Ofuscación de cadenas
Las cadenas están ofuscadas y son ilegibles durante el análisis estático. Sólo se generarán durante el tiempo de ejecución cuando la aplicación las requiera.
06
Ir a Inserciones
Añade redireccionamientos en el código para pasar de un bloque de código a otro, ocultando así la estructura del código.
07
Cifrado de secciones
Cifra toda la sección del binario, haciéndola ilegible mediante análisis estático. Esta técnica se aplica a las URL y a las sentencias SQL utilizadas por las aplicaciones, lo que disminuye la posibilidad de que los atacantes apliquen ingeniería inversa a los valores sensibles.
08
Crypto-Vars
Una versión mejorada del cifrado de secciones que funciona en tiempo de ejecución de la aplicación. Los valores se descifrarán globalmente durante el tiempo de ejecución para que la aplicación los utilice cuando sea necesario. Una vez utilizados, los valores se volverán a cifrar.
Mientras que la ofuscación del código permite retrasar los intentos de ingeniería inversa al hacer que el código sea más difícil de analizar, los actores maliciosos que analizan el código a fondo pueden, con el tiempo suficiente, entender el código y superar la ofuscación. En respuesta a una situación de este tipo, las organizaciones deben asegurarse de que emplean múltiples capas de protección en su paquete RASP.
Polimorfismo
Además de las comprobaciones dinámicas RASP, que bloquean los intentos de depuración, hooking, proxy y rooting, también deben existir protecciones estáticas, incluidas las técnicas de ofuscación mencionadas y más tácticas.
Una de esas tácticas es el polimorfismo de código, una técnica que consiste en cambiar activamente el código de una aplicación durante cada una de sus fases de compilación. El polimorfismo de código conduce a un resultado diferente en cada compilación, aunque el código fuente no haya cambiado.
Este tipo de protección dificulta a los atacantes el uso de la información obtenida a través de la experiencia, obligándoles a empezar desde cero en cada compilación. La combinación de múltiples capas de ofuscación de código y polimorfismo de código son algunos factores que proporcionan a las organizaciones una protección contra la ingeniería inversa mucho mayor.
En general, la ofuscación de código y el polimorfismo de código sirven como potentes herramientas que dificultan exponencialmente el proceso de ingeniería inversa a los actores maliciosos y les impiden obtener acceso no autorizado a datos sensibles o interrumpir el funcionamiento de la aplicación.
En consecuencia, la aplicación de estas técnicas permite a las empresas y organizaciones garantizar la seguridad de sus aplicaciones y protegerse contra ataques potencialmente devastadores.
Mediante este enfoque, el método de seguridad de aplicaciones multicapa que incluye medidas tanto estáticas como dinámicas, permite mejorar el alcance de la protección al contar con diferentes medidas de seguridad en diferentes capas que trabajan juntas para proteger contra los vectores de ataque en constante expansión.
Para obtener información sobre la pila tecnológica de inyección de código cero de Verimatrix y sus numerosas innovaciones en seguridad de aplicaciones, haga clic aquí.
Dominar el arte de la ofuscación de código y el polimorfismo
Escrito por
Dr. Klaus Schenk
El Dr. Klaus Schenk es vicepresidente senior de seguridad e investigación de amenazas de Verimatrix y dirige sus Laboratorios VMX.
Comparta esta información sobre ciberseguridad
Otros datos sobre ciberseguridad
Resumen de amenazas a la ciberseguridad nº 11: Coper, Octo, CriminalMW y más
3 Imperativos de seguridad para los fabricantes de aplicaciones para vehículos en 2024
La proliferación de herramientas frente a la ausencia total de herramientas de seguridad
Resumen de amenazas a la ciberseguridad nº 10: Joker, Samecoin, SpyNote y más