Información general

Si experimentas un comportamiento inesperado al utilizar Datadog Application Security Management (ASM), existen algunos problemas comunes que puedes investigar, como se menciona a continuación. Si sigues teniendo problemas, ponte en contacto con el servicio de asistencia de Datadog para obtener más ayuda.

Límites de frecuencias de ASM

Las trazas (traces) de ASM tienen un límite de frecuencia de 100 trazas por segundo. Las trazas enviadas más allá de este límite no se informan. Si necesitas cambiar el límite, ponte en contacto con el servicio de asistencia de Datadog.

ASM no detecta ninguna traza de seguridad

Existe una serie de pasos que deben ejecutarse correctamente para que la información sobre amenazas aparezca en el Explorador de trazas y señales de ASM. Al investigar este problema, es importante verificar cada paso. Los pasos adicionales para solucionar problemas para lenguajes específicos se encuentran en la pestaña de lenguajes al final.

Confirmar que ASM está habilitado

Para comprobar si ASM se está ejecutando, puedes utilizar la métrica datadog.apm.appsec_host.

  1. Ve a Métricas > Resumen en Datadog.
  2. Busca la métrica datadog.apm.appsec_host . Si la métrica no existe, entonces no hay servicios ejecutando ASM. Si la métrica existe, los servicios se informan mediante las etiquetas (tags) de métricas host y service.
  3. Selecciona la métrica y busca service en la sección Etiquetas para ver qué servicios están ejecutando ASM.

Si no ves datadog.apm.appsec_host, comprueba las instrucciones en la aplicación para confirmar que se han completado todos los pasos de la configuración inicial.

Los datos de ASM se envían con trazas de APM. Consulta Solucionar problemas de APM para confirmar la configuración de APM y comprobar si hay errores de conexión.

Envío de un ataque de prueba a tu aplicación

Para probar tu configuración de ASM, activa la regla Analizador de seguridad detectado, ejecutando un archivo que contenga el siguiente script curl:

for ((i=1;i<=250;i++));
do
# Apunta a rutas de servicios existentes
curl https://your-application-url/existing-route -A Arachni/v1.0;
# Apunta a rutas de servicios no existentes
curl https://your-application-url/non-existing-route -A Arachni/v1.0;
done

Unos minutos después de habilitar tu aplicación y ejercitarla, si todo sale según lo esperado, aparecerá información sobre amenazas en el Explorador de trazas y señales.

Página con información sobre señales de seguridad, que muestra etiquetas, métricas, pasos a seguir sugeridos y direcciones IP de atacantes asociados a una amenaza.

Comprobar si las integraciones requeridas del rastreador están desactivadas

ASM depende de ciertas integraciones del rastreador. Si están desactivadas, ASM no funcionará. Para ver si hay integraciones desactivadas, busca disabled_integrations en tus logs de inicio.

Las integraciones requeridas varían según el lenguaje.

Para Ruby, se requiere la versión Rack integración. También se requiere la versión Ruby tracer 1.0.0 o superior. Consulte la información sobre migración de 0.x a 1.x.

Nota: Rack puede añadirse manualmente o automáticamente con la integración Rails o Sinatra. Si se añade manualmente, el middleware del rastreador debe aparecer antes que el middleware de seguridad en el stack tecnológico de Rack.

Comprobar la configuración del Datadog Agent

Para resolver este paso del proceso, haz lo siguiente:

  • Comprueba los detalles del Agent que se está ejecutando en esta dirección http://<agent-machine-name>:<agent-port>/info, normalmente http://localhost:8126/info.
  • Asegúrate de que no hay errores de transmisión del Agent relacionados con tramos (spans) en los logs de tu rastreador.
  • Si el Agent se instala en una máquina independiente, comprueba que DD_AGENT_HOST y, opcionalmente, DD_TRACE_AGENT_PORT están configurados, o que DD_TRACE_AGENT_URL está configurado para la biblioteca de rastreo de aplicaciones.

Comprobar si los tramos se transmiten correctamente a Datadog

Los datos de ASM se envían a través de tramos. Para confirmar si los tramos se transmiten correctamente a Datadog, comprueba si tu rastreador contiene logs con un aspecto parecido al siguiente:

2021-11-29 21:19:58 CET | TRACE | INFO | (pkg/trace/info/stats.go:111 in LogStats) | [lang:.NET lang_version:5.0.10 interpreter:.NET tracer_version:1.30.1.0 endpoint_version:v0.4] -> traces received: 2, traces filtered: 0, traces amount: 1230 bytes, events extracted: 0, events sampled: 0

