Neutron, notre moteur d’IA, a obtenu un score de 97,1 % sur le benchmark CyberGym de l’UC Berkeley. En savoir plus

Produit

Produit

Analyse de confidentialité élargie, profilage de la surface d'attaque et améliorations du mappage des sources GitHub

La mise à jour de mai 2025 d'Ostorlab apporte des capacités complètes d'analyse de la confidentialité, avec 21 nouvelles catégories de collecte de données et des outils de vérification améliorés. Cette version introduit des profils de scan Attack Surface spécialisés pour des évaluations de sécurité optimisées, ajoute l'intégration du code source GitHub pour un mappage précis des vulnérabilités et met en place une limitation du débit en QPS pour des scans maîtrisés. Parmi les autres améliorations : des contrôles par expression régulière des URL pour les scans mobiles, une intégration Jira simplifiée et des capacités d'empreinte étendues pour une détection plus précise.

📈 Reporting & Export Enhancements

  • Amélioration du nommage des rapports PDF : le nom des exports PDF a été amélioré, ce qui facilite l'organisation et l'identification des rapports.
    Nommage des exports PDF

🎯 Attack Surface

  • Introduction de deux nouveaux profils de scan pour les scans Attack Surface : pour mieux contrôler la profondeur et l'objectif du scan :
    • Attack Surface KEV Scan : un scan ciblé sur les Known Exploited Vulnerabilities (KEV), pour identifier les problèmes de sécurité les plus critiques et activement exploités.
    • Attack Surface Exhaustive Scan : un scan complet pour une couverture approfondie de la posture de sécurité externe de votre organisation. Vous devrez désormais sélectionner un profil de scan lors de la création d'un nouveau scan Attack Surface
      Profils de scan Attack Surface

🔗 Integrations

  • Amélioration de l'intégration GitHub pour afficher les vulnérabilités de votre code sous forme de commentaires : avec l'intégration Ostorlab Github App, lorsque la plateforme trouve des problèmes de sécurité, elle ajoute des commentaires directement dans votre pull request, à l'emplacement exact où les vulnérabilités sont détectées, avec un bouton en un clic pour appliquer les correctifs. Les développeurs obtiennent ainsi un contexte immédiat sur les vulnérabilités, directement dans leur base de code, ce qui facilite la compréhension et la correction des problèmes de sécurité sans passer d'un outil à l'autre.

🛡️ Scanning & Vulnerability Management

  • Ajout d'une option pour contrôler la limitation du débit en QPS (Queries Per Second) du trafic réseau sortant pendant les scans de vulnérabilités. Cette fonctionnalité permet de définir des limites de requêtes par seconde pour les scans Web App, Web API, Network et Attack Surface.
  • Ajout d'expressions régulières d'URL de périmètre dans les règles de monitoring : ajout de la prise en charge de la liste blanche de domaines précis dans les scans mobiles à l'aide d'expressions régulières. Les tests se limitent ainsi aux seules parties pertinentes de votre application. Create Rule :
    Android Create Rule
    Update Rule :
    Android Edit Rule

🎫 Remediation

  • Expérience d'intégration Jira simplifiée : le processus de création de tickets Jira bénéficie d'améliorations de l'interface, pour une interface plus intuitive et plus cohérente.
    Interface de l'intégration Jira

🔒 Compliance & Privacy

Privacy Analysis Enhancements

  • Nouveau tableau de synthèse des scans de confidentialité : ajout d'un tableau complet qui présente les pratiques de collecte de données de l'application, notamment :
    • Ce qui est déclaré dans la politique de confidentialité
    • Les citations réelles de la politique à titre de validation
    • Ce que nos scans ont détecté dans l'application
    • Les preuves lorsque nous trouvons des écarts

Il devient ainsi beaucoup plus facile de repérer d'un coup d'œil les problèmes de conformité en matière de confidentialité.

Tableau d'analyse de la confidentialité

