Présentation de Web Security Scanner

Web Security Scanner identifie les failles de sécurité dans vos applications Web App Engine, Google Kubernetes Engine (GKE) et Compute Engine. Ce système d'analyse explore votre application, tous les liens associés à vos URL de démarrage, puis essaie de tester un maximum d'entrées utilisateur et de gestionnaires d'événements. Web Security Scanner n'accepte que les URL publiques et les adresses IP qui ne sont pas protégées par un pare-feu.

Web Security Scanner est compatible avec l'environnement standard et les environnements flexibles App Engine, les instances Compute Engine et les ressources GKE.

Web Security Scanner est conçu pour compléter vos processus de conception et de développement sécurisés existants. Pour éviter toute distraction par de faux positifs, Web Security Scanner fait appel à des rapports et n'affiche aucune alerte de confiance faible. Cloud Security Scanner ne remplace pas un contrôle de sécurité manuel, et ne garantit pas l'absence de failles de sécurité dans votre application.

Types d'analyses

Web Security Scanner fournit une analyse des failles Web gérée et personnalisée pour les applications Web publiques App Engine, GKE et Compute Engine.

Analyses gérées

Les analyses gérées de Web Security Scanner sont configurées et gérées par Security Command Center. Elles s'exécutent automatiquement une fois par semaine pour détecter et analyser les points de terminaison Web publics. Ces analyses n'utilisent pas l'authentification et n'envoient que des requêtes GET. Elles n'envoient donc pas de formulaires sur des sites Web en ligne.

Les analyses gérées s'exécutent indépendamment des analyses personnalisées.

Si Security Command Center est activé au niveau de l'organisation, vous pouvez utiliser des analyses gérées pour gérer de manière centralisée la détection de failles des applications Web de base pour les projets de votre organisation, sans avoir à impliquer des équipes de projets individuelles. Lorsque des résultats sont détectés, vous pouvez collaborer avec ces équipes pour configurer des analyses personnalisées plus complètes.

Lorsque vous activez Web Security Scanner en tant que service, les résultats d'analyse gérée sont automatiquement disponibles sur la page Failles de Security Command Center et dans les rapports associés. Pour savoir comment activer les analyses gérées de Web Security Scanner, consultez la section Configurer les services Security Command Center.

Les analyses gérées ne sont compatibles qu'avec les applications qui utilisent le port par défaut, à savoir le port 80 pour les connexions HTTP et le port 443 pour les connexions HTTPS. Si votre application utilise un port autre que le port par défaut, effectuez plutôt une analyse personnalisée.

Analyses personnalisées

Les analyses personnalisées de Web Security Scanner fournissent des informations précises sur les résultats des failles des applications, telles que les bibliothèques obsolètes, les scripts intersites ou l'utilisation de contenus mixtes.

Vous définissez des analyses personnalisées au niveau du projet.

Les résultats de l'analyse personnalisée sont disponibles dans Security Command Center une fois que vous avez suivi le guide de configuration des analyses personnalisées de Web Security Scanner.

Analyser les résultats

Cette section décrit les types de résultats Web Security Scanner et les standards de conformité applicables.

Détecteurs et conformité

Web Security Scanner accepte les catégories du Top 10 de l'OWASP, un document qui classe les 10 risques de sécurité les plus critiques pour les applications Web identifiés par le projet OWASP (Open Web Application Security Project) et fournit des conseils de résolution pour chacun.

Le mappage de conformité est inclus pour référence et n'est pas fourni ni examiné par la Fondation OWASP. Elle est uniquement destinée à vous permettre de surveiller les cas de non-respect des contrôles de conformité. Les mises en correspondance ne sont pas fournies pour être utilisées comme base ou substitut de l'audit, du certificat ou du rapport de conformité de vos produits ou services par rapport à des benchmarks ou des normes industriels ou du secteur.

Pour en savoir plus sur la conformité, consultez la section Évaluer et signaler la conformité aux benchmarks de sécurité.

Types de résultats

Les analyses personnalisées et gérées de Web Security Scanner identifient les types de résultats suivants. Au niveau Standard, Web Security Scanner accepte les analyses personnalisées des applications déployées avec des URL et des adresses IP publiques qui ne sont pas protégées par un pare-feu.

Catégorie Description du résultat OWASP 2017 Top 10 OWASP 2021 Top 10

Accessible Git repository

Nom de la catégorie dans l'API : ACCESSIBLE_GIT_REPOSITORY

Un dépôt GIT est exposé publiquement. Pour résoudre ce problème, supprimez l'accès public involontaire au dépôt GIT.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A5 A01

Accessible SVN repository

Nom de la catégorie dans l'API : ACCESSIBLE_SVN_REPOSITORY