Si no se transmiten tramos, el rastreador contendrá logs con un aspecto parecido al siguiente:

2021-11-29 21:18:48 CET | TRACE | INFO | (pkg/trace/info/stats.go:104 in LogStats) | No data received

Solucionar problemas por lenguaje

A continuación se indican los pasos adicionales para solucionar problemas para lenguajes específicos.

En Ruby, si no ves información sobre amenazas de ASM en el Explorador de trazas y señales después de unos minutos, habilita los diagnósticos del rastreador para logs de depuración. Por ejemplo:

Datadog.configure do |c|
  c.diagnostics.debug = true  # incrementa el nivel general de logs a depurar
  c.appsec.waf_debug = true   # también habilita la cantidad de datos en logs específica de WAF en el nivel más elevado
end

Los logs de depuración contienen muchos datos pero son útiles. Si abres un ticket para el servicio de asistencia de Datadog, reenvía los logs junto con tu solicitud.

¿Está ASM correctamente habilitado?

ASM se ha habilitado correctamente si ves logs como el siguiente:

D, [2021-12-14T11:03:32.167125 #73127] DEBUG -- ddtrace: [ddtrace] (libddwaf/lib/datadog/appsec/waf.rb:296:in `block in logger=') {:level=>:ddwaf_log_info, :func=> "ddwaf_set_log_cb", :file=>"PowerWAFInterface.cpp", :message=>"Sending log messages to binding, min level trace"}
D, [2021-12-14T11:03:32.200491 #73127] DEBUG -- ddtrace: [ddtrace] (libddwaf/lib/datadog/appsec/waf.rb:296:in `block in logger=') {:level=>:ddwaf_log_debug, :func= >"parse", :file=>"parser_v2.cpp", :message=>"Loaded 124 rules out of 124 available in the ruleset"}

Si no ves estos logs, comprueba lo siguiente:

  • Si las variables de entorno de ASM correctas están configuradas para el proceso de tu aplicación.
  • Si la última versión del gem está instalada.
  • Si el rastreador está configurado correctamente y envía trazas de APM a tu dashboard de APM.

¿Se llama a ASM en cada solicitud HTTP?

Para confirmar que se llama a ASM en cada solicitud HTTP, activa un ataque de prueba y busca estos logs:

D, [2022-01-19T21:25:50.579745 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/reactive/operation.rb:14:in `initialize') operation: rack.request initialize
D, [2022-01-19T21:25:50.580300 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/gateway/watcher.rb:25:in `block (2 levels) in watch') root span: 964736568335365930
D, [2022-01-19T21:25:50.580371 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/gateway/watcher.rb:26:in `block (2 levels) in watch') active span: 964736568335365930
D, [2022-01-19T21:25:50.581061 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/reactive/request.rb:34:in `block in subscribe') reacted to ["request.headers", "request.uri.raw", "request.query", "request.cookies", "request.body.raw"]: [{"version"=>"HTTP/1.1", "host"=>"127.0.0.1:9292", "accept"=>"*/*", "user-agent"=>"Nessus SOAP"}, "http://127.0.0.1:9292/", [], {}, ""]

Si no ves estos logs, prueba lo siguiente:

  • Comprueba si otro sistema de seguridad anterior no está filtrando las solicitudes basándose en el valor de cabecera del test, lo que impide que la solicitud llegue a la aplicación.
  • Envía otro ataque de prueba utilizando otro valor del Agent del usuario en el comando curl, para ver si la información sobre la amenaza se envía correctamente.
  • En la aplicación, busca los logs de la solicitud exacta que has ejecutado, para confirmar que la solicitud ha llegado a la aplicación y no ha sido respondida por otro sistema anterior.

Si la integración Rack se ha configurado manualmente, algunas veces el problema que impide el funcionamiento de ASM es uno conocido. Por ejemplo:

Datadog.configure do |c|
  c.tracing.instrument :rails
  ...
  c.tracing.instrument :rack, web_service_name: "something", request_queuing: true

Si c.tracing.instrument :rack está presente, elimínalo para ver si el check se aprueba.

¿Detecta ASM las amenazas a la seguridad de las solicitudes HTTP?

Para confirmar que ASM está detectando amenazas de seguridad, activa un ataque de prueba y busca estos logs:

D, [2021-12-14T22:39:53.268820 #106051] DEBUG -- ddtrace: [ddtrace] (ddtrace/lib/datadog/appsec/contrib/rack/reactive/request.rb:63:in `block in subscribe') WAF: #<struct Datadog::AppSec::WAF::Result action=:monitor, data=[{"rule"=>{"id"=>"ua0-600-10x", "name"=>"Nessus", "tags"=>{"type"=>"security_scanner", "category"=>"attack_attempt"}}, "rule_matches"=>[{"operator"=>"match_regex", "operator_value"=>"(?i)^Nessus(/|([ :]+SOAP))", "parameters"=>[{"address"=>"server.request.headers.no_cookies", "key_path"=>["user-agent"], "value"=>"Nessus SOAP", "highlight"=>["Nessus SOAP"]}]}]}], perf_data=nil, perf_total_runtime=20519>

Si no ves estos logs, comprueba que otro sistema de seguridad anterior no está filtrando las solicitudes o alterándolas basándose en el valor de cabecera del test.

¿El rastreador envía trazas con datos de seguridad?

Los datos de ASM se envían con trazas de APM. Para confirmar que ASM detecta e inserta correctamente los datos de seguridad en las trazas, activa un ataque de prueba y busca los siguientes logs del rastreador:

Tags: [
   runtime-id => 0c3dfc67-9cf3-457c-a980-0229b203d048,
   _dd.runtime_family => ruby,
   appsec.event => true,
   _dd.appsec.json => {"triggers":[{"rule":{"id":"ua0-600-10x","name":"Nessus","tags":{"type":"security_scanner","category":"attack_attempt"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i)^Nessus(/|([ :]+SOAP))","parameters":[{"address":"server.request.headers.no_cookies","key_path":["user-agent"],"value":"Nessus SOAP","highlight":["Nessus SOAP"]}]}]}]},
   http.request.headers.host => 127.0.0.1:9292,
   http.request.headers.accept => */*,
   http.request.headers.user-agent => Nessus SOAP,
   http.response.headers.content-type => text/plain,
   http.host => 127.0.0.1,
   http.useragent => Nessus SOAP,
   network.client.ip => 127.0.0.1,
   _dd.origin => appsec,
   http.method => GET,
   http.url => /,
   http.base_url => http://127.0.0.1:9292,
   http.status_code => 200,
   http.response.headers.content_type => text/plain]
Metrics: [
   _dd.agent_psr => 1.0,
   system.pid => 155644.0,
   _dd.appsec.enabled => 1.0,
   _dd.measured => 1.0,
   _sampling_priority_v1 => 2.0]]

Espera un minuto a que el Agent reenvíe las trazas y luego comprueba que estas aparecen en el dashboard de APM. La información de seguridad de las trazas puede tardar un tiempo adicional en ser procesada por Datadog, antes de aparecer como trazas de seguridad en el Explorador de trazas y señales de ASM.

El Análisis de composición del software no ha detectado vulnerabilidades

Hay una serie de pasos que debes ejecutar correctamente para que la información sobre las vulnerabilidades aparezca en la vista de seguridad del catálogo de servicios o en el Explorador de vulnerabilidades. Al investigar este problema, es importante comprobar cada paso.

Confirmar que ASM está habilitado

Para comprobar si ASM se está ejecutando, puedes utilizar la métrica datadog.apm.appsec_host.

  1. Ve a Métricas > Resumen en Datadog.
  2. Busca la métrica datadog.apm.appsec_host . Si la métrica no existe, entonces no hay servicios ejecutando ASM. Si la métrica existe, los servicios se informan mediante las etiquetas (tags) de métricas host y service.
  3. Selecciona la métrica y busca service en la sección Etiquetas para ver qué servicios están ejecutando ASM.

Si no ves datadog.apm.appsec_host, comprueba las instrucciones en la aplicación para confirmar que se han completado todos los pasos de la configuración inicial.

Los datos de ASM se envían con trazas de APM. Consulta Solucionar problemas de APM para confirmar la configuración de APM y comprobar si hay errores de conexión.

Confirmar que las versiones del rastreador están actualizadas

Consulte la documentación de configuración del producto Application Security para validar que está utilizando la versión correcta del rastreador. Estas versiones mínimas son necesarias para comenzar a enviar datos de telemetría que incluyan información de biblioteca.

Garantizar la comunicación de los datos de telemetría

Asegúrate de que la variable de entorno DD_INSTRUMENTATION_TELEMETRY_ENABLED (DD_TRACE_TELEMETRY_ENABLED para Node.js) está configurada como true o que la propiedad del sistema correspondiente a tu lenguaje está habilitada. Por ejemplo, en Java: -Ddd.instrumentation.telemetry.enabled=true

Deshabilitar la gestión de amenazas y la protección

Para deshabilitar la gestión de amenazas, elimina la variable de entorno DD_APPSEC_ENABLED=true de la configuración de tu aplicación y reinicia tu servicio.

Si no has configurado ninguna variable de entorno DD_APPSEC_ENABLED=true para tu servicio, realiza una de las siguientes acciones:

  • Si se trata de un servicio PHP: configura explícitamente la variable de entorno como DD_APPSEC_ENABLED=false y reinicia tu servicio.
  • Si la gestión de amenazas se ha activado mediante configuración remota, haz lo siguiente:
    1. Ve a Servicios (ASM > Catálogo > Servicios).
    2. Selecciona Gestión de amenazas en modo monitorización.
    3. En la faceta Gestión de amenazas, activa Monitoring Only, No data, and Ready to block (Sólo monitorización, Sin datos y Listo para el bloqueo).
    4. Haz clic en un servicio.
    5. En los detalles del servicio, en Detección de amenazas, haz clic en Deactivate (Desactivar).
Si la gestión de amenazas se ha activado mediante Configuración remota, puedes utilizar el botón Deactivate (Desactivar). Si la gestión de amenazas se ha activado mediante configuración local, el botón Desactivar no es una opción.
  • Para desactivar la gestión de amenazas en tus servicios masivos, haz lo siguiente:
    1. Ve a Servicios.
    2. En la faceta Gestión de amenazas, activa Monitoring Only, No data, and Ready to block (Sólo monitorización, Sin datos y Listo para el bloqueo).
    3. Selecciona las casillas de verificación de servicios en las que quieres deshabilitar la detección de amenazas.
    4. En Acciones masivas, selecciona Desactivar detección de amenazas en (número) servicios.

Deshabilitación del Análisis de composición del software

Para deshabilitar el Análisis de composición del software:

  • Ve a Servicios, selecciona Análisis de composición del software (SCA), haz clic en tu servicio y, a continuación, haz clic en Deactivate (Desactivar).
  • Para deshabilitar el Análisis de composición del software en tus servicios masivos, haz clic en la casilla de verificación de la cabecera de la lista y, a continuación, selecciona **Desactivar el Análisis de composición del software (SCA) en (número) servicios en Acciones masivas.
  • Para deshabilitarr el Análisis de composición del software utilizando la variable de entornoDD_APPSEC_SCA_ENABLED, elimina la variable de entorno DD_APPSEC_SCA_ENABLED=true de la configuración de tu aplicación y reinicia tu servicio. Esto no se aplica a las aplicaciones PHP.

Deshabilitar la seguridad del código

Para deshabilitar la detección de vulnerabilidades Seguridad del código, elimina la variable de entorno DD_IAST_ENABLED=true de la configuración de tu aplicación y reinicia tu servicio. Esto no se aplica a las aplicaciones PHP.

Si no hay ninguna variable de entorno DD_IAST_ENABLED=true para tu servicio, haz lo siguiente:

  1. Ve a Servicios.
  2. Selecciona Seguridad del código.
  3. Haz clic en un servicio.
  4. En los detalles del servicio, en Detección de vulnerabilidades, haz clic en Deactivate (Desactivar).

No se detectan algunas o todas las vulnerabilidades IAST/Código personalizado

Confirmar que IAST está habilidado

Asegúrate de que la variable de entorno DD_IAST_ENABLED está configurada como true o que la propiedad del sistema correspondiente a tu lenguaje está habilitada.

En Python+Flask, llama a la función de parche del punto de entrada

Si estás ejecutando una aplicación Flask, asegúrate de que estás llamando a la función ddtrace_iast_flask_patch() en el nivel superior del módulo, antes de llamar a app.run(). Para obtener más información, consulta la documentación de la integración Flask.

¿Necesitas más ayuda?

Si sigues teniendo problemas con ASM, ponte en contacto con el servicio de asistencia de Datadog y proporciona la siguiente información:

Referencias adicionales

PREVIEWING: watson/nodejs-docs-update