Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exploit prevention command injection #4966

Merged
merged 13 commits into from
Dec 19, 2024
Merged

Exploit prevention command injection #4966

merged 13 commits into from
Dec 19, 2024

Conversation

IlyasShabi
Copy link
Contributor

@IlyasShabi IlyasShabi commented Dec 3, 2024

What does this PR do?

We already support exploit prevention for shell injection. This PR extends the support to child process functions that do not use a shell.
this will call the waf and block the operation and request if needed

Motivation

Plugin Checklist

Additional Notes

https://datadoghq.atlassian.net/browse/APPSEC-55085

Copy link

github-actions bot commented Dec 3, 2024

Overall package size

Self size: 8.39 MB
Deduped: 94.86 MB
No deduping: 95.37 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.3.0 | 29.43 MB | 29.43 MB | | @datadog/native-appsec | 8.3.0 | 19.37 MB | 19.38 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.6.1 | 2.59 MB | 2.73 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link

pr-commenter bot commented Dec 3, 2024

Benchmarks

Benchmark execution time: 2024-12-19 10:59:15

Comparing candidate commit 9a6ea53 in PR branch exploit-cmdi with baseline commit a9a1b1d in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 776 metrics, 22 unstable metrics.

Copy link

codecov bot commented Dec 17, 2024

Codecov Report

Attention: Patch coverage is 95.65217% with 1 line in your changes missing coverage. Please review.

Project coverage is 93.78%. Comparing base (823cfd4) to head (283c882).
Report is 43 commits behind head on master.

Files with missing lines Patch % Lines
packages/dd-trace/src/appsec/telemetry.js 66.66% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           master    #4966       +/-   ##
===========================================
+ Coverage   65.05%   93.78%   +28.72%     
===========================================
  Files         304      111      -193     
  Lines       13950     3570    -10380     
===========================================
- Hits         9075     3348     -5727     
+ Misses       4875      222     -4653     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@IlyasShabi IlyasShabi marked this pull request as ready for review December 17, 2024 13:22
@IlyasShabi IlyasShabi requested review from a team as code owners December 17, 2024 13:22
@@ -174,15 +174,13 @@ module.exports = class FakeAgent extends EventEmitter {
msgCount += 1
try {
fn(msg)
if (msgCount === expectedMessageCount) {
if (resolveAtFirstSuccess || msgCount === expectedMessageCount) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are changing the previous behaviour here.
if fn(msg) throws an Error, we are not going to remove the listener if msgCount === expectedMessageCount

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried to align it with assertMessageReceived, but yes you're right.
I'll update both functions to make sure we have consistent behavior

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iunanua Adding resolveAtFirstSuccess did not fix the telemetry test issue, so I reverted the changes and improved the tests to ensure that telemetry was tested on the appsec namespace

@IlyasShabi IlyasShabi marked this pull request as draft December 17, 2024 20:36
@IlyasShabi IlyasShabi marked this pull request as ready for review December 18, 2024 10:47
uurien
uurien previously approved these changes Dec 18, 2024
This reverts commit 4a3d766.
@IlyasShabi IlyasShabi marked this pull request as ready for review December 19, 2024 10:48
@IlyasShabi IlyasShabi merged commit e36f26b into master Dec 19, 2024
305 checks passed
@IlyasShabi IlyasShabi deleted the exploit-cmdi branch December 19, 2024 16:56
rochdev pushed a commit that referenced this pull request Dec 19, 2024
* Exploit prevention command injection

* fix spawnSync abort error test

* add telemetry tests

* fix sql injection tests on postgres

* add different test

* revert spawnSync changes

* fix linter

* add spawnSync tests

* remove spawnSync not needed test

* fix cmdi params

* Revert "fix cmdi params"

This reverts commit 4a3d766.
@rochdev rochdev mentioned this pull request Dec 19, 2024
rochdev pushed a commit that referenced this pull request Dec 19, 2024
* Exploit prevention command injection

* fix spawnSync abort error test

* add telemetry tests

* fix sql injection tests on postgres

* add different test

* revert spawnSync changes

* fix linter

* add spawnSync tests

* remove spawnSync not needed test

* fix cmdi params

* Revert "fix cmdi params"

This reverts commit 4a3d766.
@rochdev rochdev mentioned this pull request Dec 19, 2024
rochdev pushed a commit that referenced this pull request Dec 19, 2024
* Exploit prevention command injection

* fix spawnSync abort error test

* add telemetry tests

* fix sql injection tests on postgres

* add different test

* revert spawnSync changes

* fix linter

* add spawnSync tests

* remove spawnSync not needed test

* fix cmdi params

* Revert "fix cmdi params"

This reverts commit 4a3d766.
rochdev pushed a commit that referenced this pull request Dec 19, 2024
* Exploit prevention command injection

* fix spawnSync abort error test

* add telemetry tests

* fix sql injection tests on postgres

* add different test

* revert spawnSync changes

* fix linter

* add spawnSync tests

* remove spawnSync not needed test

* fix cmdi params

* Revert "fix cmdi params"

This reverts commit 4a3d766.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants