dd-trace 5.80.0 → 5.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/LICENSE-3rdparty.csv +79 -88
  2. package/ext/tags.d.ts +1 -0
  3. package/ext/tags.js +1 -0
  4. package/index.d.ts +42 -35
  5. package/loader-hook.mjs +16 -4
  6. package/package.json +33 -56
  7. package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
  8. package/packages/datadog-esbuild/index.js +44 -26
  9. package/packages/datadog-esbuild/src/utils.js +14 -2
  10. package/packages/datadog-instrumentations/index.js +1 -0
  11. package/packages/datadog-instrumentations/src/aerospike.js +3 -2
  12. package/packages/datadog-instrumentations/src/ai.js +2 -2
  13. package/packages/datadog-instrumentations/src/amqp10.js +1 -1
  14. package/packages/datadog-instrumentations/src/amqplib.js +4 -4
  15. package/packages/datadog-instrumentations/src/anthropic.js +14 -2
  16. package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
  17. package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
  18. package/packages/datadog-instrumentations/src/apollo.js +3 -2
  19. package/packages/datadog-instrumentations/src/avsc.js +1 -1
  20. package/packages/datadog-instrumentations/src/aws-sdk.js +6 -2
  21. package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
  22. package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
  23. package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
  24. package/packages/datadog-instrumentations/src/bluebird.js +1 -1
  25. package/packages/datadog-instrumentations/src/bullmq.js +11 -0
  26. package/packages/datadog-instrumentations/src/bunyan.js +1 -1
  27. package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
  28. package/packages/datadog-instrumentations/src/child_process.js +2 -2
  29. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
  30. package/packages/datadog-instrumentations/src/couchbase.js +1 -1
  31. package/packages/datadog-instrumentations/src/crypto.js +1 -1
  32. package/packages/datadog-instrumentations/src/cucumber.js +12 -13
  33. package/packages/datadog-instrumentations/src/cypress.js +1 -1
  34. package/packages/datadog-instrumentations/src/dns.js +1 -1
  35. package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
  36. package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
  37. package/packages/datadog-instrumentations/src/express.js +1 -1
  38. package/packages/datadog-instrumentations/src/find-my-way.js +6 -5
  39. package/packages/datadog-instrumentations/src/fs.js +1 -1
  40. package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
  41. package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
  42. package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
  43. package/packages/datadog-instrumentations/src/google-genai.js +120 -0
  44. package/packages/datadog-instrumentations/src/graphql.js +21 -1
  45. package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
  46. package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
  47. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
  48. package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
  49. package/packages/datadog-instrumentations/src/helpers/hooks.js +5 -1
  50. package/packages/datadog-instrumentations/src/helpers/instrument.js +11 -1
  51. package/packages/datadog-instrumentations/src/helpers/register.js +12 -5
  52. package/packages/datadog-instrumentations/src/helpers/rewriter/compiler.js +27 -0
  53. package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +152 -0
  54. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
  55. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +6 -0
  56. package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +237 -0
  57. package/packages/datadog-instrumentations/src/helpers/rewriter/loader.js +9 -0
  58. package/packages/datadog-instrumentations/src/helpers/rewriter/loader.mjs +11 -0
  59. package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +139 -0
  60. package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
  61. package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
  62. package/packages/datadog-instrumentations/src/hono.js +55 -10
  63. package/packages/datadog-instrumentations/src/ioredis.js +1 -1
  64. package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
  65. package/packages/datadog-instrumentations/src/jest.js +2 -2
  66. package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
  67. package/packages/datadog-instrumentations/src/knex.js +1 -1
  68. package/packages/datadog-instrumentations/src/langchain.js +3 -109
  69. package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
  70. package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
  71. package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
  72. package/packages/datadog-instrumentations/src/lodash.js +1 -2
  73. package/packages/datadog-instrumentations/src/mariadb.js +1 -2
  74. package/packages/datadog-instrumentations/src/memcached.js +1 -1
  75. package/packages/datadog-instrumentations/src/mocha/main.js +1 -1
  76. package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
  77. package/packages/datadog-instrumentations/src/mongodb.js +1 -1
  78. package/packages/datadog-instrumentations/src/mongoose.js +1 -1
  79. package/packages/datadog-instrumentations/src/mquery.js +1 -1
  80. package/packages/datadog-instrumentations/src/mysql.js +1 -1
  81. package/packages/datadog-instrumentations/src/mysql2.js +2 -2
  82. package/packages/datadog-instrumentations/src/net.js +1 -1
  83. package/packages/datadog-instrumentations/src/next.js +1 -1
  84. package/packages/datadog-instrumentations/src/nyc.js +1 -1
  85. package/packages/datadog-instrumentations/src/openai.js +2 -2
  86. package/packages/datadog-instrumentations/src/opensearch.js +1 -1
  87. package/packages/datadog-instrumentations/src/oracledb.js +1 -1
  88. package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
  89. package/packages/datadog-instrumentations/src/pg.js +3 -3
  90. package/packages/datadog-instrumentations/src/pino.js +1 -1
  91. package/packages/datadog-instrumentations/src/playwright.js +46 -17
  92. package/packages/datadog-instrumentations/src/prisma.js +52 -37
  93. package/packages/datadog-instrumentations/src/process.js +1 -1
  94. package/packages/datadog-instrumentations/src/promise-js.js +1 -1
  95. package/packages/datadog-instrumentations/src/promise.js +1 -1
  96. package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
  97. package/packages/datadog-instrumentations/src/q.js +1 -1
  98. package/packages/datadog-instrumentations/src/redis.js +1 -1
  99. package/packages/datadog-instrumentations/src/rhea.js +1 -1
  100. package/packages/datadog-instrumentations/src/router.js +1 -1
  101. package/packages/datadog-instrumentations/src/selenium.js +4 -2
  102. package/packages/datadog-instrumentations/src/sequelize.js +1 -2
  103. package/packages/datadog-instrumentations/src/sharedb.js +1 -1
  104. package/packages/datadog-instrumentations/src/tedious.js +1 -1
  105. package/packages/datadog-instrumentations/src/undici.js +4 -4
  106. package/packages/datadog-instrumentations/src/url.js +1 -1
  107. package/packages/datadog-instrumentations/src/vitest.js +1 -1
  108. package/packages/datadog-instrumentations/src/vm.js +1 -1
  109. package/packages/datadog-instrumentations/src/when.js +1 -1
  110. package/packages/datadog-instrumentations/src/winston.js +1 -1
  111. package/packages/datadog-instrumentations/src/ws.js +38 -19
  112. package/packages/datadog-plugin-amqp10/src/index.js +1 -1
  113. package/packages/datadog-plugin-amqplib/src/index.js +1 -1
  114. package/packages/datadog-plugin-anthropic/src/index.js +1 -1
  115. package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
  116. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
  117. package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
  118. package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
  119. package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
  120. package/packages/datadog-plugin-azure-event-hubs/src/producer.js +19 -5
  121. package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
  122. package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -0
  123. package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
  124. package/packages/datadog-plugin-bullmq/src/index.js +18 -0
  125. package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
  126. package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +1 -1
  127. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  128. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +23 -2
  129. package/packages/datadog-plugin-cypress/src/plugin.js +2 -2
  130. package/packages/datadog-plugin-cypress/src/support.js +73 -31
  131. package/packages/datadog-plugin-express/src/index.js +1 -1
  132. package/packages/datadog-plugin-fastify/src/index.js +1 -1
  133. package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
  134. package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
  135. package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
  136. package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
  137. package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
  138. package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
  139. package/packages/datadog-plugin-google-genai/src/index.js +17 -0
  140. package/packages/datadog-plugin-google-genai/src/tracing.js +41 -0
  141. package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
  142. package/packages/datadog-plugin-graphql/src/tools/transforms.js +5 -4
  143. package/packages/datadog-plugin-grpc/src/index.js +1 -1
  144. package/packages/datadog-plugin-http/src/client.js +2 -1
  145. package/packages/datadog-plugin-http/src/index.js +25 -5
  146. package/packages/datadog-plugin-http2/src/client.js +2 -2
  147. package/packages/datadog-plugin-http2/src/index.js +1 -1
  148. package/packages/datadog-plugin-jest/src/util.js +1 -1
  149. package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
  150. package/packages/datadog-plugin-langchain/src/index.js +1 -1
  151. package/packages/datadog-plugin-langchain/src/tracing.js +7 -3
  152. package/packages/datadog-plugin-moleculer/src/index.js +1 -1
  153. package/packages/datadog-plugin-mongodb-core/src/index.js +6 -2
  154. package/packages/datadog-plugin-next/src/index.js +11 -3
  155. package/packages/datadog-plugin-openai/src/index.js +1 -1
  156. package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
  157. package/packages/datadog-plugin-openai/src/tracing.js +2 -2
  158. package/packages/datadog-plugin-rhea/src/index.js +1 -1
  159. package/packages/datadog-plugin-ws/src/close.js +56 -3
  160. package/packages/datadog-plugin-ws/src/index.js +4 -0
  161. package/packages/datadog-plugin-ws/src/producer.js +39 -4
  162. package/packages/datadog-plugin-ws/src/receiver.js +39 -3
  163. package/packages/datadog-plugin-ws/src/server.js +13 -1
  164. package/packages/datadog-plugin-ws/src/util.js +107 -0
  165. package/packages/datadog-shimmer/src/shimmer.js +2 -2
  166. package/packages/dd-trace/src/aiguard/sdk.js +21 -13
  167. package/packages/dd-trace/src/appsec/api_security_sampler.js +1 -1
  168. package/packages/dd-trace/src/appsec/graphql.js +2 -2
  169. package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
  170. package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
  171. package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
  172. package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
  173. package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
  174. package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
  175. package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
  176. package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
  177. package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
  178. package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
  179. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
  180. package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
  181. package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
  182. package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
  183. package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
  184. package/packages/dd-trace/src/appsec/iast/index.js +5 -5
  185. package/packages/dd-trace/src/appsec/iast/overhead-controller.js +1 -1
  186. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
  187. package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
  188. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
  189. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
  190. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
  191. package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +11 -16
  192. package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
  193. package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
  194. package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +4 -4
  195. package/packages/dd-trace/src/appsec/index.js +8 -8
  196. package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
  197. package/packages/dd-trace/src/appsec/rasp/index.js +1 -1
  198. package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
  199. package/packages/dd-trace/src/appsec/rc-products.js +10 -0
  200. package/packages/dd-trace/src/appsec/recommended.json +230 -3
  201. package/packages/dd-trace/src/appsec/remote_config.js +177 -0
  202. package/packages/dd-trace/src/appsec/reporter.js +3 -7
  203. package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
  204. package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
  205. package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
  206. package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
  207. package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
  208. package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
  209. package/packages/dd-trace/src/appsec/waf/index.js +17 -3
  210. package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
  211. package/packages/dd-trace/src/azure_metadata.js +8 -2
  212. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +8 -6
  213. package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
  214. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
  215. package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
  216. package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +4 -2
  217. package/packages/dd-trace/src/config/remote_config.js +34 -0
  218. package/packages/dd-trace/src/config.js +109 -34
  219. package/packages/dd-trace/src/config_defaults.js +16 -3
  220. package/packages/dd-trace/src/constants.js +5 -0
  221. package/packages/dd-trace/src/crashtracking/crashtracker.js +10 -1
  222. package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
  223. package/packages/dd-trace/src/datastreams/encoding.js +23 -6
  224. package/packages/dd-trace/src/datastreams/index.js +1 -1
  225. package/packages/dd-trace/src/datastreams/pathway.js +41 -2
  226. package/packages/dd-trace/src/datastreams/processor.js +3 -3
  227. package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +1 -1
  228. package/packages/dd-trace/src/datastreams/writer.js +2 -2
  229. package/packages/dd-trace/src/debugger/config.js +1 -0
  230. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +15 -5
  231. package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
  232. package/packages/dd-trace/src/debugger/devtools_client/config.js +3 -1
  233. package/packages/dd-trace/src/debugger/devtools_client/index.js +37 -17
  234. package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +2 -0
  235. package/packages/dd-trace/src/debugger/devtools_client/json-buffer.js +24 -18
  236. package/packages/dd-trace/src/debugger/devtools_client/send.js +21 -11
  237. package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
  238. package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +103 -15
  239. package/packages/dd-trace/src/debugger/devtools_client/snapshot/constants.js +25 -0
  240. package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +56 -25
  241. package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +64 -23
  242. package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +3 -1
  243. package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +404 -0
  244. package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +1 -1
  245. package/packages/dd-trace/src/debugger/devtools_client/state.js +8 -3
  246. package/packages/dd-trace/src/debugger/devtools_client/status.js +3 -3
  247. package/packages/dd-trace/src/debugger/index.js +2 -2
  248. package/packages/dd-trace/src/dogstatsd.js +3 -2
  249. package/packages/dd-trace/src/encode/0.4.js +1 -1
  250. package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
  251. package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
  252. package/packages/dd-trace/src/encode/span-stats.js +13 -2
  253. package/packages/dd-trace/src/exporter.js +2 -2
  254. package/packages/dd-trace/src/exporters/agent/index.js +1 -1
  255. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +1 -1
  256. package/packages/dd-trace/src/exporters/common/request.js +2 -2
  257. package/packages/dd-trace/src/exporters/common/writer.js +1 -1
  258. package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
  259. package/packages/dd-trace/src/external-logger/src/index.js +1 -2
  260. package/packages/dd-trace/src/flare/index.js +1 -1
  261. package/packages/dd-trace/src/guardrails/index.js +6 -3
  262. package/packages/dd-trace/src/histogram.js +1 -1
  263. package/packages/dd-trace/src/id.js +60 -0
  264. package/packages/dd-trace/src/index.js +1 -1
  265. package/packages/dd-trace/src/lambda/handler.js +4 -4
  266. package/packages/dd-trace/src/lambda/index.js +1 -1
  267. package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
  268. package/packages/dd-trace/src/lambda/runtime/ritm.js +2 -2
  269. package/packages/dd-trace/src/llmobs/constants/tags.js +8 -1
  270. package/packages/dd-trace/src/llmobs/index.js +8 -9
  271. package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
  272. package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
  273. package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
  274. package/packages/dd-trace/src/llmobs/plugins/genai/index.js +104 -0
  275. package/packages/dd-trace/src/llmobs/plugins/genai/util.js +486 -0
  276. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
  277. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
  278. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
  279. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
  280. package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
  281. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +2 -2
  282. package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
  283. package/packages/dd-trace/src/llmobs/plugins/{openai.js → openai/index.js} +63 -6
  284. package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +126 -0
  285. package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
  286. package/packages/dd-trace/src/llmobs/sdk.js +20 -22
  287. package/packages/dd-trace/src/llmobs/span_processor.js +15 -14
  288. package/packages/dd-trace/src/llmobs/tagger.js +4 -0
  289. package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
  290. package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
  291. package/packages/dd-trace/src/llmobs/writers/spans.js +1 -2
  292. package/packages/dd-trace/src/log/index.js +1 -1
  293. package/packages/dd-trace/src/noop/proxy.js +2 -2
  294. package/packages/dd-trace/src/noop/span.js +1 -1
  295. package/packages/dd-trace/src/openfeature/index.js +2 -2
  296. package/packages/dd-trace/src/openfeature/noop.js +14 -14
  297. package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
  298. package/packages/dd-trace/src/openfeature/writers/base.js +5 -5
  299. package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
  300. package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
  301. package/packages/dd-trace/src/opentelemetry/logs/index.js +2 -2
  302. package/packages/dd-trace/src/opentelemetry/logs/logger.js +3 -2
  303. package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
  304. package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +5 -3
  305. package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +17 -16
  306. package/packages/dd-trace/src/opentelemetry/metrics/constants.js +34 -0
  307. package/packages/dd-trace/src/opentelemetry/metrics/index.js +81 -0
  308. package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +225 -0
  309. package/packages/dd-trace/src/opentelemetry/metrics/meter.js +171 -0
  310. package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +54 -0
  311. package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +62 -0
  312. package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +251 -0
  313. package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +557 -0
  314. package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +10 -18
  315. package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +47 -32
  316. package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
  317. package/packages/dd-trace/src/opentelemetry/span.js +3 -3
  318. package/packages/dd-trace/src/opentelemetry/tracer.js +4 -4
  319. package/packages/dd-trace/src/opentelemetry/tracer_provider.js +1 -1
  320. package/packages/dd-trace/src/opentracing/propagation/text_map.js +24 -8
  321. package/packages/dd-trace/src/opentracing/span.js +3 -3
  322. package/packages/dd-trace/src/opentracing/tracer.js +5 -5
  323. package/packages/dd-trace/src/payload-tagging/index.js +8 -4
  324. package/packages/dd-trace/src/plugin_manager.js +5 -3
  325. package/packages/dd-trace/src/plugins/apollo.js +1 -1
  326. package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
  327. package/packages/dd-trace/src/plugins/database.js +1 -1
  328. package/packages/dd-trace/src/plugins/index.js +6 -1
  329. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  330. package/packages/dd-trace/src/plugins/outbound.js +1 -1
  331. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  332. package/packages/dd-trace/src/plugins/util/ci.js +1 -1
  333. package/packages/dd-trace/src/plugins/util/git.js +8 -8
  334. package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
  335. package/packages/dd-trace/src/plugins/util/test.js +27 -27
  336. package/packages/dd-trace/src/plugins/util/url.js +119 -1
  337. package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
  338. package/packages/dd-trace/src/plugins/util/web.js +18 -46
  339. package/packages/dd-trace/src/priority_sampler.js +15 -16
  340. package/packages/dd-trace/src/process-tags/index.js +83 -0
  341. package/packages/dd-trace/src/profiling/config.js +33 -22
  342. package/packages/dd-trace/src/profiling/exporter_cli.js +4 -4
  343. package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
  344. package/packages/dd-trace/src/profiling/index.js +1 -1
  345. package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
  346. package/packages/dd-trace/src/profiling/profiler.js +4 -5
  347. package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
  348. package/packages/dd-trace/src/profiling/profilers/events.js +11 -2
  349. package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
  350. package/packages/dd-trace/src/proxy.js +17 -18
  351. package/packages/dd-trace/src/rate_limiter.js +1 -1
  352. package/packages/dd-trace/src/remote_config/index.js +541 -137
  353. package/packages/dd-trace/src/require-package-json.js +1 -1
  354. package/packages/dd-trace/src/ritm.js +50 -27
  355. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
  356. package/packages/dd-trace/src/serverless.js +16 -0
  357. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
  358. package/packages/dd-trace/src/service-naming/schemas/v0/web.js +4 -0
  359. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
  360. package/packages/dd-trace/src/service-naming/schemas/v1/web.js +4 -0
  361. package/packages/dd-trace/src/span_format.js +10 -5
  362. package/packages/dd-trace/src/span_processor.js +8 -3
  363. package/packages/dd-trace/src/span_stats.js +21 -8
  364. package/packages/dd-trace/src/spanleak.js +1 -1
  365. package/packages/dd-trace/src/standalone/index.js +1 -1
  366. package/packages/dd-trace/src/startup-log.js +3 -3
  367. package/packages/dd-trace/src/supported-configurations.json +16 -0
  368. package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
  369. package/packages/dd-trace/src/telemetry/endpoints.js +8 -8
  370. package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
  371. package/packages/dd-trace/src/telemetry/telemetry.js +22 -8
  372. package/packages/dd-trace/src/tracer.js +3 -3
  373. package/packages/dd-trace/src/tracer_metadata.js +19 -15
  374. package/vendor/dist/@datadog/sketches-js/LICENSE +39 -0
  375. package/vendor/dist/@datadog/sketches-js/index.js +1 -0
  376. package/vendor/dist/@datadog/source-map/LICENSE +28 -0
  377. package/vendor/dist/@datadog/source-map/index.js +1 -0
  378. package/vendor/dist/@isaacs/ttlcache/LICENSE +55 -0
  379. package/vendor/dist/@isaacs/ttlcache/index.js +1 -0
  380. package/vendor/dist/@opentelemetry/core/LICENSE +201 -0
  381. package/vendor/dist/@opentelemetry/core/index.js +1 -0
  382. package/vendor/dist/@opentelemetry/resources/LICENSE +201 -0
  383. package/vendor/dist/@opentelemetry/resources/index.js +1 -0
  384. package/vendor/dist/astring/LICENSE +19 -0
  385. package/vendor/dist/astring/index.js +1 -0
  386. package/vendor/dist/crypto-randomuuid/index.js +1 -0
  387. package/vendor/dist/escape-string-regexp/LICENSE +9 -0
  388. package/vendor/dist/escape-string-regexp/index.js +1 -0
  389. package/vendor/dist/esquery/LICENSE +24 -0
  390. package/vendor/dist/esquery/index.js +1 -0
  391. package/vendor/dist/ignore/LICENSE +21 -0
  392. package/vendor/dist/ignore/index.js +1 -0
  393. package/vendor/dist/istanbul-lib-coverage/LICENSE +24 -0
  394. package/vendor/dist/istanbul-lib-coverage/index.js +1 -0
  395. package/vendor/dist/jest-docblock/LICENSE +21 -0
  396. package/vendor/dist/jest-docblock/index.js +1 -0
  397. package/vendor/dist/jsonpath-plus/LICENSE +22 -0
  398. package/vendor/dist/jsonpath-plus/index.js +1 -0
  399. package/vendor/dist/limiter/LICENSE +19 -0
  400. package/vendor/dist/limiter/index.js +1 -0
  401. package/vendor/dist/lodash.sortby/LICENSE +47 -0
  402. package/vendor/dist/lodash.sortby/index.js +1 -0
  403. package/vendor/dist/lru-cache/LICENSE +15 -0
  404. package/vendor/dist/lru-cache/index.js +1 -0
  405. package/vendor/dist/meriyah/LICENSE +7 -0
  406. package/vendor/dist/meriyah/index.js +1 -0
  407. package/vendor/dist/module-details-from-path/LICENSE +21 -0
  408. package/vendor/dist/module-details-from-path/index.js +1 -0
  409. package/vendor/dist/mutexify/promise/LICENSE +21 -0
  410. package/vendor/dist/mutexify/promise/index.js +1 -0
  411. package/vendor/dist/opentracing/LICENSE +201 -0
  412. package/vendor/dist/opentracing/binary_carrier.d.ts +11 -0
  413. package/vendor/dist/opentracing/constants.d.ts +61 -0
  414. package/vendor/dist/opentracing/examples/demo/demo.d.ts +2 -0
  415. package/vendor/dist/opentracing/ext/tags.d.ts +90 -0
  416. package/vendor/dist/opentracing/functions.d.ts +20 -0
  417. package/vendor/dist/opentracing/global_tracer.d.ts +14 -0
  418. package/vendor/dist/opentracing/index.d.ts +12 -0
  419. package/vendor/dist/opentracing/index.js +1 -0
  420. package/vendor/dist/opentracing/mock_tracer/index.d.ts +5 -0
  421. package/vendor/dist/opentracing/mock_tracer/mock_context.d.ts +13 -0
  422. package/vendor/dist/opentracing/mock_tracer/mock_report.d.ts +16 -0
  423. package/vendor/dist/opentracing/mock_tracer/mock_span.d.ts +50 -0
  424. package/vendor/dist/opentracing/mock_tracer/mock_tracer.d.ts +26 -0
  425. package/vendor/dist/opentracing/noop.d.ts +8 -0
  426. package/vendor/dist/opentracing/reference.d.ts +33 -0
  427. package/vendor/dist/opentracing/span.d.ts +147 -0
  428. package/vendor/dist/opentracing/span_context.d.ts +26 -0
  429. package/vendor/dist/opentracing/test/api_compatibility.d.ts +16 -0
  430. package/vendor/dist/opentracing/test/mocktracer_implemenation.d.ts +3 -0
  431. package/vendor/dist/opentracing/test/noop_implementation.d.ts +4 -0
  432. package/vendor/dist/opentracing/test/opentracing_api.d.ts +3 -0
  433. package/vendor/dist/opentracing/test/unittest.d.ts +2 -0
  434. package/vendor/dist/opentracing/tracer.d.ts +127 -0
  435. package/vendor/dist/path-to-regexp/LICENSE +21 -0
  436. package/vendor/dist/path-to-regexp/index.js +1 -0
  437. package/vendor/dist/pprof-format/LICENSE +8 -0
  438. package/vendor/dist/pprof-format/index.js +1 -0
  439. package/vendor/dist/protobufjs/LICENSE +39 -0
  440. package/vendor/dist/protobufjs/index.js +1 -0
  441. package/vendor/dist/protobufjs/minimal/LICENSE +39 -0
  442. package/vendor/dist/protobufjs/minimal/index.js +1 -0
  443. package/vendor/dist/retry/LICENSE +21 -0
  444. package/vendor/dist/retry/index.js +1 -0
  445. package/vendor/dist/rfdc/LICENSE +15 -0
  446. package/vendor/dist/rfdc/index.js +1 -0
  447. package/vendor/dist/semifies/LICENSE +201 -0
  448. package/vendor/dist/semifies/index.js +1 -0
  449. package/vendor/dist/shell-quote/LICENSE +24 -0
  450. package/vendor/dist/shell-quote/index.js +1 -0
  451. package/vendor/dist/source-map/LICENSE +28 -0
  452. package/vendor/dist/source-map/index.js +1 -0
  453. package/vendor/dist/source-map/lib/util/LICENSE +28 -0
  454. package/vendor/dist/source-map/lib/util/index.js +1 -0
  455. package/vendor/dist/source-map/mappings.wasm +0 -0
  456. package/vendor/dist/tlhunter-sorted-set/LICENSE +21 -0
  457. package/vendor/dist/tlhunter-sorted-set/index.js +1 -0
  458. package/vendor/dist/ttl-set/LICENSE +21 -0
  459. package/vendor/dist/ttl-set/index.js +1 -0
  460. package/packages/dd-trace/src/remote_config/manager.js +0 -368
@@ -3,8 +3,8 @@
3
3
  const path = require('path')
4
4
 
5
5
  const { getNodeModulesPaths } = require('../path-line')
6
- const Analyzer = require('./vulnerability-analyzer')
7
6
  const { WEAK_HASH } = require('../vulnerabilities')
7
+ const Analyzer = require('./vulnerability-analyzer')
8
8
 
9
9
  const INSECURE_HASH_ALGORITHMS = new Set([
10
10
  'md4', 'md4WithRSAEncryption', 'RSA-MD4',
@@ -23,7 +23,8 @@ const EXCLUDED_LOCATIONS = getNodeModulesPaths(
23
23
  'ws/lib/websocket-server.js',
24
24
  'google-gax/build/src/grpc.js',
25
25
  'cookie-signature/index.js',
26
- 'express-session/index.js'
26
+ 'express-session/index.js',
27
+ 'node-preload/preload-list-env.js'
27
28
  )
28
29
 
29
30
  const EXCLUDED_PATHS_FROM_STACK = [
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
- const Analyzer = require('./vulnerability-analyzer')
3
2
  const { WEAK_RANDOMNESS } = require('../vulnerabilities')
3
+ const Analyzer = require('./vulnerability-analyzer')
4
4
 
5
5
  class WeakRandomnessAnalyzer extends Analyzer {
6
6
  constructor () {
@@ -3,13 +3,13 @@
3
3
  const { channel } = require('dc-polyfill')
4
4
 
5
5
  const Plugin = require('../../plugins/plugin')
6
+ const { storage } = require('../../../../datadog-core')
7
+ const instrumentations = require('../../../../datadog-instrumentations/src/helpers/instrumentations')
8
+ const log = require('../../log')
6
9
  const iastTelemetry = require('./telemetry')
7
10
  const { getInstrumentedMetric, getExecutedMetric, TagKey, EXECUTED_SOURCE, formatTags } =
8
11
  require('./telemetry/iast-metric')
9
- const { storage } = require('../../../../datadog-core')
10
12
  const { getIastContext } = require('./iast-context')
11
- const instrumentations = require('../../../../datadog-instrumentations/src/helpers/instrumentations')
12
- const log = require('../../log')
13
13
 
14
14
  /**
15
15
  * Used by vulnerability sources and sinks to subscribe diagnostic channel events
@@ -1,11 +1,13 @@
1
1
  'use strict'
2
2
 
3
- const vulnerabilityReporter = require('./vulnerability-reporter')
4
- const { enableAllAnalyzers, disableAllAnalyzers } = require('./analyzers')
3
+ const dc = require('dc-polyfill')
5
4
  const web = require('../../plugins/util/web')
6
5
  const { storage } = require('../../../../datadog-core')
6
+ const { enable: enableFsPlugin, disable: disableFsPlugin, IAST_MODULE } = require('../rasp/fs-plugin')
7
+ const { incomingHttpRequestStart, incomingHttpRequestEnd, responseWriteHead } = require('../channels')
8
+ const vulnerabilityReporter = require('./vulnerability-reporter')
9
+ const { enableAllAnalyzers, disableAllAnalyzers } = require('./analyzers')
7
10
  const overheadController = require('./overhead-controller')
8
- const dc = require('dc-polyfill')
9
11
  const iastContextFunctions = require('./iast-context')
10
12
  const {
11
13
  enableTaintTracking,
@@ -16,9 +18,7 @@ const {
16
18
  } = require('./taint-tracking')
17
19
  const { IAST_ENABLED_TAG_KEY } = require('./tags')
18
20
  const iastTelemetry = require('./telemetry')
19
- const { enable: enableFsPlugin, disable: disableFsPlugin, IAST_MODULE } = require('../rasp/fs-plugin')
20
21
  const securityControls = require('./security-controls')
21
- const { incomingHttpRequestStart, incomingHttpRequestEnd, responseWriteHead } = require('../channels')
22
22
 
23
23
  const collectedResponseHeaders = new WeakMap()
24
24
 
@@ -1,6 +1,6 @@
1
1
  'use strict'
2
2
 
3
- const { LRUCache } = require('lru-cache')
3
+ const { LRUCache } = require('../../../../../vendor/dist/lru-cache')
4
4
  const web = require('../../plugins/util/web')
5
5
  const vulnerabilities = require('./vulnerabilities')
6
6
 
@@ -5,10 +5,10 @@ const dc = require('dc-polyfill')
5
5
  const { storage } = require('../../../../../datadog-core')
6
6
  const shimmer = require('../../../../../datadog-shimmer')
7
7
  const log = require('../../../log')
8
- const { parse, SANITIZER_TYPE } = require('./parser')
9
8
  const TaintTrackingOperations = require('../taint-tracking/operations')
10
9
  const { getIastContext } = require('../iast-context')
11
10
  const { iterateObjectStrings } = require('../utils')
11
+ const { parse, SANITIZER_TYPE } = require('./parser')
12
12
 
13
13
  // esm
14
14
  const moduleLoadStartChannel = dc.channel('dd-trace:moduleLoadStart')
@@ -1,5 +1,6 @@
1
1
  'use strict'
2
2
 
3
+ const kafkaContextPlugin = require('../context/kafka-ctx-plugin')
3
4
  const {
4
5
  createTransaction,
5
6
  removeTransaction,
@@ -11,8 +12,6 @@ const {
11
12
  const taintTrackingPlugin = require('./plugin')
12
13
  const kafkaConsumerPlugin = require('./plugins/kafka')
13
14
 
14
- const kafkaContextPlugin = require('../context/kafka-ctx-plugin')
15
-
16
15
  module.exports = {
17
16
  enableTaintTracking (config, telemetryVerbosity) {
18
17
  enableTaintOperations(telemetryVerbosity)
@@ -2,8 +2,8 @@
2
2
 
3
3
  const TaintedUtils = require('@datadog/native-iast-taint-tracking')
4
4
  const { IAST_TRANSACTION_ID } = require('../iast-context')
5
- const { HTTP_REQUEST_PARAMETER } = require('./source-types')
6
5
  const log = require('../../../log')
6
+ const { HTTP_REQUEST_PARAMETER } = require('./source-types')
7
7
 
8
8
  const SEPARATOR = '\u0000' // Unit Separator (cannot be in URL keys)
9
9
 
@@ -3,6 +3,7 @@
3
3
  const { SourceIastPlugin } = require('../iast-plugin')
4
4
  const { getIastContext } = require('../iast-context')
5
5
  const { storage } = require('../../../../../datadog-core')
6
+ const { EXECUTED_SOURCE } = require('../telemetry/iast-metric')
6
7
  const { taintObject, newTaintedString, getRanges, taintQueryWithCache } = require('./operations')
7
8
  const {
8
9
  HTTP_REQUEST_BODY,
@@ -15,7 +16,6 @@ const {
15
16
  HTTP_REQUEST_URI,
16
17
  SQL_ROW_VALUE
17
18
  } = require('./source-types')
18
- const { EXECUTED_SOURCE } = require('../telemetry/iast-metric')
19
19
 
20
20
  const REQ_HEADER_TAGS = EXECUTED_SOURCE.formatTags(HTTP_REQUEST_HEADER_VALUE, HTTP_REQUEST_HEADER_NAME)
21
21
  const REQ_URI_TAGS = EXECUTED_SOURCE.formatTags(HTTP_REQUEST_URI)
@@ -47,7 +47,7 @@ export async function load (url, context, nextLoad) {
47
47
  passes.push('iast')
48
48
  }
49
49
  } else {
50
- passes = ['orchestrion']
50
+ passes = [] // TODO: Re-enable Orchestrion when viable.
51
51
  }
52
52
  const rewritten = rewriter.rewrite(result.source.toString(), url, passes)
53
53
 
@@ -5,18 +5,18 @@
5
5
  const Module = require('module')
6
6
  const { pathToFileURL } = require('url')
7
7
  const { MessageChannel } = require('worker_threads')
8
+ const { isMainThread } = require('worker_threads')
9
+ const dc = require('dc-polyfill')
8
10
  const shimmer = require('../../../../../datadog-shimmer')
9
- const { isPrivateModule, isDdTrace } = require('./filter')
10
- const { csiMethods } = require('./csi-methods')
11
11
  const { getName } = require('../telemetry/verbosity')
12
12
  const telemetry = require('../telemetry')
13
- const { incrementTelemetryIfNeeded } = require('./rewriter-telemetry')
14
- const dc = require('dc-polyfill')
15
13
  const log = require('../../../log')
16
- const { isMainThread } = require('worker_threads')
17
- const { LOG_MESSAGE, REWRITTEN_MESSAGE } = require('./constants')
18
14
  const orchestrionConfig = require('../../../../../datadog-instrumentations/src/orchestrion-config')
19
15
  const { getEnvironmentVariable } = require('../../../config-helper')
16
+ const { LOG_MESSAGE, REWRITTEN_MESSAGE } = require('./constants')
17
+ const { incrementTelemetryIfNeeded } = require('./rewriter-telemetry')
18
+ const { csiMethods } = require('./csi-methods')
19
+ const { isPrivateModule, isDdTrace } = require('./filter')
20
20
 
21
21
  let config
22
22
  const hardcodedSecretCh = dc.channel('datadog:secrets:result')
@@ -175,23 +175,18 @@ function enableRewriter (telemetryVerbosity) {
175
175
  shimmer.wrap(Module.prototype, '_compile', compileMethod => getCompileMethodFn(compileMethod))
176
176
  }
177
177
  }
178
+ enableEsmRewriter(telemetryVerbosity)
178
179
  }
179
-
180
- enableEsmRewriter(telemetryVerbosity)
181
180
  } catch (e) {
182
181
  log.error('Error enabling Rewriter', e)
183
182
  }
184
183
  }
185
184
 
186
185
  function isEsmConfigured () {
187
- const hasLoaderArg = isFlagPresent('--loader') || isFlagPresent('--experimental-loader')
188
- if (hasLoaderArg) return true
189
-
190
- // Fast path for common case when enabled
191
- if (require.cache[`${process.cwd()}/node_modules/import-in-the-middle/hook.js`]) {
192
- return true
193
- }
194
- return Object.keys(require.cache).some(file => file.endsWith('import-in-the-middle/hook.js'))
186
+ return (isFlagPresent('--loader') ||
187
+ isFlagPresent('--experimental-loader') ||
188
+ isFlagPresent('dd-trace/initialize.mjs')) ||
189
+ isFlagPresent('dd-trace/register.js')
195
190
  }
196
191
 
197
192
  let enableEsmRewriter = function (telemetryVerbosity) {
@@ -6,8 +6,8 @@ const { storage } = require('../../../../../datadog-core')
6
6
  const iastContextFunctions = require('../iast-context')
7
7
  const { EXECUTED_PROPAGATION } = require('../telemetry/iast-metric')
8
8
  const { isDebugAllowed } = require('../telemetry/verbosity')
9
- const { taintObject } = require('./operations-taint-object')
10
9
  const log = require('../../../log')
10
+ const { taintObject } = require('./operations-taint-object')
11
11
 
12
12
  const mathRandomCallCh = dc.channel('datadog:random:call')
13
13
  const evalCallCh = dc.channel('datadog:eval:call')
@@ -2,8 +2,8 @@
2
2
 
3
3
  const log = require('../../../log')
4
4
  const { Namespace } = require('../../../telemetry/metrics')
5
- const { addMetricsToSpan } = require('./span-tags')
6
5
  const { IAST_TRACE_METRIC_PREFIX } = require('../tags')
6
+ const { addMetricsToSpan } = require('./span-tags')
7
7
 
8
8
  const DD_IAST_METRICS_NAMESPACE = Symbol('_dd.iast.request.metrics.namespace')
9
9
 
@@ -1,12 +1,12 @@
1
1
  'use strict'
2
2
 
3
- const { LRUCache } = require('lru-cache')
4
- const vulnerabilitiesFormatter = require('./vulnerabilities-formatter')
5
- const { IAST_ENABLED_TAG_KEY, IAST_JSON_TAG_KEY } = require('./tags')
3
+ const { LRUCache } = require('../../../../../vendor/dist/lru-cache')
6
4
  const { keepTrace } = require('../../priority_sampler')
7
5
  const { reportStackTrace, getCallsiteFrames, canReportStackTrace, STACK_TRACE_NAMESPACES } = require('../stack_trace')
8
- const { getOriginalPathAndLineFromSourceMap } = require('./taint-tracking/rewriter')
9
6
  const { ASM } = require('../../standalone/product')
7
+ const vulnerabilitiesFormatter = require('./vulnerabilities-formatter')
8
+ const { IAST_ENABLED_TAG_KEY, IAST_JSON_TAG_KEY } = require('./tags')
9
+ const { getOriginalPathAndLineFromSourceMap } = require('./taint-tracking/rewriter')
10
10
 
11
11
  const VULNERABILITIES_KEY = 'vulnerabilities'
12
12
  const VULNERABILITY_HASHES_MAX_SIZE = 1000
@@ -1,8 +1,13 @@
1
1
  'use strict'
2
2
 
3
3
  const log = require('../log')
4
+ const web = require('../plugins/util/web')
5
+ const { extractIp } = require('../plugins/util/ip_extractor')
6
+ const { HTTP_CLIENT_IP } = require('../../../../ext/tags')
7
+ const { storage } = require('../../../datadog-core')
8
+ const { isInServerlessEnvironment } = require('../serverless')
4
9
  const RuleManager = require('./rule_manager')
5
- const remoteConfig = require('../remote_config')
10
+ const appsecRemoteConfig = require('./remote_config')
6
11
  const {
7
12
  bodyParser,
8
13
  cookieParser,
@@ -31,15 +36,10 @@ const addresses = require('./addresses')
31
36
  const Reporter = require('./reporter')
32
37
  const appsecTelemetry = require('./telemetry')
33
38
  const apiSecuritySampler = require('./api_security_sampler')
34
- const web = require('../plugins/util/web')
35
- const { extractIp } = require('../plugins/util/ip_extractor')
36
- const { HTTP_CLIENT_IP } = require('../../../../ext/tags')
37
39
  const { isBlocked, block, callBlockDelegation, setTemplates, getBlockingAction } = require('./blocking')
38
40
  const UserTracking = require('./user_tracking')
39
- const { storage } = require('../../../datadog-core')
40
41
  const graphql = require('./graphql')
41
42
  const rasp = require('./rasp')
42
- const { isInServerlessEnvironment } = require('../serverless')
43
43
 
44
44
  const responseAnalyzedSet = new WeakSet()
45
45
  const storedResponseHeaders = new WeakMap()
@@ -63,7 +63,7 @@ function enable (_config) {
63
63
 
64
64
  RuleManager.loadRules(_config.appsec)
65
65
 
66
- remoteConfig.enableWafUpdate(_config.appsec)
66
+ appsecRemoteConfig.enableWafUpdate(_config.appsec)
67
67
 
68
68
  Reporter.init(_config.appsec)
69
69
 
@@ -373,7 +373,7 @@ function disable () {
373
373
  graphql.disable()
374
374
  rasp.disable()
375
375
 
376
- remoteConfig.disableWafUpdate()
376
+ appsecRemoteConfig.disableWafUpdate()
377
377
 
378
378
  apiSecuritySampler.disable()
379
379
 
@@ -1,10 +1,10 @@
1
1
  'use strict'
2
2
 
3
3
  const { childProcessExecutionTracingChannel } = require('../channels')
4
- const { RULE_TYPES, handleResult } = require('./utils')
5
4
  const { storage } = require('../../../../datadog-core')
6
5
  const addresses = require('../addresses')
7
6
  const waf = require('../waf')
7
+ const { RULE_TYPES, handleResult } = require('./utils')
8
8
 
9
9
  let config
10
10
 
@@ -8,11 +8,11 @@ const {
8
8
  routerMiddlewareError
9
9
  } = require('../channels')
10
10
  const { block, registerBlockDelegation, isBlocked } = require('../blocking')
11
+ const { updateRaspRuleMatchMetricTags } = require('../telemetry')
11
12
  const ssrf = require('./ssrf')
12
13
  const sqli = require('./sql_injection')
13
14
  const lfi = require('./lfi')
14
15
  const cmdi = require('./command_injection')
15
- const { updateRaspRuleMatchMetricTags } = require('../telemetry')
16
16
 
17
17
  const { DatadogRaspAbortError } = require('./utils')
18
18
 
@@ -4,9 +4,9 @@ const { isAbsolute } = require('path')
4
4
 
5
5
  const { fsOperationStart, incomingHttpRequestStart, expressResponseRenderStart } = require('../channels')
6
6
  const { storage } = require('../../../../datadog-core')
7
- const { enable: enableFsPlugin, disable: disableFsPlugin, RASP_MODULE } = require('./fs-plugin')
8
7
  const { FS_OPERATION_PATH } = require('../addresses')
9
8
  const waf = require('../waf')
9
+ const { enable: enableFsPlugin, disable: disableFsPlugin, RASP_MODULE } = require('./fs-plugin')
10
10
  const { RULE_TYPES, handleResult } = require('./utils')
11
11
 
12
12
  let config
@@ -0,0 +1,10 @@
1
+ 'use strict'
2
+
3
+ // Remote Config product names used by ASM/WAF.
4
+ const ASM_WAF_PRODUCTS = ['ASM', 'ASM_DD', 'ASM_DATA']
5
+ const ASM_WAF_PRODUCTS_SET = new Set(ASM_WAF_PRODUCTS)
6
+
7
+ module.exports = {
8
+ ASM_WAF_PRODUCTS,
9
+ ASM_WAF_PRODUCTS_SET
10
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": "2.2",
3
3
  "metadata": {
4
- "rules_version": "1.15.1"
4
+ "rules_version": "1.16.1"
5
5
  },
6
6
  "rules": [
7
7
  {
@@ -4376,7 +4376,7 @@
4376
4376
  "address": "graphql.server.resolver"
4377
4377
  }
4378
4378
  ],
4379
- "regex": "java\\.lang\\.(?:runtime|processbuilder)",
4379
+ "regex": "\\bjava\\.lang\\.(?:runtime|processbuilder)\\b",
4380
4380
  "options": {
4381
4381
  "case_sensitive": true,
4382
4382
  "min_length": 17
@@ -8989,7 +8989,7 @@
8989
8989
  "event": false,
8990
8990
  "keep": false,
8991
8991
  "attributes": {
8992
- "_dd.appsec.api.jwt_alg": {
8992
+ "api.security.jwt.alg": {
8993
8993
  "address": "server.request.jwt",
8994
8994
  "key_path": [
8995
8995
  "header",
@@ -9091,6 +9091,233 @@
9091
9091
  }
9092
9092
  }
9093
9093
  },
9094
+ {
9095
+ "id": "api-010-100",
9096
+ "name": "Monitor redirections to GET targets",
9097
+ "tags": {
9098
+ "type": "api10",
9099
+ "category": "api_security",
9100
+ "confidence": "0",
9101
+ "module": "business-logic"
9102
+ },
9103
+ "min_version": "1.25.0",
9104
+ "conditions": [
9105
+ {
9106
+ "parameters": {
9107
+ "inputs": [
9108
+ {
9109
+ "address": "server.io.net.response.status"
9110
+ }
9111
+ ],
9112
+ "list": [
9113
+ "301",
9114
+ "302"
9115
+ ]
9116
+ },
9117
+ "operator": "exact_match"
9118
+ }
9119
+ ],
9120
+ "transformers": [],
9121
+ "output": {
9122
+ "event": false,
9123
+ "keep": false,
9124
+ "attributes": {
9125
+ "api.security.redirection.move_target": {
9126
+ "address": "server.io.net.response.headers",
9127
+ "key_path": [
9128
+ "Location"
9129
+ ]
9130
+ }
9131
+ }
9132
+ }
9133
+ },
9134
+ {
9135
+ "id": "api-010-110",
9136
+ "name": "Monitor redirections to POST targets",
9137
+ "tags": {
9138
+ "type": "api10",
9139
+ "category": "api_security",
9140
+ "confidence": "0",
9141
+ "module": "business-logic"
9142
+ },
9143
+ "min_version": "1.25.0",
9144
+ "conditions": [
9145
+ {
9146
+ "parameters": {
9147
+ "inputs": [
9148
+ {
9149
+ "address": "server.io.net.response.status"
9150
+ }
9151
+ ],
9152
+ "list": [
9153
+ "307",
9154
+ "308"
9155
+ ]
9156
+ },
9157
+ "operator": "exact_match"
9158
+ }
9159
+ ],
9160
+ "transformers": [],
9161
+ "output": {
9162
+ "event": false,
9163
+ "keep": false,
9164
+ "attributes": {
9165
+ "api.security.redirection.redirect_target": {
9166
+ "address": "server.io.net.response.headers",
9167
+ "key_path": [
9168
+ "Location"
9169
+ ]
9170
+ }
9171
+ }
9172
+ }
9173
+ },
9174
+ {
9175
+ "id": "api-010-200",
9176
+ "name": "Large response bodies in downstream network calls",
9177
+ "tags": {
9178
+ "type": "api10",
9179
+ "category": "api_security",
9180
+ "confidence": "0",
9181
+ "module": "business-logic"
9182
+ },
9183
+ "min_version": "1.25.0",
9184
+ "conditions": [
9185
+ {
9186
+ "parameters": {
9187
+ "inputs": [
9188
+ {
9189
+ "address": "server.io.net.response.headers",
9190
+ "key_path": [
9191
+ "content-length"
9192
+ ]
9193
+ }
9194
+ ],
9195
+ "regex": "\\d{7,}",
9196
+ "options": {
9197
+ "case_sensitive": true,
9198
+ "min_length": 7
9199
+ }
9200
+ },
9201
+ "operator": "match_regex"
9202
+ }
9203
+ ],
9204
+ "transformers": [],
9205
+ "output": {
9206
+ "event": false,
9207
+ "keep": false,
9208
+ "attributes": {
9209
+ "api.security.large_response.length": {
9210
+ "address": "server.io.net.response.headers",
9211
+ "key_path": [
9212
+ "content-length"
9213
+ ]
9214
+ },
9215
+ "api.security.large_response.url": {
9216
+ "address": "server.io.net.url"
9217
+ }
9218
+ }
9219
+ }
9220
+ },
9221
+ {
9222
+ "id": "api-010-300",
9223
+ "name": "Secrets transmitted in downstream URL parameters",
9224
+ "tags": {
9225
+ "type": "api10",
9226
+ "category": "api_security",
9227
+ "confidence": "0",
9228
+ "module": "business-logic"
9229
+ },
9230
+ "min_version": "1.25.0",
9231
+ "conditions": [
9232
+ {
9233
+ "parameters": {
9234
+ "inputs": [
9235
+ {
9236
+ "address": "server.io.net.url"
9237
+ }
9238
+ ],
9239
+ "regex": "[?&](?:(?:api|access)?(_)?(?:key|secret|token|password|passwd|pwd))=",
9240
+ "options": {
9241
+ "case_sensitive": false
9242
+ }
9243
+ },
9244
+ "operator": "match_regex"
9245
+ }
9246
+ ],
9247
+ "transformers": [],
9248
+ "output": {
9249
+ "event": false,
9250
+ "keep": false,
9251
+ "attributes": {
9252
+ "api.security.secret.disclosed_in_url_params": {
9253
+ "value": 1
9254
+ }
9255
+ }
9256
+ }
9257
+ },
9258
+ {
9259
+ "id": "api-010-400",
9260
+ "name": "Unauthenticated MCP access",
9261
+ "tags": {
9262
+ "type": "api10",
9263
+ "category": "api_security",
9264
+ "confidence": "0",
9265
+ "module": "business-logic"
9266
+ },
9267
+ "min_version": "1.25.0",
9268
+ "conditions": [
9269
+ {
9270
+ "parameters": {
9271
+ "inputs": [
9272
+ {
9273
+ "address": "server.io.net.url"
9274
+ }
9275
+ ],
9276
+ "regex": "/mcp/(?:tools|resources)/",
9277
+ "options": {
9278
+ "case_sensitive": false
9279
+ }
9280
+ },
9281
+ "operator": "match_regex"
9282
+ },
9283
+ {
9284
+ "parameters": {
9285
+ "inputs": [
9286
+ {
9287
+ "address": "server.io.net.request.headers",
9288
+ "key_path": [
9289
+ "authorization"
9290
+ ]
9291
+ }
9292
+ ]
9293
+ },
9294
+ "operator": "!exists"
9295
+ },
9296
+ {
9297
+ "parameters": {
9298
+ "inputs": [
9299
+ {
9300
+ "address": "server.io.net.response.status"
9301
+ }
9302
+ ],
9303
+ "list": [
9304
+ "401"
9305
+ ]
9306
+ },
9307
+ "operator": "!exact_match"
9308
+ }
9309
+ ],
9310
+ "transformers": [],
9311
+ "output": {
9312
+ "event": false,
9313
+ "keep": false,
9314
+ "attributes": {
9315
+ "api.security.mcp.broken_auth": {
9316
+ "value": 1
9317
+ }
9318
+ }
9319
+ }
9320
+ },
9094
9321
  {
9095
9322
  "id": "ua0-600-551",
9096
9323
  "name": "Datadog test scanner - scalar trace-tagging version: user-agent",