Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2020-8835 PoC — Linux kernel 缓冲区错误漏洞

Source
Associated Vulnerability
Title:Linux kernel 缓冲区错误漏洞 (CVE-2020-8835)
Description:Linux kernel是美国Linux基金会发布的开源操作系统Linux所使用的内核。 Linux kernel 5.5.0及更高版本中存在安全漏洞。攻击者可利用该漏洞在系统上执行任意代码。
Readme
# 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
```
File Snapshot

[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
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. If the original source is unavailable, please email f.jinxu#gmail.com for a local snapshot (replace # with @).
    3. Shenlong has snapshotted the POC code for you. To support long-term maintenance, please consider donating. Thank you for your support.