Un dépôt SVN est exposé publiquement. Pour résoudre ce problème, supprimez l'accès public involontaire au dépôt SVN.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A5 A01

Cacheable password input

Nom de la catégorie dans l'API : CACHEABLE_PASSWORD_INPUT

Les mots de passe saisis dans l'application Web peuvent être mis en cache dans un cache de navigateur standard au lieu d'un espace de stockage sécurisé.

Niveau de tarification: Premium

Corriger ce résultat

A3 A04

Clear text password

Nom de la catégorie dans l'API : CLEAR_TEXT_PASSWORD

Les mots de passe sont transmis en texte clair et peuvent être interceptés. Pour résoudre ce problème, chiffrez les mots de passe transmis sur le réseau.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A3 A02

Insecure allow origin ends with validation

Nom de la catégorie dans l'API : INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

Un point de terminaison HTTP ou HTTPS intersites ne valide qu'un suffixe de l'en-tête de requête Origin avant de le refléter dans l'en-tête de réponse Access-Control-Allow-Origin. Pour corriger ce résultat, vérifiez que le domaine racine attendu fait partie de la valeur d'en-tête Origin avant de le refléter dans l'en-tête de réponse Access-Control-Allow-Origin. Pour les caractères génériques de sous-domaine, ajoutez le point au domaine racine, par exemple .endsWith(".google.com").

Niveau de tarification: Premium

Corriger ce résultat

A5 A01

Insecure allow origin starts with validation

Nom de la catégorie dans l'API : INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

Un point de terminaison HTTP ou HTTPS intersites ne valide qu'un préfixe de l'en-tête de requête Origin avant de le refléter dans l'en-tête de réponse Access-Control-Allow-Origin. Pour corriger ce résultat, vérifiez que le domaine attendu correspond entièrement à la valeur de l'en-tête Origin avant de le refléter dans l'en-tête de réponse Access-Control-Allow-Origin (par exemple, .equals(".google.com")).

Niveau de tarification: Premium

Corriger ce résultat

A5 A01

Invalid content type

Nom de la catégorie dans l'API : INVALID_CONTENT_TYPE

Une des ressources chargées ne correspond pas à l'en-tête HTTP "Content-Type" de la réponse. Pour résoudre ce problème, définissez l'en-tête HTTP X-Content-Type-Options sur la valeur correcte.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A6 A05

Invalid header

Nom de la catégorie dans l'API : INVALID_HEADER

Un en-tête de sécurité contient une erreur de syntaxe et est ignoré par les navigateurs. Pour résoudre ce problème, définissez correctement les en-têtes de sécurité HTTP.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A6 A05

Mismatching security header values

Nom de la catégorie dans l'API : MISMATCHING_SECURITY_HEADER_VALUES

Un en-tête de sécurité contient des valeurs en double incompatibles et non concordantes, ce qui entraîne un comportement indéfini. Pour résoudre ce problème, définissez correctement les en-têtes de sécurité HTTP.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A6 A05

Misspelled security header name

Nom de la catégorie dans l'API : MISSPELLED_SECURITY_HEADER_NAME

Un en-tête de sécurité est mal orthographié et ignoré. Pour résoudre ce problème, définissez correctement les en-têtes de sécurité HTTP.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A6 A05

Mixed content

Nom de la catégorie dans l'API : MIXED_CONTENT

Les ressources sont diffusées via HTTP sur une page HTTPS. Pour résoudre ce problème, assurez-vous que toutes les ressources sont diffusées via HTTPS.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A6 A05

Outdated library

Nom de la catégorie dans l'API : OUTDATED_LIBRARY

Une bibliothèque contenant des failles connues a été détectée. Pour résoudre ce problème, mettez à niveau les bibliothèques vers une version plus récente.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A9 A06

Server side request forgery

Nom de la catégorie dans l'API : SERVER_SIDE_REQUEST_FORGERY

Une faille SSRF (Server Side Request Forgery, falsification de requête côté serveur) a été détectée. Pour résoudre ce résultat, utilisez une liste d'autorisation pour limiter les domaines et les adresses IP auxquels l'application Web peut envoyer des requêtes.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

Non applicable A10

Session ID leak

Nom de la catégorie dans l'API : SESSION_ID_LEAK

Lors d'une requête interdomaine, l'application Web inclut l'identifiant de session de l'utilisateur dans son en-tête de requête Referer. Cette faille donne au domaine destinataire la possibilité d'accéder à l'identifiant de session, qui peut servir à emprunter l'identité de l'utilisateur ou à l'identifier de manière unique.

Niveau de tarification: Premium

Corriger ce résultat

A2 A07

SQL injection

Nom de la catégorie dans l'API : SQL_INJECTION

