Fichier de configuration IAST

Configurez un fichier JSON pour remplacer les paramètres IAST par défaut et ne signaler que les vulnérabilités que vous souhaitez connaître.

Structure

Le fichier de configuration est user-config.json et peut être déployé avant le démarrage de l'agent ou pendant l'exécution. Les modifications peuvent prendre quelques secondes pour prendre effet. Lorsqu'un fichier est ajouté, toute version précédente est désactivée. Si le fichier est supprimé, IAST revient à sa configuration par défaut.

Exemple de fichier :
{   
  "logging": {
     "logLevel": "ERROR",
     "stdoutLogLevel": "DEBUG",
     "maxSizeLogFileMB": 100
  },
   "monitoredApps": [ 
    "app1", "app2"
  ],
  "asoc": {
    "reportToAsoc": true,
    "asocPollingIntervalInSec": 10
  },
  "memoryThreshold": 0.85, 
  "ignoredMethods": [ 
    "DriverManager.getConnection" 
  ], 
  "ignoredNonSecureCookies": [ 
    "myCookieName" 
  ], 
  "ignoredNonHttpOnlyCookies": [ 
    "anotherCookieName" 
  ], 
  "securityRules": { 
    "CheckCsrf": false, 
    "CheckServerHeader": false, 
    "CheckXPoweredBy": false, 
    "CheckXAspNetVersion": false 
  }, 
  "safeHeaders": ["MySafeHeader", "MyOtherSafeHeader"],
  "safeCookies": ["MySafeCookie", "MyOtherSafeCookie"],
  "hidePasswords": true

  "hooks": [ 
    { 
      "targets": [ 
        "com.ibm.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeHtml" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": " sanitizer", 
        "from": "return", 
"vulnerability": "CrossSiteScripting.Reflected" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ] 
} 

Deployment

Déployez l'agent IAST via l'API REST ASoC ou à partir d'un fichier local. Dans les deux cas, vous pouvez lancer la mise à jour pendant la surveillance active d'IAST et la mise à jour prendra effet dans un délai de quelques secondes.

Interface de programme d'application REST

  1. Envoyez une requête FileUpload. La réponse inclut FileId.
  2. Mettez à jour votre agent IAST avec le FileId que vous avez reçu.

Fichier local

Déployez le fichier de configuration en le copiant dans un répertoire sur le serveur. L'emplacement de déploiement correspond généralement au dossier temporaire du serveur. last imprime l'emplacement sur stout.

Exemple :

Options

Consignation

Les options de journalisation suivantes peuvent être contrôlées via le fichier de configuration.
Zone Valeurs Description
logLevel NONE, ERROR, WARNING, INFO, DEBUG, TRACE

Par défaut : Débogage

Le niveau de journalisation du fichier journal IAST.
Remarque : La définition du niveau de journal sur TRACE peut affecter les performances de l'agent IAST.
stdOutLogLevel ONE, ERROR, WARNING, INFO, DEBUG, TRACE

Par défaut : INFORMATION

Niveau de journalisation des événements IAST vers stdout.
Remarque : Si vous affectez une valeur autre que INFO au niveau de journal, cela a un effet négatif sur les performances de l'agent IAST.
maxSizeLogFileMB éntier

Par défaut : 20

Pour éviter les fichiers de grande taille, lorsque le fichier journal IAST atteint un maximum prédéfini (en Mo), il est compressé et les nouveaux journaux sont enregistrés dans un nouveau fichier. Utilisez ce champ pour définir la taille de fichier maximale.

Communication ASoC

Ces champs contrôlent la communication avec ASoC.
Zone Valeurs Description
reportToAsoc TRUE, FALSE

Par défaut : TRUE

Activez ou désactivez la génération de rapports sur ASoC.
asocPollingIntervalInSec éntier

Valeur par défaut : 10

Définissez la fréquence (en secondes) à laquelle IAST rapporte les problèmes détectés à ASoC.
Remarque : La réduction de l'intervalle en dessous de 10s peut créer une surcharge importante sur les communications réseau avec ASoC. L'augmentation de l'intervalle nécessite une utilisation plus importante de la mémoire et peut entraîner une perte de données si l'agent IAST est arrêté avant l'envoi des données les plus récentes à ASoC.

Générales

Zone Valeurs Description
monitoredApp "monitoredApps": [ "app1", "app2"] limitera la surveillance à ces applications uniquement. Nomme les applications Web s'exécutant sur le serveur qui doivent être surveillées par IAST. Les autres seront ignorées.

Si ce paramètre n'est pas défini, toutes les applications du serveur sont surveillées.

Le nom de l'application est généralement dérivé du nom de fichier WAR, et donc demo.war est appelé demo. Pour plus d'informations et découvrir les exceptions, voir Détecter le nom de l'application surveillée.

memoryThreshold Toute valeur entre 0,5 et 1,0

Par défaut : 0,95

Si l'utilisation de la mémoire JVM du client est supérieure à ce seuil, IAST se désactive automatiquement pour empêcher OutOfMemoryError. Si l'utilisation de la mémoire est inférieure à ce seuil, IAST se réactive automatiquement.
hidePasswords Valeur booléenne. Par défaut : Faux Lorsqu'ils sont définis sur True, les mots de passe ne s'affichent pas dans l'interface utilisateur ou le rapport, mais sont remplacés par la chaîne **CONFIDENTIAL**.

Filtrage

Filtrer les exploitations par espace de noms
Zone Valeurs Description
ignoredMethods tableau de chaînes

Par défaut : Aucun(e)

Filtrez les problèmes d'exploitation (Cryptography.PoorEnpy, Cryptography.InsecureAlgorithm, etc.) en fonction de l'espace de noms.
Remarque : Cela exclut tous les problèmes de l'espace de noms.
Exemple :
Pour filtrer ce problème et tous les problèmes de com.hcl.appscan.systemtests.SystemTests, ajoutez :
"ignoredMethods": ["com.hcl.appscan.systemtests.SystemTests"]
Ignorer les rapports sur les cookies non sécurisés
Zone Valeurs Description
ignoredNonSecureCookies, ignoredNonHttpOnlyCookies tableau de chaînes

Par défaut : Aucun(e)

IAST signale lorsque l'attribut secure n'est pas défini ou que l'attribut http-only d'un cookie est réglé. Pour filtrer un cookie spécifique, ajoutez le nom du cookie au fichier de configuration.
Exemple :Pour filtrer ce problème, ajoutez :
"ignoredNonSecureCookies": ["myCookie"]

Désactiver les règles de sécurité

Exemple :
"securityRules": { 
    "CheckCsrf": false, 
    "CheckServerHeader": false, 
    "CheckXPoweredBy": false, 
    "CheckXAspNetVersion": false 
  } 
} 

Toutes les règles de sécurité sont activées par défaut. Grâce au fichier de configuration, vous pouvez désactiver certains types de rapport. Spécifiez uniquement les champs que vous souhaitez désactiver. Tous les autres champs resteront activés.

Par exemple, “CheckCsrf” : false désactive la génération de rapports pour tous les problèmes de ce type.
Désactiver l'injection par nom d'en-tête ou de cookie
Zone Valeurs Description
safeHeaders, safeCookies tableau de chaînes

Par défaut : Aucun(e)

Déclarez une valeur d'en-tête ou de cookie comme sûr via son nom. Ainsi, IAST cessera de suivre les entrées provenant de cet en-tête ou de ce cookie, de sorte que toute injection provenant de cette valeur ne sera pas signalée.
Conseil : Les noms d'en-tête HTTP sont sensibles à la casse.
Exemple :
La source du problème d'attaque par script intersite est un en-tête appelé input2. Pour filtrer tous les problèmes découlant de cette entrée, ajoutez :
"safeHeaders": ["input2"]

Crochets

Dans certains cas, il peut être utile d'ajouter des crochets à IAST pour ajouter le comportement de l'application en cours de test. Par exemple, pour une méthode de sécurisation propriétaire que IAST ne reconnaît pas, indiquez à IAST de nettoyer chaque chaîne qui entre dans cette méthode.
Remarque : IAST ne sait pas ce que fait réellement la méthode et dès lors, il incombe à l'utilisateur de vérifier que la sécurisation est correcte et suffisante pour ses exigences de sécurité.

Exemple 1 : Sécurisation contre une vulnérabilité spécifique

La configuration suivante définit la méthode myEscapeHtml en classe com.myApp.common.MyEscapeUtils à des fins de sécurisation contre l'attaque par script intersite, et la valeur de retour est nettoyée. Elle indique toujours si la valeur de retour se termine dans un collecteur SQL. par exemple,
"hooks": [ 
    { 
      "targets": [ 
        "com.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeHtml" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": "sanitizer", 
        "from": "return", 
"vulnerability": "CrossSiteScripting.Reflected" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ] 

Exemple 2 : Sécurisation contre toutes les vulnérabilités

La configuration suivante définit la méthode myEscapeAll en classe com.myApp.common.MyEscapeUtils à des fins de sécurisation pour tous les types de vulnérabilités, et la valeur de retour est nettoyée.
"hooks": [ 
    { 
      "targets": [ 
        "com.myApp.common.MyEscapeUtils" 
      ], 
      "methods": [ 
        "myEscapeAll" 
      ], 
      "parameters": [ 
        ["java.lang.String"] 
      ], 
      "rules": [ 
      { 
        "type": " sanitizeAll", 
        "from": "return" 
      } 
    ], 
      "requiresSuperTypes": false 
    } 
  ]