.NET : Débuter avec ASM

Vous pouvez surveiller la sécurité de vos applications .NET exécutées dans Docker, Kubernetes, AWS ECS et AWS Fargate.

In general, setting up Application Security Management (ASM) involves:

  1. Identifying which services to enable ASM on.
  2. Updating to the latest Datadog library (the most recent APM tracing library).
  3. Enabling the library to collect the application security data from the services and send it to Datadog.
  4. Triggering security signals in your application and seeing how Datadog displays the resulting information.

Prerequisites

  • The Datadog Agent is installed and configured for your application’s operating system or container, cloud, or virtual environment.
  • Datadog APM is configured for your application or service, and traces are being received by Datadog.

Prise en main

  1. Mettez à jour votre bibliothèque Datadog .NET en installant au minimum la version 2.2.0 adaptée à l’architecture de votre système d’exploitation.

    Pour en savoir plus sur les langages et les versions du framework prises en charge par la bibliothèque, consultez Compatibilité.

  2. Activez la solution ASM en définissant la variable d’environnement DD_APPSEC_ENABLED sur true. Par exemple, si vous utilisez un système Windows auto-hébergé, exécutez le code PowerShell suivant au sein du script de démarrage de votre application :

    $target=[System.EnvironmentVariableTarget]::Process
    [System.Environment]::SetEnvironmentVariable("DD_APPSEC_ENABLED","true",$target)
    

    Ou utilisez l’une des méthodes suivantes, selon l’environnement depuis lequel votre application est exécutée :

    Dans une console Windows :

    rem Set environment variables
    SET CORECLR_ENABLE_PROFILING=1
    SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    SET DD_APPSEC_ENABLED=true
    
    rem Start application
    dotnet.exe example.dll
    

    Exécutez la commande PowerShell suivante pour configurer les variables d’environnement requises dans le registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment, puis redémarrez IIS.

    $target=[System.EnvironmentVariableTarget]::Machine
    [System.Environment]::SetEnvironmentVariable("DD_APPSEC_ENABLED","true",$target)
    net stop was /y
    net start w3svc
    

    Ou, pour les services IIS uniquement, sur WAS et W3SVC avec Powershell en tant qu’administrateur, exécutez :

    $appsecPart = "DD_APPSEC_ENABLED=true"
    [string[]] $defaultvariable = @("CORECLR_ENABLE_PROFILING=1", "CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}", $appsecPart)
    
    function Add-AppSec {
    
        param (
            $path
        )
        $v = (Get-ItemProperty -Path $path).Environment
        If ($v -eq $null) {
            Set-ItemProperty -Path $path -Name "Environment" -Value $defaultvariable
        }
        ElseIf (-not ($v -match $appsecPart)) {
            $v += " " + $appsecPart;
            Set-ItemProperty -Path $path -Name "Environment" -Value $v
        }
    }
    Add-AppSec -path "HKLM:SYSTEM\CurrentControlSet\Services\WAS\"
    Add-AppSec -path "HKLM:SYSTEM\CurrentControlSet\Services\W3SVC\"
    
    net stop was /y
    net start w3svc
    

    Ou, pour éviter d’avoir à modifier les clés de registre, modifiez les paramètres de l’application dans le fichier web.config de votre application :

    <configuration>
      <appSettings>
            <add key="DD_APPSEC_ENABLED" value="true"/>
      </appSettings>
    </configuration>
    

    Cette même méthode peut être utilisée au niveau des pools d’applications IIS, dans le fichier applicationHost.config, généralement situé dans C:\Windows\System32\inetsrv\config\ :

    <system.applicationHost>
    
        <applicationPools>
            <add name="DefaultAppPool">
                <environmentVariables>
                    <add name="DD_APPSEC_ENABLED" value="true" />
                </environmentVariables>
                (...)
    

    Ajoutez la ligne suivante à la configuration de votre application :

    DD_APPSEC_ENABLED=true
    

    Mettez à jour votre conteneur de configuration pour APM en ajoutant l’argument suivant dans votre commande docker run :

    docker run [...] -e DD_APPSEC_ENABLED=true [...] 
    

    Ajoutez la valeur de variable d’environnement suivante dans le Dockerfile de votre conteneur :

    ENV DD_APPSEC_ENABLED=true
    

    Mettez à jour le fichier de configuration de déploiement pour APM, et ajoutez la variable d’environnement ASM :

    spec:
      template:
        spec:
          containers:
            - name: <NOM_CONTENEUR>
              image: <IMAGE_CONTENEUR>/<TAG>
              env:
                - name: DD_APPSEC_ENABLED
                  value: "true"
    

    Mettez à jour le fichier JSON de votre définition de tâche ECS en ajoutant la section environment suivante :

    "environment": [
      ...,
      {
        "name": "DD_APPSEC_ENABLED",
        "value": "true"
      }
    ]
    

    Ajoutez la ligne suivante dans le Dockerfile de votre conteneur :

    ENV DD_APPSEC_ENABLED=true
    
  3. Redémarrez l’application en l’arrêtant totalement et en la relançant.

    The library collects security data from your application and sends it to the Agent, which sends it to Datadog, where out-of-the-box detection rules flag attacker techniques and potential misconfigurations so you can take steps to remediate.

  4. To see Application Security Management threat detection in action, send known attack patterns to your application. For example, trigger the Security Scanner Detected rule by running a file that contains the following curl script:

    for ((i=1;i<=200;i++)); 
    do
    # Target existing service’s routes
    curl https://your-application-url/existing-route -A dd-test-scanner-log;
    # Target non existing service’s routes
    curl https://your-application-url/non-existing-route -A dd-test-scanner-log;
    done

    Note: The dd-test-scanner-log value is supported in the most recent releases.

    A few minutes after you enable your application and exercise it, threat information appears in the Application Trace and Signals Explorer in Datadog.

Page des détails d'un signal de sécurité avec des tags, des métriques, des recommandations de mesures et les adresses IP de la personne malveillante associée à la menace