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 accepte uniquement les URL publiques et les adresses IP qui ne sont pas derrière 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 séparément 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 des analyses gérées sont disponibles automatiquement sur la page Failles de Security Command Center et 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, qui est 80 pour les connexions HTTP et 443 pour les connexions HTTPS. Si votre application utilise un port non 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 vous permet uniquement de surveiller la conformité contrôle les violations. Les mappages ne sont pas fournis pour être utilisés comme base ni en remplacement de l'audit, de la certification ou du rapport de conformité produits ou services conformément aux benchmarks ou normes du secteur ou réglementaires.

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 : 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 résultat, supprimez les contenus publics un accès non intentionnel au dépôt SVN.

Niveau de tarification: 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 le cache standard du navigateur d'un stockage sécurisé des mots de passe.

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, trouver, chiffrer le mot de passe transmis sur le réseau.

Niveau de tarification : 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 intersite ne valide qu'un suffixe de Origin l'en-tête de requête avant de le refléter dans Access-Control-Allow-Origin en-tête de réponse. 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 préfixe 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'Origin l'en-tête de requête avant de le refléter dans Access-Control-Allow-Origin en-tête de réponse. Pour résoudre ce problème, vérifiez que le domaine attendu correspond parfaitement la valeur d'en-tête Origin avant de la refléter dans le 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 : 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 résultat, défini correctement les en-têtes de sécurité HTTP.

Niveau de tarification: 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 résultat, définissez correctement les en-têtes de sécurité HTTP.

Niveau de tarification: 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 résultat, définissez correctement les en-têtes de sécurité.

Niveau de tarification : 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 résultat, assurez-vous toutes les ressources sont diffusées via HTTPS.

Niveau de tarification: 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 résultat, effectuez la mise à niveau les bibliothèques vers une version plus récente.

Niveau de tarification : 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: 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

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 : 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: 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 : 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. Cette faille peut entraîner une application Web pour divulguer un fichier sur l’hôte. 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. Les valeurs introduites dans ces prototypes sont universellement supposées pour se traduire par des scripts intersites ou des failles similaires côté client, ainsi que les bugs de logique.

Niveau de tarification: 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 des résultats, des éléments, et les sources de sécurité dépendent du niveau d'accès accordé. 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. Comme 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 pour 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 IAM (Identity and Access Management) disponible pour Web Security Scanner, consultez 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 ne s'est pas terminée dans les 20 jours, elle s'arrête automatiquement. et tous les résultats d'exploration et tous les résultats trouvés pendant l'analyse seront visibles 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. Toutefois, vous pouvez utiliser Cloud Load Balancing et un réseau sans serveur des groupes de points de terminaison 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 page 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, ainsi que les d'authentification pour s'assurer que les analyses sont correctement configurées et peuvent consigner dans 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