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

Template injection vulnerability detection in handlebars and pug #4827

Merged
merged 8 commits into from
Nov 15, 2024

Conversation

IlyasShabi
Copy link
Contributor

@IlyasShabi IlyasShabi commented Oct 25, 2024

What does this PR do?

Add support to server Template injection using handlebars and pug

Plugin Checklist

Additional Notes

Copy link

github-actions bot commented Oct 25, 2024

Overall package size

Self size: 7.96 MB
Deduped: 64.98 MB
No deduping: 65.32 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.2.1 | 19.18 MB | 19.19 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.5.0 | 2.51 MB | 2.65 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 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 | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 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 | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 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 | | 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 | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 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 Oct 25, 2024

Benchmarks

Benchmark execution time: 2024-11-12 09:14:00

Comparing candidate commit 04a6184 in PR branch template-injection-handlebars with baseline commit 0a411ee in branch master.

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

@IlyasShabi IlyasShabi force-pushed the template-injection-handlebars branch 2 times, most recently from 5d7462b to 08105c7 Compare October 28, 2024 08:06
Copy link

codecov bot commented Oct 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 86.88%. Comparing base (0b4dab7) to head (d22bf54).
Report is 3 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #4827      +/-   ##
==========================================
- Coverage   93.86%   86.88%   -6.98%     
==========================================
  Files         107       10      -97     
  Lines        3373      511    -2862     
==========================================
- Hits         3166      444    -2722     
+ Misses        207       67     -140     

☔ 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 October 28, 2024 09:37
@IlyasShabi IlyasShabi requested review from a team as code owners October 28, 2024 09:37
@IlyasShabi IlyasShabi force-pushed the template-injection-handlebars branch 4 times, most recently from 3cbe3cd to 8b78a14 Compare October 29, 2024 12:59
@CarlesDD
Copy link
Contributor

CarlesDD commented Nov 6, 2024

In Handlebars there is one more vulnerable point that this PR is not covering: registerPartial.

Let's take the following code as an example:

  Handlebars.registerPartial('vulnerablePartial', req.query.partial).
  const templateSource = `{{> vulnerablePartial }}`
  const template = Handlebars.compile(templateSource)

This code is vulnerable to SSTi, but the tests I have run do not detect the vulnerability (and it is logical because registerPartial never calls compile or precompile).

CarlesDD
CarlesDD previously approved these changes Nov 7, 2024
uurien
uurien previously approved these changes Nov 7, 2024
@IlyasShabi IlyasShabi dismissed stale reviews from uurien and CarlesDD via 0408305 November 7, 2024 15:18
- run: yarn test:appsec:plugins:ci
- uses: ./.github/actions/node/latest
- run: yarn test:appsec:plugins:ci
- uses: codecov/codecov-action@v3

Choose a reason for hiding this comment

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

🟠 Code Vulnerability

Workflow depends on a GitHub actions pinned by tag (...read more)

View in Datadog  Leave us feedback  Documentation

@IlyasShabi IlyasShabi merged commit 985cb1d into master Nov 15, 2024
208 checks passed
@IlyasShabi IlyasShabi deleted the template-injection-handlebars branch November 15, 2024 13:56
nhulston pushed a commit that referenced this pull request Nov 15, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
rochdev pushed a commit that referenced this pull request Nov 15, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
@rochdev rochdev mentioned this pull request Nov 15, 2024
rochdev pushed a commit that referenced this pull request Nov 15, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
@rochdev rochdev mentioned this pull request Nov 15, 2024
rochdev pushed a commit that referenced this pull request Nov 15, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
rochdev pushed a commit that referenced this pull request Nov 19, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
rochdev pushed a commit that referenced this pull request Nov 19, 2024
* Template injection vulnerability detection in handlebars

* template injection vulnerability detection in pug

* fix lint and naming issues

* create separate job for template injection

* add support to registerPartial function

* add tests for pug render function
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.

4 participants