ããã«ã¡ã¯ãã³ã¼ãã¬ã¼ãæ¬é¨ ãµã¤ãã¼ã»ãã¥ãªãã£æ¨é²é¨ã®è¿ã§ãã
2024/6ã« Amazon Inspector ã GitHub Actions ã§ã®ã³ã³ããã¤ã¡ã¼ã¸ã¹ãã£ã³ããµãã¼ãããã¨ã®ã¢ãã¦ã³ã¹ãããã¾ãããã³ã³ããã¤ã¡ã¼ã¸ã®èå¼±æ§ã¹ãã£ã³ã«æ¢ã«Trivyãå©ç¨ãã¦ããæ¹ãå¤ãã¨æãã¾ãããå¥ã®é¸æè¢ã¨ã㦠Inspector ã«ããã¹ãã£ã³ã試ãã¦ã¿ã¾ããã
ã¾ããå®ã¯ã³ã³ããã¤ã¡ã¼ã¸ã®ã¹ãã£ã³ã ãã§ã¯ãªããè¨èªããã±ã¼ã¸ã®ãã¼ã¸ã§ã³ãã¡ã¤ã«ãDockerfileãéçè§£æãããã¨ãå¯è½ã®ãããããããã£ã¦ã¿ã¾ããã
- ä»çµã¿
- ã¢ã¯ã·ã§ã³ãç´è§£ã
- ãªãã¸ããªå ã®ãã¡ã¤ã«ãã¹ãã£ã³ããå ´å
- ã³ã³ããã¤ã¡ã¼ã¸ãã¹ãã£ã³ããå ´å
- ãªãã¸ããªå ã®ãã¡ã¤ã«ã¹ãã£ã³ã¨ãã³ã³ããã¤ã¡ã¼ã¸ã¹ãã£ã³ã®ä½¿ãåãã«ã¤ãã¦
- ã¾ã¨ã
ä»çµã¿
å ¬å¼ããã¥ã¡ã³ãï¼ https://docs.aws.amazon.com/inspector/latest/user/scanning-cicd.html
ã¢ã¯ã·ã§ã³ãaws-actions/vulnerability-scan-github-action-for-amazon-inspectorããå©ç¨ãã¾ããä»çµã¿ã¯ä»¥ä¸ã§ãã
- Amazon Inspector SBOM Generator ã使ããCycloneDX å½¢å¼ã® SBOM ãçæãã
- çæãã SBOM ã Amazon Inspector ã«éä¿¡ããèå¼±æ§ãè§£æãã
- ãã®ãã AWS ã¢ã«ã¦ã³ãããã³
inspector-scan:ScanSbom
権éãå¿ è¦
- ãã®ãã AWS ã¢ã«ã¦ã³ãããã³
æ°ã«ãªãã®ã¯ä½ã«åºã¥ã㦠SBOM ãçæãããã§ããã4ã¤ã®é¸æè¢ãããã¾ãã
- ãªãã¸ããªå ã®ãã¡ã¤ã«
- ã³ã³ããã¤ã¡ã¼ã¸
- ã³ã³ãã¤ã«å¾ã®GoãRustã®ãã¤ããª
.zip
.tar
.tar.gz
ã®ã¢ã¼ã«ã¤ã
GitHub Actionsã®å ´åãã¢ã¯ã·ã§ã³ã®å ¥åãã©ã¡ã¼ã¿ã§æå®ãã¾ãããã®è¨äºã§ã¯ Node.js ã¢ããªãä¾ã«ãããªãã¸ããªå ã®ãã¡ã¤ã«ãã¨ãã³ã³ããã¤ã¡ã¼ã¸ãã®2ã¤ã試ãã¦ã¿ã¾ãã
ã¢ã¯ã·ã§ã³ãç´è§£ã
æ¸ãæ¹ã®ãµã³ãã«ã§ãã
- name: Inspector Scan id: inspector uses: aws-actions/[email protected] with: artifact_type: "repository" artifact_path: "./" display_vulnerability_findings: "enabled" critical_threshold: 1 high_threshold: 1 medium_threshold: 1 low_threshold: 1 other_threshold: 1 scanners: "javascript-nodemodules"
ãã使ããããªãã©ã¡ã¼ã¿ã«ã¯ä»¥ä¸ãããã¾ãã
artifact_type
- ãªãã¸ããªå
ã®ãã¡ã¤ã«ãã¹ãã£ã³ããå ´åã¯
repository
- ã³ã³ãããã¹ãã£ã³ããå ´åã¯
container
- ãªãã¸ããªå
ã®ãã¡ã¤ã«ãã¹ãã£ã³ããå ´åã¯
artifact_path
- ãªãã¸ããªå ã®ãã¡ã¤ã«ãã¹ãã£ã³ããå ´åã¯ãåºæ¬çã«ãªãã¸ããªã«ã¼ã
- ã³ã³ãããã¹ãã£ã³ããå ´åã¯ã³ã³ããã¤ã¡ã¼ã¸å
display_vulnerability_findings
- GitHub Actions ã®å®è¡ãµããªãã¼ã¸ã«çµæã表示ãããã表示ããå ´åã¯
enabled
- 便å©ãªã®ã§åºæ¬çã«
enabled
ããããã
- GitHub Actions ã®å®è¡ãµããªãã¼ã¸ã«çµæã表示ãããã表示ããå ´åã¯
sbomgen_version
- 使ç¨ãã Amazon Inspector SBOM Generator ã®ãã¼ã¸ã§ã³ãæç¤ºçã«æå®ãããå ´åã«ä½¿ã
critical_threshold
high_threshold
medium_threshold
low_threshold
other_threshold
scanners
- å©ç¨ããã¹ãã£ããæå®ã§ãããæå®ããªãå ´åã¯å ¨ã¦ã®ã¹ãã£ããæå¹
- è¤æ°ãå©ç¨ããå ´åã¯
,
åºåãã§è¨è¿°
skip_scanners
- å©ç¨ãé¤å¤ããã¹ãã£ããæå®ã§ãã
- è¤æ°ãé¤å¤ããå ´åã¯
,
åºåãã§è¨è¿°
skip_files
- ã¹ãã£ã³å¯¾è±¡ããé¤å¤ããããã¡ã¤ã«ãæç¤ºçã«è¨è¿°
- è¤æ°æå®ããå ´åã¯
,
åºåãã§è¨è¿°
ç¹ã« scanners
㨠skip_scanners
ã®è¨å®å¤ããããã«ããã§ãããSBOM Generator v1.4.0 ã§å©ç¨ã§ããè¨å®å¤ã«ã¯ä»¥ä¸ã®33種é¡ããã¾ããã
ï¼SBOM Generator ã® inspector-sbomgen list-scanners
ã³ãã³ãã§ç¢ºèªããçµæï¼
NAME | GROUPS | DESCRIPTION |
---|---|---|
alpine-apk | os pkg-scanner |
Scans packages installed with apk |
apache-httpd | extra-ecosystems pkg-scanner |
Scans Apache HTTP Server based on contents of ap_release.h |
binaries | binary pkg-scanner |
Scans compiled Rust and Go binaries for package dependencies |
csharp-csproj | pkg-scanner programming-language-packages |
Scans C# packages based on contents of .csproj files |
csharp-depsjson | pkg-scanner programming-language-packages |
Scans C# packages based on contents of .deps.json files |
csharp-pkgconfig | pkg-scanner programming-language-packages |
Scans C# packages based on contents of Packages.config files |
csharp-pkglock | pkg-scanner programming-language-packages |
Scans C# packages based on contents of packages.lock.json files |
debian-distroless | os pkg-scanner |
Scans packages installed in Debian distroless containers |
dockerfile | dockerfile pkg-scanner |
Scans Dockerfile contents for security issues |
dpkg | os pkg-scanner |
Scans installed Debian packages |
go-gopkg | pkg-scanner programming-language-packages |
Scans Go packages based on go.sum |
go-modcache | pkg-scanner programming-language-packages |
Scans Go packages based on contents of $HOME/go/pkg/mod directory |
java-installation | extra-ecosystems pkg-scanner |
Scans for Java installations in default paths |
java-jar | pkg-scanner programming-language-packages |
Scans Java packages based on contents of pom.properties and archive files (.jar, .par, .war, .ear) |
java-pomxml | pkg-scanner programming-language-packages |
Scans Java dependencies based on the content of pom.xml |
javascript-nodemodules | pkg-scanner programming-language-packages |
Scans for installed packages based on contents of node_modules/*/package.json files |
javascript-npm-packagelock | pkg-scanner programming-language-packages |
Scans NPM dependencies based on the content of package-lock.json file |
javascript-pnpm-yaml | pkg-scanner programming-language-packages |
Scans PNPM dependencies based on the content of pnpm-lock.yaml file |
javascript-yarnlock | pkg-scanner programming-language-packages |
Scans Yarn dependencies based on the content of yarn.lock file |
php | pkg-scanner programming-language-packages |
Scans PHP packages based on contents of composer.lock and installed.json files |
python-pipfile | pkg-scanner programming-language-packages |
Scans python packages based on contents of Pipfile.lock files |
python-pkg | pkg-scanner programming-language-packages |
Scans python packages based on contents of egg-info and dist-info files |
python-poetry | pkg-scanner programming-language-packages |
Scans python packages based on contents of poetry.lock files |
python-requirements | pkg-scanner programming-language-packages |
Scans python packages based on content of requirements.txt files |
rhel-rpm | os pkg-scanner |
Scans installed rpm packages |
ruby-gemfiles | pkg-scanner programming-language-packages |
Scans Ruby packages based on contents of Gemfile.lock files |
ruby-gemspec | pkg-scanner programming-language-packages |
Scans Ruby packages based on contents of .gemspec files |
ruby-globalgems | pkg-scanner programming-language-packages |
Scans Ruby packages based on contents of globally installed gems |
rust-cargolock | pkg-scanner programming-language-packages |
Scans Rust packages based on contents of Cargo.lock files |
rust-cargotoml | pkg-scanner programming-language-packages |
Scans Rust packages based on contents of Cargo.toml files |
wordpress-installation | extra-ecosystems pkg-scanner |
Scans for Wordpress |
wordpress-plugin-installation | extra-ecosystems pkg-scanner |
Scans for Wordpress plugins |
wordpress-theme-installation | extra-ecosystems pkg-scanner |
Scans for Wordpress themes |
ä½è«ã§ãããv1.3.2 ã§ã¯ javascript-nodemodules
javascript-npm-packagelock
javascript-pnpm-yaml
javascript-yarnlock
ãåå¨ããã代ããã« javascript-nodejs
ãæå®ã§ãã¾ãããããã使ã£ã¦ããã¨ããã8æä¸æ¬ã«ã¢ã¯ã·ã§ã³ãå©ç¨ãã SBOM Generator ã®ããã©ã«ããã¼ã¸ã§ã³ã 1.4.0 ã«åãæ¿ãã£ããããããä½ããã¦ããªãã®ã«å£ãããç¶æ
ã«ãªãç¦ãã¾ããã
ãªãã¸ããªå ã®ãã¡ã¤ã«ãã¹ãã£ã³ããå ´å
artifact_type
å
¥åãã©ã¡ã¼ã¿ã¯ repository
ãæå®ãã¾ããã¸ã§ãã®å
¨ä½åã¯æ¬¡ã®ããã«ãªãã¾ãããã¡ã¤ã«ãéçè§£æãããããã³ã³ããããã«ãããå¿
è¦ã¯ããã¾ããã
çæãã SBOM ã Inspector ã«æ¸¡ããããaws-actions/configure-aws-credentials
ã¢ã¯ã·ã§ã³ã§ä¸æçãªã¯ã¬ãã³ã·ã£ã«ãåå¾ãã¾ããå©ç¨ãããã¼ã«ã«ã¯ inspector-scan:ScanSbom
権éãã¤ãã¦ããã¾ãããã
jobs: scan: runs-on: ubuntu-latest # ã³ã³ããã¢ã¯ã·ã§ã³ãªã®ã§ Linux ã®ã¿ã§å®è¡å¯è½ timeout-minutes: 20 steps: - name: Checkout Respository uses: actions/checkout@v4 # AWS ã¯ã¬ãã³ã·ã£ã«ã®è¨å® - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::111122223333:role/my-sample-role-name aws-region: ap-northeast-1 - name: Inspector Scan id: inspector uses: aws-actions/[email protected] with: artifact_type: "repository" # repository ãæå® artifact_path: "./" # ãªãã¸ããªã®ã«ã¼ããæå® display_vulnerability_findings: "enabled" critical_threshold: 1 high_threshold: 1 medium_threshold: 1 low_threshold: 1 other_threshold: 1 # SBOM ã®è¡¨ç¤ºï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display CycloneDX SBOM (JSON) run: cat ${{ steps.inspector.outputs.artifact_sbom }} # JSON å½¢å¼ã®æ¤åºçµæã表示ï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display Inspector vulnerability scan results (JSON) run: cat ${{ steps.inspector.outputs.inspector_scan_results }} # CSV å½¢å¼ã®æ¤åºçµæã表示ï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display Inspector vulnerability scan results (CSV) run: cat ${{ steps.inspector.outputs.inspector_scan_results_csv }} # Markdown å½¢å¼ã®æ¤åºçµæã表示ï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display Inspector vulnerability scan results (Markdown) run: cat ${{ steps.inspector.outputs.inspector_scan_results_markdown }} # CSV å½¢å¼ã®Dockerfileæ¤åºçµæã表示ï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display Dockerfile scan results (CSV) run: cat ${{ steps.inspector.outputs.inspector_dockerile_scan_results_csv }} # Markdown å½¢å¼ã®Dockerfileæ¤åºçµæã表示ï¼å¿ è¦ã«å¿ãã¦å©ç¨ï¼ - name: Display Dockerfile scan results (Markdown) run: cat ${{ steps.inspector.outputs.inspector_dockerile_scan_results_markdown }} # ã¹ãã£ã³çµæãã¢ã¼ãã£ãã¡ã¯ãã«ã¢ãããã¼ã - name: Upload Scan Results uses: actions/upload-artifact@v4 with: name: Inspector Vulnerability Scan Artifacts path: | ${{ steps.inspector.outputs.inspector_scan_results }} ${{ steps.inspector.outputs.inspector_scan_results_csv }} ${{ steps.inspector.outputs.artifact_sbom }} ${{ steps.inspector.outputs.inspector_scan_results_markdown }} ${{ steps.inspector.outputs.inspector_dockerile_scan_results_csv }} ${{ steps.inspector.outputs.inspector_dockerile_scan_results_markdown }} # æ¤åºããèå¼±æ§ã®æ°ãé¾å¤ãè¶ ããå ´åãã¸ã§ãã失æã¹ãã¼ã¿ã¹ã«ãã - name: Fail job if vulnerability threshold is exceeded run: exit ${{ steps.inspector.outputs.vulnerability_threshold_exceeded }}
試ãã¦ã¿ã
以ä¸ã®èå¼±æ§ã®ããããã±ã¼ã¸ãã¼ã¸ã§ã³ãã¤ã³ã¹ãã¼ã«ããã¹ãã£ã³ããã¦ã¿ã¾ããããã®ãã¡ãmicromatch
㯠devDependencies
ã«è¨è¼ããããã±ã¼ã¸ç±æ¥ã®ãã®ã§ãããæ¬çªã«ãã«ãããã³ã³ããã¤ã¡ã¼ã¸ã«å«ããªãããã«æ§æãã¦ãã¾ãã
npmããã±ã¼ã¸å | ãã¼ã¸ã§ã³ | CVE | æ¬çªã³ã³ããã«å«ã¾ããã |
---|---|---|---|
next | 14.1.0 | CVE-2024-34351 | â |
fast-xml-parser | 4.2.5 | CVE-2024-41818 | â |
micromatch | 14.0.5 | CVE-2024-4067 | â |
ã¾ã Dockerfile ã®è¨å®ãã¹ãã£ã³å¯è½ã¨ã®ãã¨ãªã®ã§ãDockerfile ã«æ¬¡ã®ä¸è¡ãå«ãã¾ãã
USER root
å®è¡ããã¨ãèå¼±æ§ãæ¤åºãããããã¸ã§ãã失æã¹ãã¼ã¿ã¹ã«ãªãã¾ããã
ãµããªãã¼ã¸ã®çµæ
ãµããªãã¼ã¸ã«æ¬¡ã®ãããªçµæã表示ããã¾ããã
3ã¤ã®ããã±ã¼ã¸ã®èå¼±æ§ãããã³ Dockerfile ã«ã¦ root ã¦ã¼ã¶ã¼ã使ç¨ãã¦ããã¨ã®æ¤åºçµæã表示ããã¦ãã¾ãã
ããã±ã¼ã¸ã®èå¼±æ§ã«ã¤ãã¦ã¯ããªãã¸ããªå
ã® yarn.lock
ãã¡ã¤ã«ããæ¤åºãã¦ãããã¨ããããã¾ããå¾ã£ã¦æ¬çªã®ã³ã³ããã¤ã¡ã¼ã¸ã«ã¯å«ã¾ããªã micromatch
ã®èå¼±æ§ãæ¤åºããã¦ãã¾ãã
CSVå½¢å¼ã®æ¤åºçµæ
(2024/11/19)Dockerfileã®æ¤åºçµæã«ã¤ãã¦è¿½è¨ãã¾ããã
CSVå½¢å¼ã®æ¤åºçµæã®ãã¡ãinspector_scan_
ã¨ãã¡ã¤ã«åã«ä»ããã®ï¼outputs.inspector_scan_results_csv
ï¼ã¯æ¬¡ã®ããã«ãªãã¾ããã
ãã¡ãã¯ããã±ã¼ã¸ã®èå¼±æ§ã®ã¿ã§ãDockerfile ã®è¨å®ã«ã¤ãã¦ã¯åºåãããã¾ããã
"#artifact_name:./","artifact_type:directory","artifact_hash:null","build_id:null" "#critical_vulnerabilities:0","high_vulnerabilities:1","medium_vulnerabilities:1","low_vulnerabilities:0","other_vulnerabilities:2" "ID","Severity","Source","CVSS","Installed Package","Fixed Package","Path","EPSS","Exploit Available","Exploit Last Seen","CWEs" "CVE-2024-4067","medium","MITRE","5.3","pkg:npm/[email protected]","4.0.8","yarn.lock","0.00045","true","2024-08-26T14:20:30Z","CWE-1333" "CVE-2024-41818","untriaged","NVD","null","pkg:npm/[email protected]","4.4.1","yarn.lock","0.00045","null","null","null" "CVE-2024-34351","high","MITRE","7.5","pkg:npm/[email protected]","14.1.1","yarn.lock","0.00119","true","2024-08-24T07:21:02Z","CWE-918"
inspector_dockerfile_scan_
ã¨ãã¡ã¤ã«åã«ä»ããã®ï¼outputs.inspector_dockerile_scan_results_csv
ï¼ã¯æ¬¡ã®ããã«ãªãã¾ããã
ãã¡ãã«Dockerfile ã®è¨å®ã«ã¤ãã¦ã®æ¤åºçµæãæ¸ããã¦ãã¾ãã
ID,SEVERITY,DESCRIPTION,FILE,LINE IN-DOCKER-003,info,Last USER is root: If a service can run without privileges use USER to change to a non-root user.,dockerfile:Dockerfile,41-41
JSONå½¢å¼ã®æ¤åºçµæ
JSONå½¢å¼ã®æ¤åºçµæã¯æ¬¡ã®ããã«ãªãã¾ããã
èå¼±æ§ã ãã§ã¯ãªãã³ã³ãã¼ãã³ããå
¨ã¦è¨è¼ããã¦ããã®ã§å¤§å¤é·ãã®ã§ãããsbom.vulnerabilities
ã«èå¼±æ§ã®æ
å ±ãè¨é²ããã¦ãã¾ãããDockerfile ã®è¨å®ã«ã¤ãã¦ãè¨è¼ããã¦ãã¾ãã
JSONå½¢å¼ã®æ¤åºçµæ
{ "sbom": { "specVersion": "1.5", "metadata": { // (çç¥) }, "components": [ // (çç¥) ], "bomFormat": "CycloneDX", "vulnerabilities": [ { "advisories": [ { "url": "https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071631" }, { "url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2024-4067" }, { "url": "https://www.cve.org/CVERecord?id=CVE-2024-4067" } ], "bom-ref": "vuln-1", "references": [ { "id": "GHSA-952p-6rrq-rcjv", "source": { "name": "GITHUB", "url": "https://github.com/advisories/GHSA-952p-6rrq-rcjv" } } ], "created": "2024-05-14T15:42:47Z", "description": "The NPM package `micromatch` is vulnerable to Regular Expression Denial of Service (ReDoS). The vulnerability occurs in `micromatch.braces()` in `index.js` because the pattern `.*` will greedily match anything. By passing a malicious payload, the pattern matching will keep backtracking to the input while it doesn't find the closing bracket. As the input size increases, the consumption time will also increase until it causes the application to hang or slow down. There was a merged fix but further testing shows the issue persists. This issue should be mitigated by using a safe pattern that won't start backtracking the regular expression due to greedy matching.", "affects": [ { "ref": "comp-988" } ], "source": { "name": "NVD", "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-4067" }, "cwes": [ 1333 ], "analysis": { "state": "exploitable" }, "ratings": [ { "severity": "none", "score": 0.00045, "method": "other", "vector": "model:v2023.03.01,date:2024-08-27T00:00:00+0000", "source": { "name": "EPSS", "url": "https://api.first.org/data/v1/epss?cve=CVE-2024-4067" } }, { "severity": "medium", "score": 5.3, "method": "CVSSv31", "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L", "source": { "name": "MITRE", "url": "https://cve.org/CVERecord?id=CVE-2024-4067" } } ], "id": "CVE-2024-4067", "updated": "2024-05-22T12:15:10Z", "properties": [ { "name": "amazon:inspector:sbom_scanner:priority", "value": "standard" }, { "name": "amazon:inspector:sbom_scanner:priority_intelligence", "value": "unverified" }, { "name": "amazon:inspector:sbom_scanner:exploit_available", "value": "true" }, { "name": "amazon:inspector:sbom_scanner:exploit_last_seen_in_public", "value": "2024-08-26T14:20:30Z" }, { "name": "amazon:inspector:sbom_scanner:fixed_version:comp-988", "value": "4.0.8" } ] }, { "advisories": [ { "url": "https://docs.docker.com/develop/develop-images/instructions/" } ], "bom-ref": "vuln-2", "ratings": [ { "severity": "info", "method": "other", "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" } } ], "created": "2024-03-27T14:36:39Z", "description": "Last USER is root: If a service can run without privileges, use USER to change to a non-root user.", "affects": [ { "ref": "comp-1106" } ], "id": "IN-DOCKER-003", "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" }, "analysis": { "state": "in_triage" }, "updated": "2024-03-27T14:36:39Z" }, { "advisories": [ { "url": "https://access.redhat.com/errata/RHSA-2024:5054" } ], "bom-ref": "vuln-3", "references": [ { "id": "GHSA-mpg4-rc92-vx8v", "source": { "name": "GITHUB", "url": "https://github.com/advisories/GHSA-mpg4-rc92-vx8v" } } ], "ratings": [ { "severity": "none", "score": 0.00045, "method": "other", "vector": "model:v2023.03.01,date:2024-08-27T00:00:00+0000", "source": { "name": "EPSS", "url": "https://api.first.org/data/v1/epss?cve=CVE-2024-41818" } } ], "created": "2024-07-29T16:15:05Z", "description": "fast-xml-parser is an open source, pure javascript xml parser. a ReDOS exists on currency.js. This vulnerability is fixed in 4.4.1.", "affects": [ { "ref": "comp-1068" } ], "id": "CVE-2024-41818", "source": { "name": "NVD", "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-41818" }, "analysis": { "state": "in_triage" }, "updated": "2024-08-02T20:17:01Z", "properties": [ { "name": "amazon:inspector:sbom_scanner:priority", "value": "standard" }, { "name": "amazon:inspector:sbom_scanner:priority_intelligence", "value": "unverified" }, { "name": "amazon:inspector:sbom_scanner:fixed_version:comp-1068", "value": "4.4.1" } ] }, { "advisories": [ { "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-34351" } ], "bom-ref": "vuln-4", "references": [ { "id": "GHSA-fr5h-rqp8-mj6g", "source": { "name": "GITHUB", "url": "https://github.com/advisories/GHSA-fr5h-rqp8-mj6g" } } ], "created": "2024-05-14T15:38:42Z", "description": "Next.js is a React framework that can provide building blocks to create web applications. A Server-Side Request Forgery (SSRF) vulnerability was identified in Next.js Server Actions. If the `Host` header is modified, and the below conditions are also met, an attacker may be able to make requests that appear to be originating from the Next.js application server itself. The required conditions are 1) Next.js is running in a self-hosted manner; 2) the Next.js application makes use of Server Actions; and 3) the Server Action performs a redirect to a relative path which starts with a `/`. This vulnerability was fixed in Next.js `14.1.1`.", "affects": [ { "ref": "comp-829" } ], "source": { "name": "NVD", "url": "https://nvd.nist.gov/vuln/detail/CVE-2024-34351" }, "cwes": [ 918 ], "analysis": { "state": "exploitable" }, "ratings": [ { "severity": "none", "score": 0.00119, "method": "other", "vector": "model:v2023.03.01,date:2024-08-27T00:00:00+0000", "source": { "name": "EPSS", "url": "https://api.first.org/data/v1/epss?cve=CVE-2024-34351" } }, { "severity": "high", "score": 7.5, "method": "CVSSv31", "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "source": { "name": "MITRE", "url": "https://cve.org/CVERecord?id=CVE-2024-34351" } } ], "id": "CVE-2024-34351", "updated": "2024-05-14T16:12:23Z", "properties": [ { "name": "amazon:inspector:sbom_scanner:priority", "value": "standard" }, { "name": "amazon:inspector:sbom_scanner:priority_intelligence", "value": "unverified" }, { "name": "amazon:inspector:sbom_scanner:exploit_available", "value": "true" }, { "name": "amazon:inspector:sbom_scanner:exploit_last_seen_in_public", "value": "2024-08-24T07:21:02Z" }, { "name": "amazon:inspector:sbom_scanner:fixed_version:comp-829", "value": "14.1.1" } ] } ] } }
Markdownå½¢å¼ã®æ¤åºçµæ
(2024/11/19)Dockerfileã®æ¤åºçµæã«ã¤ãã¦è¿½è¨ãã¾ããã
Markdownå½¢å¼ã®æ¤åºçµæã®ãã¡ãinspector_scan_
ã¨ãã¡ã¤ã«åã«ä»ããã®ï¼outputs.inspector_scan_results_markdown
ï¼ã¯æ¬¡ã®ããã«ãªãã¾ããã
ãã¡ãã¯ããã±ã¼ã¸ã®èå¼±æ§ã®ã¿ã§ãDockerfile ã®è¨å®ã«ã¤ãã¦ã¯åºåãããã¾ããã
# Amazon Inspector Scan Results Artifact Type: repository ## Vulnerability Counts by Severity | Severity | Count | |----------|-------| | Critical | 0| | High | 1| | Medium | 1| | Low | 0| | Other | 2| ## Vulnerability Findings | ID | Severity | Source | [CVSS](https://www.first.org/cvss/) | Installed Package ([PURL](https://github.com/package-url/purl-spec/tree/master?tab=readme-ov-file#purl)) | Fixed Package | Path | [EPSS](https://www.first.org/epss/) | Exploit Available | Exploit Last Seen | CWEs | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | | CVE-2024-34351 | high | MITRE | 7.5 | `pkg:npm/[email protected]` | `14.1.1` | `yarn.lock` | 0.00119 | true | 2024-08-24T07:21:02Z | `CWE-918` | | CVE-2024-4067 | medium | MITRE | 5.3 | `pkg:npm/[email protected]` | `4.0.8` | `yarn.lock` | 0.00045 | true | 2024-08-26T14:20:30Z | `CWE-1333` | | CVE-2024-41818 | untriaged | NVD | | `pkg:npm/[email protected]` | `4.4.1` | `yarn.lock` | 0.00045 | | | |
inspector_dockerfile_scan_
ã¨ãã¡ã¤ã«åã«ä»ããã®ï¼outputs.inspector_dockerile_scan_results_markdown
ï¼ã¯æ¬¡ã®ããã«ãªãã¾ããã
ãã¡ãã«Dockerfile ã®è¨å®ã«ã¤ãã¦ã®æ¤åºçµæãæ¸ããã¦ãã¾ãã
## Dockerfile Findings
|ID|SEVERITY|DESCRIPTION|FILE|LINES|
|---|---|---|---|---|
| IN-DOCKER-003 | info | Last USER is root: If a service can run without privileges, use USER to change to a non-root user. | dockerfile:Dockerfile | 41-41 |
èå¼±æ§ãæ¤åºãããªãã£ãå ´å
(2024/11/18追è¨)æ¬ã»ã¯ã·ã§ã³ã«è¨è¼ãã¦ããåé¡ã¯ v1.1.4 ã«ã¦è§£æ¶ããã¾ããã
ã¡ãªã¿ã«èå¼±æ§ã1ã¤ãæ¤åºãããªãã£ãå ´åãCSVå½¢å¼ã®ã¬ãã¼ãã¯çæãããªãããã§ã以ä¸ã®ãããªã¹ãããã®æ¸ãæ¹ã«ããã¨ãèå¼±æ§ããªãã«ãé¢ãããã¸ã§ãã失æãã¦ãã¾ãã¾ãã
- name: Display Inspector vulnerability scan results (CSV) run: cat ${{ steps.inspector.outputs.inspector_scan_results_csv }}
ããã§ cat
ã³ãã³ãã失æãã¦ãç°å¸¸çµäºãããªãããã«ãã¦ããã¨è¯ãã§ãã
- name: Display Inspector vulnerability scan results (CSV) run: cat ${{ steps.inspector.outputs.inspector_scan_results_csv }} || true
ã³ã³ããã¤ã¡ã¼ã¸ãã¹ãã£ã³ããå ´å
ã³ã³ããã¤ã¡ã¼ã¸ãã¹ãã£ã³ããå ´åã®ã¸ã§ãã®è¨è¿°ä¾ã§ããartifact_type
å
¥åãã©ã¡ã¼ã¿ã¯ container
ãæå®ãã artifact_path
ã«ã¯ã³ã³ããã¤ã¡ã¼ã¸åãæ¸¡ãã¾ããäºåã«ã³ã³ããããã«ããã¦ããå¿
è¦ãããã¾ãã
å人çãªæ¨å¥¨ã¨ãã¦ãã³ã³ããã¤ã¡ã¼ã¸ã®ã¹ãã£ã³ã®å ´å㯠lock ãã¡ã¤ã«ãã¹ãã£ã³å¯¾è±¡å¤ã«ãã¦ããã¨è¯ãã¨æãã¾ããdevDependencies
ã®ç±æ¥ããã±ã¼ã¸ã¯å®éã«ã¯æ¬çªã³ã³ããã«å«ã¾ããªãããã«ãã¦ãããã¨ãå¤ãã¨æãã¾ããããã«ãæ¸ã¿ã®ã³ã³ããã¤ã¡ã¼ã¸ãã¹ãã£ã³ããããã«ã¯ãå®éã«ã³ã³ããã«å
¥ã£ã¦ããããã±ã¼ã¸ã®ã¿ã対象ã¨ããæ¹ã稼åç°å¢ã®èå¼±æ§ãããããããã§ããéçºã®ã¿ã§ä½¿ç¨ãã¦ããããã±ã¼ã¸ã®èå¼±æ§ãç¥ãããå ´åã¯ãããããæéãããã¦ã³ã³ããããã«ãããã«ãªãã¸ããªå
ã®ãã¡ã¤ã«ãã¹ãã£ã³ããã°è¯ãã®ã§ãã
# docker/build-push-action ã®ã»ããã¢ãã - name: Set up docker build prereqs (QEMU) uses: docker/setup-qemu-action@v3 - name: Set up docker build prereqs (Buildx) uses: docker/setup-buildx-action@v3 # ã¤ã¡ã¼ã¸ããã«ã - name: Build Docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile push: false tags: my-container:${{ github.sha }} load: true - name: Inspector Scan id: inspector uses: aws-actions/[email protected] with: artifact_type: "container" artifact_path: "my-container:${{ github.sha }}" display_vulnerability_findings: "enabled" critical_threshold: 1 high_threshold: 1 medium_threshold: 1 low_threshold: 1 other_threshold: 1 skip_files: "/usr/app/yarn.lock" # ã³ã³ããå ã®ããã¯ãã¡ã¤ã«ãã¹ãã£ã³å¯¾è±¡ããé¤å¤
ãµããªãã¼ã¸ã®çµæ
ãµããªãã¼ã¸ã«æ¬¡ã®ãããªçµæã表示ããã¾ããã
skip_files: "/usr/app/yarn.lock"
ã¨è¨å®ãããããæ¬çªã³ã³ããã«å«ãã2ã¤ã®ããã±ã¼ã¸ã®èå¼±æ§ã®ã¿ãæ¤åºããã¾ãããæ¤åºããã½ã¼ã¹ã¯ node_modules
ã«ã¤ã³ã¹ãã¼ã«ãããããã±ã¼ã¸å
ã® package.json
ãã¡ã¤ã«ã ã¨ãããã¾ãã
Dockerfile ã«ã¤ãã¦ãã¹ãã£ã³å¯¾è±¡ã§ã¯ããã¾ãããä»åã¯Dockerfile èªä½ãã³ã³ããå
ã«ã³ãã¼ãã¦ããªããããããã§ã¯æ¤åºããã¦ãã¾ããã
ãªãã¸ããªå ã®ãã¡ã¤ã«ã¹ãã£ã³ã¨ãã³ã³ããã¤ã¡ã¼ã¸ã¹ãã£ã³ã®ä½¿ãåãã«ã¤ãã¦
2ã¤ã®ã¹ãã£ã³å¯¾è±¡ã«ã¤ãã¦è©¦ãã¾ãããã使ãåãã«ã¤ãã¦èãã¦ã¿ããã¨æãã¾ãã
ã¾ãã³ã³ããã¤ã¡ã¼ã¸ã¹ãã£ã³ã§ãããã³ã³ããããã«ãããããã¹ãã£ã³é度ã¯é
ããé »ç¹ãªå®è¡ã«ã¯åãã¾ããããããå®éã®ã³ã³ãããã«ãã«ä½¿ã Dockerfile ãå©ç¨ãã¦ãã«ãããçµæã®ç¶æ
ãè¦ããã¨ãã§ãããããæ¬çªã¸ãããã¤ããã¯ã¼ã¯ããã¼ã§å®è¡ããã®ãè¯ãã§ãããã
ãã®ããã«ã³ã³ããå
ã® lock ãã¡ã¤ã«ã¯ã¹ãã£ã³å¯¾è±¡ããé¤å¤ããéçºã®ã¿ã§å©ç¨ãã¦ããããã±ã¼ã¸ã®èå¼±æ§ã¯åºåãããªããã¨ã§ãã¤ãºãæ¸ããã¾ãã
Dockerfile ãã¹ãã£ã³å¯¾è±¡ã§ã¯ããã¾ãããDockerfile èªä½ãã³ã³ããå
ã«ã³ãã¼ãã¦ããªãå ´åãããã®ã§ãå¥ã®ã¨ããã§ã¹ãã£ã³ããããã¨ãèãã¾ãã
ãªãã¸ããªå ã®ãã¡ã¤ã«ã¹ãã£ã³ã§ãããã³ã³ããããã«ãããå¿ è¦ããªãã®ã§ã¹ãã£ã³é度ã¯éãã§ããéçºç¨ãã©ã³ãã¸ã®ããã·ã¥ãã¨ã«å®è¡ããã¨è¯ãã§ãããã éçºã®ã¿ã§å©ç¨ãã¦ããããã±ã¼ã¸ã Dockerfile ã®ä¸é©åãªè¨å®ãã¹ãã£ã³å¯¾è±¡ã¨ããéçºä¸ã«ä¿®æ£ãããã£ããã«ãã¾ãã
ã¾ã¨ã
Node.js ã¢ããªãä¾ã« GitHub Actions ã§ Amazon Inspector ãå©ç¨ããèå¼±æ§ã¹ãã£ã³ã試ãã¾ããã
ä»ã®è¨èªã«ã¤ãã¦ã試ããæ¹ãããã°ããã²æ
å ±ããå¾
ã¡ãã¦ããã¾ãã
å·çï¼@kou.kinyoãã¬ãã¥ã¼ï¼å¯ºå±± è¼ (@terayama.akira)
ï¼Shodoã§å·çããã¾ããï¼