Privacy Policy Analysis Expansion

  • Amélioration du scan de confidentialité avec 21 nouvelles catégories de collecte de données, pour une analyse plus complète de la politique de confidentialité. Les catégories incluent désormais :
    • Informations personnelles sensibles (EMAIL, PERSONAL_IDENTIFIERS)
    • Données financières (PAYMENT_FINANCIAL)
    • Attributs sensibles (BIOMETRIC_DATA, GENDER_IDENTITY, RELIGIOUS_BELIEFS, POLITICAL_AFFILIATIONS, PHILOSOPHICAL_BELIEFS, CRIMINAL_RECORD)
    • Suivi de la localisation (CURRENT_LOCATION, LOCATION_HISTORY)
    • Accès aux médias (USER_PHOTOS_MEDIA)
    • Surveillance du comportement des utilisateurs (SEARCH_QUERIES, APP_USAGE, BROWSING_ACTIVITY)

Cette extension permet d'identifier plus en profondeur les problèmes de confidentialité, améliore la vérification de la conformité et vous aide à mieux comprendre les risques potentiels pour la vie privée dans les applications.

🔍 Detection

Fingerprinting Enhancements

  • Ajout d'empreintes pour les bibliothèques natives : capacités de détection améliorées pour trois bibliothèques critiques couramment intégrées dans les applications de messagerie axées sur la confidentialité :

    • libsignal_jni : bibliothèque cryptographique centrale pour la messagerie sécurisée
    • libsqlcipher : bibliothèque de chiffrement de base de données qui protège le stockage local des messages
    • libringrtc : implémentation WebRTC pour les appels vocaux et vidéo sécurisés
  • Ajout d'empreintes : nous détectons désormais mojoPortal, Craft CMS et FastCGI.

Biometric Authentication Security
  • Ajout de la détection de l'authentification biométrique non sécurisée : notre nouveau scanner identifie les applications qui utilisent la reconnaissance d'empreinte digitale ou faciale sans liaison cryptographique appropriée. Il détecte les cas où la vérification biométrique n'est pas liée de façon sécurisée à des clés cryptographiques, une vulnérabilité que les attaquants peuvent exploiter pour contourner les contrôles de sécurité sur Android comme sur iOS.

Code Example of Insecure Biometric Authentication

Voici un exemple d'implémentation non sécurisée de l'authentification biométrique, où un CryptoObject est transmis à l'invite biométrique mais n'est pas réellement utilisé pour déchiffrer les données de l'utilisateur :

// VULNERABLE IMPLEMENTATION: Biometric authentication with CryptoObject but without actually using it

public class MisusedCryptoObjectAuthenticator {
    private static final String ENCRYPTED_DATA_KEY = "encrypted_data";
    private SharedPreferences preferences;
    private Cipher cipher;
    private SecretKey secretKey;

    public MisusedCryptoObjectAuthenticator(Context context) {
        this.preferences = context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE);
        try {
            // Initialize crypto components
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256);
            secretKey = keyGenerator.generateKey();
            cipher = Cipher.getInstance("AES/GCM/NoPadding");
            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void authenticateUser(final AuthenticationCallback callback) {
        try {
            // We create a CryptoObject and pass it to the biometric prompt
            BiometricPrompt.CryptoObject cryptoObject = new BiometricPrompt.CryptoObject(cipher);

            BiometricPrompt biometricPrompt = new BiometricPrompt(activity,
                    executor,
                    new BiometricPrompt.AuthenticationCallback() {
                        @Override
                        public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
                            // 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 ignored
                            BiometricPrompt.CryptoObject cryptoResult = result.getCryptoObject();

                            // Simply set authentication flag without using the CryptoObject
                            setAuthenticated(true);
                            callback.onSuccess();
                        }

                        @Override
                        public void onAuthenticationFailed() {
                            callback.onFailure("Authentication failed");
                        }
                    });

            // We pass the cryptoObject to authenticate
            biometricPrompt.authenticate(promptInfo, cryptoObject);

        } catch (Exception e) {
            callback.onFailure("Error: " + e.getMessage());
        }
    }

    private void setAuthenticated(boolean authenticated) {
        preferences.edit().putBoolean("is_authenticated", authenticated).apply();
    }

    // VULNERABILITY: This method retrieves sensitive data without requiring the
    // cryptoObject that was used during authentication
    public String getSensitiveData() {
        // Simply checks a boolean flag instead of using crypto binding
        if (preferences.getBoolean("is_authenticated", false)) {
            // Get data without using the CryptoObject for decryption
            String encryptedData = preferences.getString(ENCRYPTED_DATA_KEY, null);
            // We manually decrypt using our stored secretKey instead of
            // using the key bound to biometric authentication
            return decryptWithStoredKey(encryptedData);
        }
        return null;
    }

    private String decryptWithStoredKey(String encryptedData) {
        // Decrypt using the stored key, not the one from biometric authentication
        try {
            // This uses the class-level secretKey, not anything from the biometric result
            Cipher decryptCipher = Cipher.getInstance("AES/GCM/NoPadding");
            decryptCipher.init(Cipher.DECRYPT_MODE, secretKey);
            return new String(decryptCipher.doFinal(Base64.decode(encryptedData, Base64.DEFAULT)));
        } catch (Exception e) {
            return null;
        }
    }
}

