Análisis de privacidad ampliado, perfiles de Attack Surface y mejoras en la asignación del código fuente de GitHub
La actualización de mayo de 2025 de Ostorlab ofrece capacidades completas de análisis de privacidad, con 21 nuevas categorías de recopilación de datos y herramientas de verificación mejoradas. Esta versión introduce perfiles de escaneo de Attack Surface especializados para evaluaciones de seguridad optimizadas, añade la integración con el código fuente de GitHub para asignar las vulnerabilidades con precisión e implementa la limitación de QPS para controlar los escaneos. Entre otras mejoras se incluyen los controles de expresiones regulares de URL en los escaneos móviles, una integración con Jira simplificada y mayores capacidades de fingerprinting para una detección más precisa.
Nombres de informes PDF mejorados: se mejoró la forma en que se nombran las exportaciones en PDF, lo que facilita organizar e identificar los informes.
🎯 Superficie de ataque
Se introdujeron dos nuevos perfiles de escaneo para Attack Surface: para ofrecer un mejor control sobre la profundidad y el enfoque del escaneo:
Attack Surface KEV Scan: un escaneo dirigido y centrado en las vulnerabilidades explotadas conocidas (KEV), para identificar los problemas de seguridad más críticos y activamente explotados.
Attack Surface Exhaustive Scan: un escaneo completo para una cobertura exhaustiva de
la postura de seguridad externa de su organización.
Ahora deberá seleccionar un perfil de escaneo al crear un nuevo escaneo de Attack Surface
🔗 Integraciones
Se mejoró la integración con GitHub para mostrar las vulnerabilidades de su código como comentarios: con la integración de la Ostorlab Github App, cuando la plataforma encuentra problemas de seguridad, añade comentarios directamente en su pull request, en la ubicación exacta donde se detectan las vulnerabilidades, con un botón de un solo clic para aplicar las correcciones.
Esto ofrece a los desarrolladores contexto inmediato sobre las vulnerabilidades directamente en su base de código, lo que facilita
comprender y corregir los problemas de seguridad sin cambiar de herramienta.
🛡️ Escaneo y gestión de vulnerabilidades
Se implementó una opción para controlar la limitación de QPS (Queries Per Second, consultas por segundo) del tráfico de red saliente durante los escaneos
de vulnerabilidades.
Esta funcionalidad permite especificar límites de consultas por segundo para los escaneos de Web App, Web API, Network y Attack Surface.
Se añadieron expresiones regulares de Scope URLs en las reglas de monitorización: se añadió compatibilidad con la inclusión en lista de permitidos de dominios específicos en los escaneos
móviles mediante patrones de expresiones regulares. Esto limita las pruebas únicamente a las partes relevantes de su aplicación.
Crear regla:
Actualizar regla:
🎫 Corrección
Experiencia de integración con Jira simplificada: el proceso de creación de tickets de Jira incluye una mejora de la interfaz para que sea más intuitiva y
coherente.
🔒 Cumplimiento normativo y privacidad
Mejoras del análisis de privacidad
Nueva tabla de resumen del escaneo de privacidad: se añadió una tabla completa que muestra las prácticas de recopilación de datos de la aplicación,
incluidas:
Lo que se declara en la política de privacidad
Citas reales de la política como validación
Lo que detectaron nuestros escaneos en la aplicación
Evidencias cuando encontramos discrepancias
Esto facilita mucho detectar de un vistazo los problemas de cumplimiento en materia de privacidad.
Ampliación del análisis de la política de privacidad
Se mejoró el escaneo de privacidad con 21 nuevas categorías de recopilación de datos, lo que ofrece un análisis más completo de la política de
privacidad. Las categorías ahora incluyen:
Información personal sensible (EMAIL, PERSONAL_IDENTIFIERS)
Seguimiento de la ubicación (CURRENT_LOCATION, LOCATION_HISTORY)
Acceso a contenido multimedia (USER_PHOTOS_MEDIA)
Supervisión del comportamiento del usuario (SEARCH_QUERIES, APP_USAGE, BROWSING_ACTIVITY)
Esta ampliación permite identificar con mayor detalle los problemas de privacidad, mejora la verificación del cumplimiento normativo y le ayuda a
comprender mejor los posibles riesgos de privacidad en las aplicaciones.
🔍 Detección
Mejoras de fingerprinting
Se añadió fingerprinting de bibliotecas nativas: se mejoraron las capacidades de detección de tres bibliotecas críticas
que suelen incluirse en aplicaciones de mensajería centradas en la privacidad:
libsignal_jni: biblioteca criptográfica principal para la mensajería segura
libsqlcipher: biblioteca de cifrado de bases de datos que protege el almacenamiento local de mensajes
libringrtc: implementación de WebRTC para llamadas de voz y vídeo seguras
Se añadió fingerprinting: ahora detectamos mojoPortal, Craft CMS y FastCGI.
Seguridad de la autenticación biométrica
Se añadió la detección de autenticación biométrica insegura: nuestro nuevo escáner identifica las aplicaciones que usan huella dactilar o reconocimiento
facial sin un enlace criptográfico adecuado. Detecta cuándo la verificación biométrica no está vinculada de forma segura a
claves criptográficas, una vulnerabilidad que los atacantes pueden aprovechar para eludir los controles de seguridad tanto en Android como en iOS.
Ejemplo de código de autenticación biométrica insegura
A continuación se muestra un ejemplo de implementación insegura de la autenticación biométrica en la que se pasa un CryptoObject al cuadro de diálogo biométrico, pero en realidad no se utiliza para descifrar los datos del usuario:
// VULNERABLE IMPLEMENTATION: Biometric authentication with CryptoObject but without actually using itpublicclassMisusedCryptoObjectAuthenticator{privatestaticfinalStringENCRYPTED_DATA_KEY="encrypted_data";privateSharedPreferencespreferences;privateCiphercipher;privateSecretKeysecretKey;publicMisusedCryptoObjectAuthenticator(Contextcontext){this.preferences=context.getSharedPreferences("app_prefs",Context.MODE_PRIVATE);try{// Initialize crypto componentsKeyGeneratorkeyGenerator=KeyGenerator.getInstance("AES");keyGenerator.init(256);secretKey=keyGenerator.generateKey();cipher=Cipher.getInstance("AES/GCM/NoPadding");cipher.init(Cipher.ENCRYPT_MODE,secretKey);}catch(Exceptione){e.printStackTrace();}}publicvoidauthenticateUser(finalAuthenticationCallbackcallback){try{// We create a CryptoObject and pass it to the biometric promptBiometricPrompt.CryptoObjectcryptoObject=newBiometricPrompt.CryptoObject(cipher);BiometricPromptbiometricPrompt=newBiometricPrompt(activity,executor,newBiometricPrompt.AuthenticationCallback(){@OverridepublicvoidonAuthenticationSucceeded(BiometricPrompt.AuthenticationResultresult){// VULNERABILITY: We have the cryptoObject but don't use it!// Instead, we just set a flag or retrieve data directly// The CryptoObject from the result is ignoredBiometricPrompt.CryptoObjectcryptoResult=result.getCryptoObject();// Simply set authentication flag without using the CryptoObjectsetAuthenticated(true);callback.onSuccess();}@OverridepublicvoidonAuthenticationFailed(){callback.onFailure("Authentication failed");}});// We pass the cryptoObject to authenticatebiometricPrompt.authenticate(promptInfo,cryptoObject);}catch(Exceptione){callback.onFailure("Error: "+e.getMessage());}}privatevoidsetAuthenticated(booleanauthenticated){preferences.edit().putBoolean("is_authenticated",authenticated).apply();}// VULNERABILITY: This method retrieves sensitive data without requiring the// cryptoObject that was used during authenticationpublicStringgetSensitiveData(){// Simply checks a boolean flag instead of using crypto bindingif(preferences.getBoolean("is_authenticated",false)){// Get data without using the CryptoObject for decryptionStringencryptedData=preferences.getString(ENCRYPTED_DATA_KEY,null);// We manually decrypt using our stored secretKey instead of// using the key bound to biometric authenticationreturndecryptWithStoredKey(encryptedData);}returnnull;}privateStringdecryptWithStoredKey(StringencryptedData){// Decrypt using the stored key, not the one from biometric authenticationtry{// This uses the class-level secretKey, not anything from the biometric resultCipherdecryptCipher=Cipher.getInstance("AES/GCM/NoPadding");decryptCipher.init(Cipher.DECRYPT_MODE,secretKey);returnnewString(decryptCipher.doFinal(Base64.decode(encryptedData,Base64.DEFAULT)));}catch(Exceptione){returnnull;}}}
Explicación de la vulnerabilidad:
1. El código crea un CryptoObject y lo pasa al proceso de autenticación biométrica
2. Sin embargo, tras una autenticación correcta, el CryptoObject se ignora
3. En lugar de utilizar el CryptoObject para descifrar datos sensibles, la aplicación:
- Establece un simple indicador booleano
- Utiliza una clave almacenada aparte para el descifrado que no está vinculada a la verificación biométrica
4. Esto permite a los atacantes eludir la seguridad biométrica manipulando directamente el indicador almacenado o accediendo a la clave de descifrado
Seguridad de GraphQL
Se mejoraron los analizadores de GraphQL para que informen de una vulnerabilidad segura cuando no se detecta ninguna vulnerabilidad, lo que le da más
confianza en las evaluaciones de seguridad.
Threat Center
Hemos añadido compatibilidad con varios CVE:
CVE-2025-2825/CVE-2025-31161: Critical CrushFTP Authentication Bypass - Una vulnerabilidad grave (CVSS 9.8)
que afecta a las versiones 10.0.0-10.8.3 y 11.0.0-11.3.0 de CrushFTP y que permite eludir por completo la autenticación mediante la
manipulación de cabeceras y cookies de autenticación de estilo S3.
CVE-2025-22457: Ivanti Stack-Based Buffer Overflow - Vulnerabilidad crítica de ejecución remota de código que afecta a Ivanti
Connect Secure, Policy Secure y ZTA Gateways debido a una validación insuficiente de las cabeceras HTTP X-Forwarded-For.
CVE-2025-2636: InstaWP Connect Plugin LFI Vulnerability - Vulnerabilidad crítica de inclusión de archivos locales en el
popular plugin de WordPress InstaWP Connect, que afecta a más de 30,000 instalaciones activas.
CVE-2025-32432: Craft CMS Remote Code Execution - Vulnerabilidad crítica de RCE sin autenticación que afecta a varias
versiones de Craft CMS mediante una deserialización insegura en el proceso de transformación de recursos.
CVE-2024-12847: Enhanced Netgear Router Command Injection Detection - Hemos mejorado la detección mediante un payload de
echo dinámico con tokens aleatorios, lo que elimina los falsos positivos y mantiene una detección precisa de la vulnerabilidad.
CVE-2019-9874: Sitecore Anti-CSRF Deserialization Vulnerability - Vulnerabilidad crítica de RCE en Sitecore CMS
que permite a atacantes no autenticados ejecutar código arbitrario mediante una deserialización insegura.
CVE-2017-3066: Adobe ColdFusion RCE via Java Deserialization - Vulnerabilidad crítica que permite a atacantes
no autenticados ejecutar código arbitrario mediante el envío de objetos Java serializados especialmente diseñados.
CVE-2017-12637: SAP NetWeaver AS Java Directory Traversal - Vulnerabilidad de severidad alta que permite a atacantes
no autenticados acceder a archivos sensibles del servidor mediante la manipulación de rutas (path traversal).