Une faille potentielle d'injection SQL a été détectée. Pour résoudre ce résultat, utilisez des requêtes paramétrées afin d'empêcher les entrées utilisateur d'affecter la structure de la requête SQL.

Niveau de tarification: Premium

Corriger ce résultat

A1 A03

Struts insecure deserialization

Nom de la catégorie dans l'API : STRUTS_INSECURE_DESERIALIZATION

L'utilisation d'une version vulnérable d'Apache Struts a été détectée. Pour résoudre ce résultat, mettez à niveau Apache Struts vers la dernière version.

Niveau de tarification: Premium

Corriger ce résultat

A8 A08

XSS

Nom de la catégorie dans l'API : XSS

Un champ dans cette application Web est vulnérable aux attaques de script intersites (XSS). Pour résoudre ce problème, validez les données fournies par l'utilisateur non approuvées et faites-les échapper.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A7 A03

XSS angular callback

Nom de la catégorie dans l'API : XSS_ANGULAR_CALLBACK

Une chaîne fournie par l'utilisateur n'est pas échappée et AngularJS peut l'interpoler. Pour résoudre ce problème, validez les données fournies par l'utilisateur non approuvées qui sont gérées par le framework Angular et faites-les échapper.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A7 A03

XSS error

Nom de la catégorie dans l'API : XSS_ERROR

Un champ dans cette application Web est vulnérable aux attaques de script intersites. Pour résoudre ce problème, validez les données fournies par l'utilisateur non approuvées et faites-les échapper.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A7 A03

XXE reflected file leakage

Nom de la catégorie dans l'API : XXE_REFLECTED_FILE_LEAKAGE

Une faille XML External Entity (XXE) a été détectée. Elle peut entraîner la fuite d'un fichier sur l'hôte par l'application Web. Pour corriger ce résultat, configurez vos analyseurs XML de manière à interdire les entités externes.

Niveau de tarification: Premium

Corriger ce résultat

A4 A05

Prototype pollution

Nom de la catégorie dans l'API : PROTOTYPE_POLLUTION

L'application est vulnérable à la pollution des prototypes. Cette faille survient lorsque des valeurs qu'un pirate informatique peut contrôler peuvent être attribuées aux propriétés de l'objet Object.prototype. Il est universellement admis que des valeurs introduites dans ces prototypes peuvent se traduire en scripts intersites ou en failles similaires côté client, ainsi qu'en bugs logiques.

Niveau de tarification: Premium ou Standard

Corriger ce résultat

A1 A03

Mises en garde sur l'utilisation

Les rôles IAM pour Security Command Center peuvent être attribués au niveau de l'organisation, du dossier ou du projet. Votre capacité à afficher, modifier, créer ou mettre à jour les résultats, les éléments et les sources de sécurité dépend du niveau pour lequel vous disposez d'un accès. Pour en savoir plus sur les rôles Security Command Center, consultez la page Contrôle des accès.

Voici d'autres points importants à considérer lorsque vous utilisez Web Security Scanner :

  • Étant donné que Web Security Scanner fait l'objet d'améliorations continues, une analyse ultérieure peut identifier des problèmes que l'analyse actuelle n'a pas signalés.
  • Certaines fonctionnalités ou sections de votre application peuvent ne pas être testées.
  • Web Security Scanner tente d'activer chaque commande et chaque entrée qu'il détecte.
  • Si vous exposez des actions de changement d'état pour lesquelles votre compte de test dispose d'une autorisation, il est probable que Web Security Scanner les active. Cela peut entraîner des résultats indésirables.
  • Web Security Scanner est limité à 15 analyses par projet. Étant donné que les analyses sont exécutées simultanément, les utilisateurs qui atteignent cette limite sont invités à ajouter plusieurs URL de démarrage par analyse, ou à ajouter des analyses à différents projets qui n'ont pas encore atteint la limite.

Qui peut exécuter une analyse de sécurité ?

Pour en savoir plus sur les rôles de Identity and Access Management (IAM) disponibles pour Web Security Scanner, consultez la page Contrôle des accès.

Combien de temps faut-il pour exécuter une analyse de sécurité ?

L'analyse de sécurité ne s'exécute pas immédiatement. Elle est d'abord placée en file d'attente puis exécutée ultérieurement, éventuellement après plusieurs heures, en fonction de la charge du système. Une fois l'analyse commencée, le temps d'exécution dépend de la taille de votre application. L'analyse d'une application volumineuse comportant de nombreuses URL peut prendre plusieurs heures, voire plusieurs jours. Si une analyse n'est pas terminée sous 20 jours, elle est automatiquement arrêtée, et tous les résultats d'exploration et les résultats trouvés lors de l'analyse sont visibles en tant que résultat de l'analyse.