Explication de la vulnérabilité : 1. Le code crée un CryptoObject et le transmet au processus d'authentification biométrique 2. Cependant, après une authentification réussie, le CryptoObject est ignoré 3. Au lieu d'utiliser le CryptoObject pour déchiffrer les données sensibles, l'application : - Définit un simple indicateur booléen - Utilise une clé stockée séparément pour le déchiffrement, qui n'est pas liée à la vérification biométrique 4. Cela permet à des attaquants de contourner la sécurité biométrique en manipulant directement l'indicateur stocké ou en accédant à la clé de déchiffrement

GraphQL Security

  • Amélioration des analyseurs GraphQL pour signaler une vulnérabilité sécurisée lorsqu'aucune vulnérabilité n'est détectée, ce qui vous donne plus de confiance dans les évaluations de sécurité.

Threat Center

Nous avons ajouté la prise en charge de plusieurs CVE :

  • CVE-2025-2825/CVE-2025-31161 : Critical CrushFTP Authentication Bypass - Une vulnérabilité grave (CVSS 9.8) affectant les versions 10.0.0-10.8.3 et 11.0.0-11.3.0 de CrushFTP, qui permet un contournement complet de l'authentification par la manipulation des en-têtes et des cookies d'authentification de style S3.

  • CVE-2025-22457 : Ivanti Stack-Based Buffer Overflow - Vulnérabilité critique d'exécution de code à distance affectant Ivanti Connect Secure, Policy Secure et les passerelles ZTA, en raison d'une validation insuffisante des en-têtes HTTP X-Forwarded-For.

  • CVE-2025-2636 : InstaWP Connect Plugin LFI Vulnerability - Vulnérabilité critique d'inclusion de fichiers locaux dans le plugin WordPress populaire InstaWP Connect, qui affecte plus de 30 000 installations actives.

  • CVE-2025-32432 : Craft CMS Remote Code Execution - Vulnérabilité critique d'exécution de code à distance non authentifiée affectant plusieurs versions de Craft CMS, via une désérialisation non sécurisée dans le processus de transformation des assets.

  • CVE-2024-12847 : Enhanced Netgear Router Command Injection Detection - Nous avons amélioré la détection grâce à un payload echo dynamique avec des jetons aléatoires, ce qui élimine les faux positifs tout en conservant une détection précise de la vulnérabilité.

  • CVE-2019-9874 : Sitecore Anti-CSRF Deserialization Vulnerability - Vulnérabilité critique d'exécution de code à distance dans Sitecore CMS qui permet à des attaquants non authentifiés d'exécuter du code arbitraire via une désérialisation non sécurisée.

  • CVE-2017-3066 : Adobe ColdFusion RCE via Java Deserialization - Vulnérabilité critique permettant à des attaquants non authentifiés d'exécuter du code arbitraire en envoyant des objets Java sérialisés spécialement conçus.

  • CVE-2017-12637 : SAP NetWeaver AS Java Directory Traversal - Vulnérabilité de sévérité élevée permettant à des attaquants non authentifiés d'accéder à des fichiers sensibles du serveur par manipulation de chemins (path traversal).