# INF8602-CVE-2020-8835
## Testing the kernel exploit
1. Testing without Docker
```bash
cd ../app
npm i
node server.js
```
2. Testing with Docker to test defensive capability
```bash
# Make sure to be in the same directory as the Dockerfile
# Build the Docker image
docker build . -t inf8602/node-web-app
# Your docker image should be listed by Docker
docker images
# Run the image
docker run -p 8080:8080 -d inf8602/node-web-app
# Print the output of the app
docker ps #get the container id
docker logs <container id> # print app output
# Example
# Hello World
```
3. Testing the fix (disabling priviledge bpf)
```bash
sudo sysctl kernel.unprivileged_bpf_disabled=1
cd ../app
npm i
node server.js
```
4. Testing with Dev containers
```
Open in Container
```
[4.0K] /data/pocs/f9ef9aa02907a6aa4bbf4187320e31534923979f
├── [4.0K] app
│ ├── [4.0K] node_modules
│ │ ├── [4.0K] accepts
│ │ │ ├── [5.0K] HISTORY.md
│ │ │ ├── [5.1K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [4.0K] README.md
│ │ ├── [4.0K] array-flatten
│ │ │ ├── [1.2K] array-flatten.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 879] package.json
│ │ │ └── [1.2K] README.md
│ │ ├── [4.0K] body-parser
│ │ │ ├── [ 16K] HISTORY.md
│ │ │ ├── [2.6K] index.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [4.2K] read.js
│ │ │ │ └── [4.0K] types
│ │ │ │ ├── [4.9K] json.js
│ │ │ │ ├── [1.8K] raw.js
│ │ │ │ ├── [2.2K] text.js
│ │ │ │ └── [5.7K] urlencoded.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.4K] package.json
│ │ │ ├── [ 18K] README.md
│ │ │ └── [1.2K] SECURITY.md
│ │ ├── [4.0K] bytes
│ │ │ ├── [1.7K] History.md
│ │ │ ├── [3.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 959] package.json
│ │ │ └── [4.7K] Readme.md
│ │ ├── [4.0K] call-bind
│ │ │ ├── [ 413] callBound.js
│ │ │ ├── [3.3K] CHANGELOG.md
│ │ │ ├── [1.3K] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [1.8K] package.json
│ │ │ ├── [ 48] README.md
│ │ │ └── [4.0K] test
│ │ │ ├── [2.3K] callBound.js
│ │ │ └── [3.3K] index.js
│ │ ├── [4.0K] content-disposition
│ │ │ ├── [1020] HISTORY.md
│ │ │ ├── [ 10K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ └── [5.1K] README.md
│ │ ├── [4.0K] content-type
│ │ │ ├── [ 523] HISTORY.md
│ │ │ ├── [4.9K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.0K] package.json
│ │ │ └── [2.7K] README.md
│ │ ├── [4.0K] cookie
│ │ │ ├── [3.0K] HISTORY.md
│ │ │ ├── [5.1K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ ├── [ 11K] README.md
│ │ │ └── [1.2K] SECURITY.md
│ │ ├── [4.0K] cookie-signature
│ │ │ ├── [ 695] History.md
│ │ │ ├── [1.2K] index.js
│ │ │ ├── [ 492] package.json
│ │ │ └── [1.5K] Readme.md
│ │ ├── [4.0K] debug
│ │ │ ├── [ 11K] CHANGELOG.md
│ │ │ ├── [ 321] component.json
│ │ │ ├── [1.7K] karma.conf.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.0K] Makefile
│ │ │ ├── [ 40] node.js
│ │ │ ├── [1.1K] package.json
│ │ │ ├── [ 17K] README.md
│ │ │ └── [4.0K] src
│ │ │ ├── [4.6K] browser.js
│ │ │ ├── [4.3K] debug.js
│ │ │ ├── [ 263] index.js
│ │ │ ├── [ 373] inspector-log.js
│ │ │ └── [5.9K] node.js
│ │ ├── [4.0K] depd
│ │ │ ├── [2.2K] History.md
│ │ │ ├── [ 11K] index.js
│ │ │ ├── [4.0K] lib
│ │ │ │ └── [4.0K] browser
│ │ │ │ └── [1.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.3K] package.json
│ │ │ └── [9.8K] Readme.md
│ │ ├── [4.0K] destroy
│ │ │ ├── [4.2K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [2.4K] README.md
│ │ ├── [4.0K] ee-first
│ │ │ ├── [1.6K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 859] package.json
│ │ │ └── [2.6K] README.md
│ │ ├── [4.0K] encodeurl
│ │ │ ├── [ 238] HISTORY.md
│ │ │ ├── [1.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [3.8K] README.md
│ │ ├── [4.0K] escape-html
│ │ │ ├── [1.3K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 434] package.json
│ │ │ └── [ 707] Readme.md
│ │ ├── [4.0K] etag
│ │ │ ├── [1.7K] HISTORY.md
│ │ │ ├── [2.4K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.3K] package.json
│ │ │ └── [4.1K] README.md
│ │ ├── [4.0K] express
│ │ │ ├── [110K] History.md
│ │ │ ├── [ 224] index.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [ 14K] application.js
│ │ │ │ ├── [2.4K] express.js
│ │ │ │ ├── [4.0K] middleware
│ │ │ │ │ ├── [ 853] init.js
│ │ │ │ │ └── [ 885] query.js
│ │ │ │ ├── [ 12K] request.js
│ │ │ │ ├── [ 27K] response.js
│ │ │ │ ├── [4.0K] router
│ │ │ │ │ ├── [ 15K] index.js
│ │ │ │ │ ├── [3.2K] layer.js
│ │ │ │ │ └── [4.2K] route.js
│ │ │ │ ├── [5.8K] utils.js
│ │ │ │ └── [3.2K] view.js
│ │ │ ├── [1.2K] LICENSE
│ │ │ ├── [2.6K] package.json
│ │ │ └── [5.3K] Readme.md
│ │ ├── [4.0K] finalhandler
│ │ │ ├── [4.2K] HISTORY.md
│ │ │ ├── [6.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ ├── [4.0K] README.md
│ │ │ └── [1.2K] SECURITY.md
│ │ ├── [4.0K] forwarded
│ │ │ ├── [ 400] HISTORY.md
│ │ │ ├── [1.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [1.6K] README.md
│ │ ├── [4.0K] fresh
│ │ │ ├── [1.5K] HISTORY.md
│ │ │ ├── [2.6K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.3K] package.json
│ │ │ └── [3.3K] README.md
│ │ ├── [4.0K] function-bind
│ │ │ ├── [1.4K] implementation.js
│ │ │ ├── [ 126] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [1.5K] package.json
│ │ │ ├── [1.5K] README.md
│ │ │ └── [4.0K] test
│ │ │ └── [8.8K] index.js
│ │ ├── [4.0K] get-intrinsic
│ │ │ ├── [9.0K] CHANGELOG.md
│ │ │ ├── [ 13K] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [2.3K] package.json
│ │ │ ├── [2.7K] README.md
│ │ │ └── [4.0K] test
│ │ │ └── [8.6K] GetIntrinsic.js
│ │ ├── [4.0K] has
│ │ │ ├── [1.0K] LICENSE-MIT
│ │ │ ├── [1011] package.json
│ │ │ ├── [ 239] README.md
│ │ │ ├── [4.0K] src
│ │ │ │ └── [ 129] index.js
│ │ │ └── [4.0K] test
│ │ │ └── [ 331] index.js
│ │ ├── [4.0K] has-symbols
│ │ │ ├── [7.5K] CHANGELOG.md
│ │ │ ├── [ 420] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [2.6K] package.json
│ │ │ ├── [2.0K] README.md
│ │ │ ├── [1.7K] shams.js
│ │ │ └── [4.0K] test
│ │ │ ├── [ 654] index.js
│ │ │ ├── [4.0K] shams
│ │ │ │ ├── [ 723] core-js.js
│ │ │ │ └── [ 686] get-own-property-symbols.js
│ │ │ └── [2.0K] tests.js
│ │ ├── [4.0K] http-errors
│ │ │ ├── [3.9K] HISTORY.md
│ │ │ ├── [6.2K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.3K] package.json
│ │ │ └── [5.8K] README.md
│ │ ├── [4.0K] iconv-lite
│ │ │ ├── [4.2K] Changelog.md
│ │ │ ├── [4.0K] encodings
│ │ │ │ ├── [ 21K] dbcs-codec.js
│ │ │ │ ├── [8.1K] dbcs-data.js
│ │ │ │ ├── [ 710] index.js
│ │ │ │ ├── [6.0K] internal.js
│ │ │ │ ├── [2.1K] sbcs-codec.js
│ │ │ │ ├── [ 31K] sbcs-data-generated.js
│ │ │ │ ├── [4.6K] sbcs-data.js
│ │ │ │ ├── [4.0K] tables
│ │ │ │ │ ├── [ 17K] big5-added.json
│ │ │ │ │ ├── [ 46K] cp936.json
│ │ │ │ │ ├── [ 37K] cp949.json
│ │ │ │ │ ├── [ 41K] cp950.json
│ │ │ │ │ ├── [ 40K] eucjp.json
│ │ │ │ │ ├── [2.2K] gb18030-ranges.json
│ │ │ │ │ ├── [1.2K] gbk-added.json
│ │ │ │ │ └── [ 23K] shiftjis.json
│ │ │ │ ├── [4.9K] utf16.js
│ │ │ │ └── [9.0K] utf7.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [1.1K] bom-handling.js
│ │ │ │ ├── [8.5K] extend-node.js
│ │ │ │ ├── [ 982] index.d.ts
│ │ │ │ ├── [5.0K] index.js
│ │ │ │ └── [3.3K] streams.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ └── [6.4K] README.md
│ │ ├── [ 13] inf8602-cve-2020-8835 -> ../../package
│ │ ├── [4.0K] inherits
│ │ │ ├── [ 753] inherits_browser.js
│ │ │ ├── [ 250] inherits.js
│ │ │ ├── [ 749] LICENSE
│ │ │ ├── [ 581] package.json
│ │ │ └── [1.6K] README.md
│ │ ├── [4.0K] ipaddr.js
│ │ │ ├── [9.5K] ipaddr.min.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [ 19K] ipaddr.js
│ │ │ │ └── [2.9K] ipaddr.js.d.ts
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 719] package.json
│ │ │ └── [8.1K] README.md
│ │ ├── [4.0K] media-typer
│ │ │ ├── [ 461] HISTORY.md
│ │ │ ├── [6.2K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 759] package.json
│ │ │ └── [2.3K] README.md
│ │ ├── [4.0K] merge-descriptors
│ │ │ ├── [ 363] HISTORY.md
│ │ │ ├── [1.2K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 931] package.json
│ │ │ └── [1.2K] README.md
│ │ ├── [4.0K] methods
│ │ │ ├── [ 427] HISTORY.md
│ │ │ ├── [1.0K] index.js
│ │ │ ├── [1.2K] LICENSE
│ │ │ ├── [ 947] package.json
│ │ │ └── [1.7K] README.md
│ │ ├── [4.0K] mime
│ │ │ ├── [9.3K] CHANGELOG.md
│ │ │ ├── [ 149] cli.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [2.7K] mime.js
│ │ │ ├── [ 933] package.json
│ │ │ ├── [2.1K] README.md
│ │ │ ├── [4.0K] src
│ │ │ │ ├── [1.3K] build.js
│ │ │ │ └── [2.3K] test.js
│ │ │ └── [ 31K] types.json
│ │ ├── [4.0K] mime-db
│ │ │ ├── [182K] db.json
│ │ │ ├── [ 12K] HISTORY.md
│ │ │ ├── [ 189] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.6K] package.json
│ │ │ └── [4.0K] README.md
│ │ ├── [4.0K] mime-types
│ │ │ ├── [8.6K] HISTORY.md
│ │ │ ├── [3.6K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [3.4K] README.md
│ │ ├── [4.0K] ms
│ │ │ ├── [2.7K] index.js
│ │ │ ├── [1.1K] license.md
│ │ │ ├── [ 704] package.json
│ │ │ └── [1.7K] readme.md
│ │ ├── [4.0K] negotiator
│ │ │ ├── [2.4K] HISTORY.md
│ │ │ ├── [2.4K] index.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [3.0K] charset.js
│ │ │ │ ├── [3.4K] encoding.js
│ │ │ │ ├── [3.3K] language.js
│ │ │ │ └── [5.2K] mediaType.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 993] package.json
│ │ │ └── [4.8K] README.md
│ │ ├── [4.0K] object-inspect
│ │ │ ├── [ 31K] CHANGELOG.md
│ │ │ ├── [4.0K] example
│ │ │ │ ├── [ 391] all.js
│ │ │ │ ├── [ 116] circular.js
│ │ │ │ ├── [ 126] fn.js
│ │ │ │ └── [ 251] inspect.js
│ │ │ ├── [ 18K] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [2.6K] package.json
│ │ │ ├── [ 365] package-support.json
│ │ │ ├── [2.9K] readme.markdown
│ │ │ ├── [4.0K] test
│ │ │ │ ├── [2.0K] bigint.js
│ │ │ │ ├── [4.0K] browser
│ │ │ │ │ └── [ 416] dom.js
│ │ │ │ ├── [ 451] circular.js
│ │ │ │ ├── [ 400] deep.js
│ │ │ │ ├── [1.5K] element.js
│ │ │ │ ├── [1.5K] err.js
│ │ │ │ ├── [ 683] fakes.js
│ │ │ │ ├── [2.2K] fn.js
│ │ │ │ ├── [ 514] has.js
│ │ │ │ ├── [ 255] holes.js
│ │ │ │ ├── [6.5K] indent-option.js
│ │ │ │ ├── [4.8K] inspect.js
│ │ │ │ ├── [ 268] lowbyte.js
│ │ │ │ ├── [2.3K] number.js
│ │ │ │ ├── [ 933] quoteStyle.js
│ │ │ │ ├── [1.5K] toStringTag.js
│ │ │ │ ├── [ 302] undef.js
│ │ │ │ └── [6.9K] values.js
│ │ │ ├── [ 534] test-core-js.js
│ │ │ └── [ 42] util.inspect.js
│ │ ├── [4.0K] on-finished
│ │ │ ├── [1.8K] HISTORY.md
│ │ │ ├── [4.3K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.0K] package.json
│ │ │ └── [5.0K] README.md
│ │ ├── [4.0K] parseurl
│ │ │ ├── [1.0K] HISTORY.md
│ │ │ ├── [2.7K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ └── [4.0K] README.md
│ │ ├── [4.0K] path-to-regexp
│ │ │ ├── [ 694] History.md
│ │ │ ├── [3.2K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 554] package.json
│ │ │ └── [1.1K] Readme.md
│ │ ├── [4.0K] proxy-addr
│ │ │ ├── [2.9K] HISTORY.md
│ │ │ ├── [5.9K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ └── [4.0K] README.md
│ │ ├── [4.0K] qs
│ │ │ ├── [ 29K] CHANGELOG.md
│ │ │ ├── [4.0K] dist
│ │ │ │ └── [ 68K] qs.js
│ │ │ ├── [4.0K] lib
│ │ │ │ ├── [ 476] formats.js
│ │ │ │ ├── [ 211] index.js
│ │ │ │ ├── [9.2K] parse.js
│ │ │ │ ├── [ 10K] stringify.js
│ │ │ │ └── [6.7K] utils.js
│ │ │ ├── [1.6K] LICENSE.md
│ │ │ ├── [2.3K] package.json
│ │ │ ├── [ 20K] README.md
│ │ │ └── [4.0K] test
│ │ │ ├── [ 35K] parse.js
│ │ │ ├── [ 34K] stringify.js
│ │ │ └── [5.0K] utils.js
│ │ ├── [4.0K] range-parser
│ │ │ ├── [ 917] HISTORY.md
│ │ │ ├── [2.8K] index.js
│ │ │ ├── [1.2K] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ └── [2.2K] README.md
│ │ ├── [4.0K] raw-body
│ │ │ ├── [5.8K] HISTORY.md
│ │ │ ├── [2.2K] index.d.ts
│ │ │ ├── [6.7K] index.js
│ │ │ ├── [1.2K] LICENSE
│ │ │ ├── [1.3K] package.json
│ │ │ ├── [6.4K] README.md
│ │ │ └── [1.2K] SECURITY.md
│ │ ├── [4.0K] safe-buffer
│ │ │ ├── [8.5K] index.d.ts
│ │ │ ├── [1.6K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.0K] package.json
│ │ │ └── [ 19K] README.md
│ │ ├── [4.0K] safer-buffer
│ │ │ ├── [1.4K] dangerous.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 822] package.json
│ │ │ ├── [ 12K] Porting-Buffer.md
│ │ │ ├── [8.1K] Readme.md
│ │ │ ├── [2.1K] safer.js
│ │ │ └── [ 15K] tests.js
│ │ ├── [4.0K] send
│ │ │ ├── [ 13K] HISTORY.md
│ │ │ ├── [ 23K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [4.0K] node_modules
│ │ │ │ └── [4.0K] ms
│ │ │ │ ├── [3.0K] index.js
│ │ │ │ ├── [1.1K] license.md
│ │ │ │ ├── [ 732] package.json
│ │ │ │ └── [1.8K] readme.md
│ │ │ ├── [1.5K] package.json
│ │ │ ├── [9.3K] README.md
│ │ │ └── [1.1K] SECURITY.md
│ │ ├── [4.0K] serve-static
│ │ │ ├── [ 10K] HISTORY.md
│ │ │ ├── [4.5K] index.js
│ │ │ ├── [1.2K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [7.6K] README.md
│ │ ├── [4.0K] setprototypeof
│ │ │ ├── [ 93] index.d.ts
│ │ │ ├── [ 407] index.js
│ │ │ ├── [ 727] LICENSE
│ │ │ ├── [1.2K] package.json
│ │ │ ├── [ 844] README.md
│ │ │ └── [4.0K] test
│ │ │ └── [ 690] index.js
│ │ ├── [4.0K] side-channel
│ │ │ ├── [5.5K] CHANGELOG.md
│ │ │ ├── [3.3K] index.js
│ │ │ ├── [1.0K] LICENSE
│ │ │ ├── [1.6K] package.json
│ │ │ ├── [ 98] README.md
│ │ │ └── [4.0K] test
│ │ │ └── [1.7K] index.js
│ │ ├── [4.0K] statuses
│ │ │ ├── [1.7K] codes.json
│ │ │ ├── [1.5K] HISTORY.md
│ │ │ ├── [2.5K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.4K] package.json
│ │ │ └── [3.5K] README.md
│ │ ├── [4.0K] toidentifier
│ │ │ ├── [ 128] HISTORY.md
│ │ │ ├── [ 504] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [1.8K] README.md
│ │ ├── [4.0K] type-is
│ │ │ ├── [5.3K] HISTORY.md
│ │ │ ├── [5.4K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [1.1K] package.json
│ │ │ └── [5.1K] README.md
│ │ ├── [4.0K] unpipe
│ │ │ ├── [ 59] HISTORY.md
│ │ │ ├── [1.1K] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 770] package.json
│ │ │ └── [1.2K] README.md
│ │ ├── [4.0K] utils-merge
│ │ │ ├── [ 381] index.js
│ │ │ ├── [1.1K] LICENSE
│ │ │ ├── [ 857] package.json
│ │ │ └── [1.3K] README.md
│ │ └── [4.0K] vary
│ │ ├── [ 792] HISTORY.md
│ │ ├── [2.9K] index.js
│ │ ├── [1.1K] LICENSE
│ │ ├── [1.2K] package.json
│ │ └── [2.7K] README.md
│ ├── [ 294] package.json
│ ├── [ 22K] package-lock.json
│ ├── [ 27] README.md
│ └── [ 417] server.js
├── [ 373] Dockerfile
├── [4.0K] package
│ ├── [140K] bpf.h
│ ├── [ 665] index.js
│ ├── [ 17K] main.c
│ ├── [ 607] package.json
│ ├── [ 356] README.md
│ └── [ 578] script.sh
├── [ 762] README.md
└── [4.0K] upload-server
├── [ 464] index.js
├── [ 312] package.json
└── [ 69] README.md
92 directories, 402 files