Restrictions applicables aux cibles

Web Security Scanner applique des filtres qui limitent les cibles d'analyse à l'instance App Engine spécifique pour laquelle l'analyse est créée. La saisie d'URL pour un autre projet App Engine ou un domaine externe entraînera un message d'erreur.

Les analyses pour Compute Engine et GKE sont limitées aux domaines qui correspondent à des adresses IP externes statiques réservées pour le même projet et aux adresses IP externes statiques appartenant au même projet. Pour savoir comment réserver des adresses IP pour des projets, consultez les liens suivants :

App Engine ne permet pas de mapper des adresses IP statiques à une application. Vous pouvez toutefois utiliser Cloud Load Balancing et les groupes de points de terminaison du réseau sans serveur pour réserver une adresse IP statique pour votre équilibreur de charge, qui dirige ensuite le trafic vers votre application. Pour en savoir plus sur les tarifs, consultez la section Tarifs des adresses IP externes.

Dans votre projet, Web Security Scanner tente automatiquement d'éviter les URL de déconnexion et d'autres emplacements génériques susceptibles de nuire à une analyse. Toutefois, pour plus de sécurité, vous pouvez exclure des URL manuellement à l'aide des paramètres d'analyse.

Validation

Les configurations d'analyse sont validées lors de leur création et avant chaque analyse. Web Security Scanner vérifie les paramètres de Security Command Center et les identifiants d'authentification de votre application pour s'assurer que les analyses sont correctement configurées et peuvent se connecter à votre application. Les paramètres de configuration, y compris la vitesse d'analyse maximale, sont également vérifiés pour s'assurer qu'ils sont compris dans les plages compatibles.

Vous devez résoudre les erreurs avant de créer ou de mettre à jour une analyse. Les applications modifiées après la configuration initiale peuvent générer des erreurs lors des analyses. Par exemple, si un domaine ne pointe plus vers une adresse IP appartenant au projet, la ressource n'est pas analysée et une erreur est signalée sur la page de configuration de l'analyse.

Bonnes pratiques

Étant donné que Web Security Scanner remplit les champs, appuie sur les boutons, clique sur les liens et effectue d'autres actions utilisateur, vous devez l'utiliser avec prudence, en particulier si vous analysez des ressources de production. Web Security Scanner peut potentiellement activer des fonctionnalités qui modifient l'état de vos données ou de votre système, et entraîner des résultats indésirables.

Exemple :

  • Dans une application de blog qui autorise les commentaires publics, Web Security Scanner peut publier des chaînes de test sous forme de commentaires sur tous les articles de votre blog.
  • Web Security Scanner peut générer un grand nombre d'e-mails de test sur une page d'inscription par e-mail.

Voici quelques techniques que vous pouvez utiliser, séparément ou de manière combinée, pour éviter des résultats indésirables :

  1. Exécuter les analyses dans un environnement de test. Configurez un environnement de test en créant un projet App Engine distinct et en y chargeant votre application et vos données. Si vous utilisez Google Cloud CLI, vous pouvez spécifier le projet cible en tant qu'option de ligne de commande lors de l'importation de votre application.
  2. Utiliser un compte de test. Créez un compte utilisateur n'ayant pas accès à des données sensibles ou à des opérations dangereuses et utilisez-le lors de l'analyse de votre application. De nombreuses applications présentent un workflow spécial lors de la première connexion d'un utilisateur, par exemple, accepter des conditions ou créer un profil. En raison des différences de workflow, il est possible qu'un compte de test pour un premier utilisateur génère des résultats d'analyse différents de ceux d'un compte utilisateur établi. Il est préférable de procéder à l'analyse avec un compte dont l'état de l'utilisateur est normal une fois le workflow initial terminé.
  3. Bloquez les éléments d'interface utilisateur individuels que vous ne souhaitez pas activer en appliquant la classe CSS inq-no-click. Les gestionnaires d'événements associés à cet élément ne sont pas activés lors de l'exploration et des tests, qu'ils soient intégrés à JavaScript, rattachés à l'aide de addEventListener ou en définissant le gestionnaire d'événements approprié.
  4. Utiliser les données de sauvegarde. Pensez à sauvegarder vos données avant de procéder à l'analyse.
  5. Exclure des URL. Vous pouvez spécifier des formats d'URL qui ne sont ni explorés, ni testés. Pour en savoir plus sur la syntaxe, consultez la page Exclure des URL.

Avant de procéder à l'analyse, effectuez un audit minutieux de votre application afin de détecter tout élément susceptible d'affecter les données, les utilisateurs ou les systèmes ne faisant pas partie du champ d'application de l'analyse.

Étape suivante