เครื่องสแกนช่องโหว่สำหรับคอนเทนเนอร์อิมเมจและระบบไฟล์ ติดตั้งไบนารีได้อย่างง่ายดายเพื่อทดลองใช้ ทำงานร่วมกับ Syft ซึ่งเป็นเครื่องมือ SBOM (รายการวัสดุซอฟต์แวร์) อันทรงพลังสำหรับอิมเมจคอนเทนเนอร์และระบบไฟล์
ปฏิทิน: https://calendar.google.com/calendar/u/0/r?cid=Y182OTM4dGt0MjRtajI0NnNzOThiaGtnM29qNEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t
วาระการประชุม: https://docs.google.com/document/d/1ZtSAa6fj2a6KRWviTn3WoJm09edvrNUp4Iz_dOjjyY8/edit?usp=sharing (เข้าร่วมกลุ่มนี้เพื่อเข้าถึงการเขียน)
ยินดีต้อนรับทุกท่าน!
สำหรับตัวเลือกการสนับสนุนเชิงพาณิชย์กับ Syft หรือ Grype โปรดติดต่อ Anchore
สแกนเนื้อหาของคอนเทนเนอร์อิมเมจหรือระบบไฟล์เพื่อค้นหาช่องโหว่ที่ทราบ
ค้นหาช่องโหว่สำหรับแพ็คเกจระบบปฏิบัติการหลัก:
อัลไพน์
อเมซอน ลินุกซ์
BusyBox
CentOS
CBL-นาวิกโยธิน
เดเบียน
ไม่ทำลายล้าง
ออราเคิล ลินุกซ์
หมวกแดง (RHEL)
อูบุนตู
วูล์ฟฟี่
ค้นหาช่องโหว่สำหรับแพ็คเกจเฉพาะภาษา:
ทับทิม (อัญมณี)
ชวา (JAR, สงคราม, EAR, JPI, HPI)
จาวาสคริปต์ (NPM, เส้นด้าย)
Python (ไฟล์ Egg, Wheel, Poetry, Requirements.txt/setup.py)
ดอทเน็ต (deps.json)
โกลัง (go.mod)
PHP (ผู้แต่ง)
สนิม (สินค้า)
รองรับรูปแบบภาพ Docker, OCI และ Singularity
รองรับ OpenVEX สำหรับการกรองและเพิ่มผลการสแกน
หากคุณพบปัญหา โปรดแจ้งให้เราทราบโดยใช้เครื่องมือติดตามปัญหา
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | ช -s -- -b /usr/local/bin
ติดตั้งตัวเลือกสคริปต์:
-b
: ระบุไดเร็กทอรีการติดตั้งแบบกำหนดเอง (ค่าเริ่มต้นเป็น ./bin
bin )
-d
: ระดับการบันทึกโดยละเอียดเพิ่มเติม ( -d
สำหรับการดีบัก -dd
สำหรับการติดตาม)
-v
: ตรวจสอบลายเซ็นของสิ่งประดิษฐ์ที่ดาวน์โหลดก่อนการติดตั้ง (ต้องติดตั้ง cosign
)
การจำหน่าย grype แบบช็อกโกแลตนั้นได้รับการดูแลจากชุมชนและไม่ได้จัดจำหน่ายโดยทีมงานผู้ประกาศข่าว
choco ติดตั้ง grype -y
ชงก๊อกพุก / grype ชงติดตั้ง grype
บน macOS สามารถติดตั้ง Grype เพิ่มเติมได้จากพอร์ตที่ดูแลโดยชุมชนผ่าน MacPorts:
พอร์ต sudo ติดตั้ง grype
หมายเหตุ : ปัจจุบัน Grype สร้างขึ้นสำหรับ macOS และ Linux เท่านั้น
ดู DEVELOPING.md สำหรับคำแนะนำในการสร้างและเรียกใช้จากแหล่งที่มา
หากคุณใช้ GitHub Actions คุณสามารถใช้การดำเนินการแบบ Grype เพื่อสแกนช่องโหว่ในโค้ดหรืออิมเมจคอนเทนเนอร์ของคุณในระหว่างเวิร์กโฟลว์ CI ของคุณ
เช็คซัมจะถูกนำไปใช้กับอาร์ติแฟกต์ทั้งหมด และไฟล์เช็คซัมที่เป็นผลลัพธ์จะถูกเซ็นชื่อโดยใช้ cosign
คุณต้องมีเครื่องมือต่อไปนี้เพื่อตรวจสอบลายเซ็น:
โคซิก
ขั้นตอนการตรวจสอบมีดังนี้:
ดาวน์โหลดไฟล์ที่คุณต้องการ และไฟล์ checksums.txt, checksums.txt.pem และ checksums.txt.sig จากหน้าเผยแพร่:
ตรวจสอบลายเซ็น:
cosign ยืนยันหยด <เส้นทางไปยัง checksum.txt> --certificate <เส้นทางไปยัง checksums.txt.pem> --signature <เส้นทางไปยัง checksums.txt.sig> --certificate-identity-regexp 'https://github.com/anchore/grype/.github/workflows/.+' --certificate-oidc-ผู้ออก "https://token.actions.githubusercontent.com"
เมื่อลายเซ็นได้รับการยืนยันว่าถูกต้อง คุณสามารถดำเนินการต่อเพื่อตรวจสอบว่าผลรวม SHA256 สอดคล้องกับอาร์ติแฟกต์ที่ดาวน์โหลด:
sha256sum --ละเว้น-หายไป -c checksums.txt
ติดตั้งไบนารีและตรวจสอบให้แน่ใจว่า grype
พร้อมใช้งานในเส้นทางของคุณ วิธีสแกนหาช่องโหว่ในรูปภาพ:
grype
คำสั่งดังกล่าวจะสแกนหาช่องโหว่ที่มองเห็นได้ในคอนเทนเนอร์ (เช่น การแสดงรูปภาพที่ถูกบีบอัด) หากต้องการรวมซอฟต์แวร์จากเลเยอร์ภาพทั้งหมดไว้ในการสแกนช่องโหว่ โดยไม่คำนึงถึงการแสดงตนในภาพสุดท้าย ให้ระบุ --scope all-layers
:
grype--scope all-layers
หากต้องการเรียกใช้ grype จากคอนเทนเนอร์ Docker เพื่อให้สามารถสแกนคอนเทนเนอร์ที่ทำงานอยู่ได้ ให้ใช้คำสั่งต่อไปนี้:
นักเทียบท่า run --rm --volume /var/run/docker.sock:/var/run/docker.sock --name Grype Anchore/grype:latest $(ImageName):$(ImageTag)
Grype สามารถสแกนแหล่งที่มาต่างๆ นอกเหนือจากที่พบใน Docker
# scan a container image archive (from the result of `docker image save ...`, `podman save ...`, or `skopeo copy` commands) grype path/to/image.tar # scan a Singularity Image Format (SIF) container grype path/to/image.sif # scan a directory grype dir:path/to/dir
แหล่งที่มาสามารถระบุได้อย่างชัดเจนด้วยโครงการ:
podman:yourrepo/yourimage:tag use images from the Podman daemon docker:yourrepo/yourimage:tag use images from the Docker daemon docker-archive:path/to/yourimage.tar use a tarball from disk for archives created from "docker save" oci-archive:path/to/yourimage.tar use a tarball from disk for OCI archives (from Skopeo or otherwise) oci-dir:path/to/yourimage read directly from a path on disk for OCI layout directories (from Skopeo or otherwise) singularity:path/to/yourimage.sif read directly from a Singularity Image Format (SIF) container on disk dir:path/to/yourproject read directly from a path on disk (any directory) file:path/to/yourfile read directly from a file on disk sbom:path/to/syft.json read Syft JSON from path on disk registry:yourrepo/yourimage:tag pull image directly from a registry (no container runtime required)
หากไม่มีการระบุแหล่งที่มาของรูปภาพและไม่สามารถตรวจพบได้จากการอ้างอิงที่ให้มา จะถือว่ารูปภาพนั้นควรถูกดึงจาก Docker daemon หากไม่มีนักเทียบท่าอยู่ ระบบจะพยายาม Podman daemon ต่อไป ตามด้วยการติดต่อโดยตรงไปยังรีจีสทรีอิมเมจเป็นครั้งสุดท้าย
ลักษณะการทำงานเริ่มต้นนี้สามารถแทนที่ได้ด้วยตัวเลือกการกำหนดค่า default-image-pull-source
(ดูการกำหนดค่าสำหรับรายละเอียดเพิ่มเติม)
ใช้ SBOM เพื่อการสแกนช่องโหว่ที่รวดเร็วยิ่งขึ้นใน Grype:
# Then scan for new vulnerabilities as frequently as needed grype sbom:./sbom.json # (You can also pipe the SBOM into Grype) cat ./sbom.json | grype
Grype รองรับอินพุตของรูปแบบ Syft, SPDX และ CycloneDX SBOM หาก Syft ได้สร้างไฟล์ประเภทใดประเภทหนึ่งเหล่านี้ ก็ควรมีข้อมูลที่เหมาะสมเพื่อให้ทำงานกับ Grype ได้อย่างถูกต้อง นอกจากนี้ยังเป็นไปได้ที่จะใช้ SBOM ที่สร้างโดยเครื่องมืออื่นๆ ที่มีระดับความสำเร็จที่แตกต่างกัน สองสิ่งที่ทำให้การจับคู่ Grype ประสบความสำเร็จมากขึ้นคือการรวมข้อมูลการแจกจ่าย CPE และ Linux หาก SBOM ไม่มีข้อมูล CPE ใดๆ ก็เป็นไปได้ที่จะสร้างข้อมูลเหล่านี้ตามข้อมูลแพ็กเกจโดยใช้แฟล็ก --add-cpes-if-none
หากต้องการระบุการแจกแจง ให้ใช้แฟล็ก --distro
ตัวอย่างแบบเต็มคือ:
grype --add-cpes-if-none --distro alpine:3.10 sbom:some-alpine-3.10.spdx.json
ไม่รองรับ Grype เวอร์ชันก่อน v0.40.1 ใดๆ รุ่นที่ไม่รองรับจะไม่ได้รับการอัพเดตซอฟต์แวร์หรืออัพเดตฐานข้อมูลช่องโหว่ คุณยังคงสามารถสร้างฐานข้อมูลช่องโหว่สำหรับ Grype รุ่นที่ไม่รองรับได้โดยใช้ vunnel รุ่นก่อนหน้าเพื่อรวบรวมข้อมูลอัปสตรีมและ grype-db เพื่อสร้างฐานข้อมูลสำหรับสคีมาที่ไม่รองรับ
Grype รองรับการสแกน SBOM เป็นอินพุตผ่าน stdin ผู้ใช้สามารถใช้ cosign เพื่อตรวจสอบการรับรองด้วย SBOM เป็นเนื้อหาเพื่อสแกนรูปภาพเพื่อหาช่องโหว่:
COSIGN_EXPERIMENTAL=1 cosign verify-attestation caphill4/java-spdx-tools:latest | jq -r .payload | base64 --decode | jq -r .predicate.Data | grype
{ "ช่องโหว่": { ... }, "ช่องโหว่ที่เกี่ยวข้อง": [ ... ], "รายละเอียดการจับคู่": [ ... ], "สิ่งประดิษฐ์": { ... - -
ช่องโหว่ : ข้อมูลทั้งหมดเกี่ยวกับช่องโหว่เฉพาะที่ได้รับการจับคู่โดยตรง (เช่น ID, ความรุนแรง, คะแนน CVSS, ข้อมูลการแก้ไข, ลิงก์สำหรับข้อมูลเพิ่มเติม)
RelatedVulnerabilities : ข้อมูลที่เกี่ยวข้องกับช่องโหว่ที่พบว่าเกี่ยวข้องกับช่องโหว่หลักที่รายงาน บางทีช่องโหว่ที่เราจับคู่อาจเป็น GitHub Security Advisory ซึ่งมี CVE ขั้นต้น (ในฐานข้อมูลช่องโหว่ระดับประเทศที่เชื่อถือได้) ในกรณีเหล่านี้ เราจะแสดงรายการช่องโหว่อัปสตรีมไว้ที่นี่
MatchDetails : ส่วนนี้พยายามอธิบายสิ่งที่เราค้นหาในขณะที่ค้นหาคู่ที่ตรงกัน รวมถึงรายละเอียดเกี่ยวกับแพ็คเกจและช่องโหว่ที่นำไปสู่การจับคู่
สิ่งประดิษฐ์ : นี่เป็นชุดย่อยของข้อมูลที่เรารู้เกี่ยวกับแพ็คเกจ (เมื่อเปรียบเทียบกับเอาต์พุต Syft json เราจะสรุปส่วนข้อมูลเมตา) ข้อมูลนี้มีข้อมูลเกี่ยวกับตำแหน่งภายในอิมเมจคอนเทนเนอร์หรือไดเร็กทอรีที่เราพบแพ็คเกจ ประเภทของแพ็คเกจ ข้อมูลใบอนุญาต pURLs CPE ฯลฯ
Grype สามารถแยกไฟล์และเส้นทางไม่ให้ถูกสแกนภายในแหล่งที่มาได้โดยใช้นิพจน์ glob ที่มีพารามิเตอร์ --exclude
อย่างน้อยหนึ่งพารามิเตอร์:
grype
หมายเหตุ: ในกรณีของ การสแกนรูปภาพ เนื่องจากระบบไฟล์ทั้งหมดถูกสแกน จึงเป็นไปได้ที่จะใช้เส้นทางที่แน่นอน เช่น /etc
หรือ /usr/**/*.txt
ในขณะที่ การสแกนไดเรกทอรี จะแยกไฟล์ ที่เกี่ยวข้องกับไดเรกทอรีที่ระบุ ตัวอย่างเช่น: การสแกน /usr/foo
ด้วย --exclude ./package.json
จะยกเว้น /usr/foo/package.json
และ --exclude '**/package.json'
จะยกเว้นไฟล์ package.json
ทั้งหมดภายใต้ /usr/foo
สำหรับ การสแกนไดเร็กทอรี จำเป็นต้องเริ่มต้นนิพจน์พาธด้วย ./
, */
หรือ **/
ซึ่งทั้งหมดนี้จะถูกแก้ไข โดยสัมพันธ์กับไดเร็กทอรีการสแกนที่ระบุ โปรดทราบว่าเชลล์ของคุณอาจพยายามขยายไวด์การ์ด ดังนั้นให้ใส่พารามิเตอร์เหล่านั้นไว้ในเครื่องหมายคำพูดเดี่ยว เช่น: '**/*.json'
Grype สามารถกำหนดค่าให้รวมแหล่งข้อมูลภายนอกเพื่อเพิ่มความเที่ยงตรงในการจับคู่ช่องโหว่ ขณะนี้คุณลักษณะนี้ปิดใช้งานตามค่าเริ่มต้น หากต้องการเปิดใช้งานคุณสมบัตินี้ให้เพิ่มสิ่งต่อไปนี้ในการกำหนดค่า grype:
แหล่งที่มาภายนอก: เปิดใช้งาน: maven จริง: search-upstream-by-sha1: true base-url: https://repo1.maven.org/maven2
คุณยังสามารถกำหนดค่า base-url ได้หากคุณใช้รีจิสตรีอื่นเป็นจุดสิ้นสุด Maven ของคุณ
รูปแบบเอาต์พุตสำหรับ Grype สามารถกำหนดค่าได้เช่นกัน:
grype-o
ในกรณีที่มีรูปแบบให้เลือก:
table
: สรุปเรียงเป็นแนว (ค่าเริ่มต้น)
cyclonedx
: รายงาน XML ที่สอดคล้องกับข้อกำหนด CycloneDX 1.6
cyclonedx-json
: รายงาน JSON ที่สอดคล้องกับข้อกำหนด CycloneDX 1.6
json
: ใช้สิ่งนี้เพื่อรับข้อมูลจาก Grype ให้ได้มากที่สุด!
sarif
: ใช้ตัวเลือกนี้เพื่อรับรายงาน SARIF (รูปแบบการแลกเปลี่ยนผลลัพธ์การวิเคราะห์แบบคงที่)
template
: อนุญาตให้ผู้ใช้ระบุรูปแบบเอาต์พุต ดู "การใช้เทมเพลต" ด้านล่าง
Grype ให้คุณกำหนดรูปแบบเอาต์พุตแบบกำหนดเองได้โดยใช้เทมเพลต Go นี่คือวิธีการทำงาน:
กำหนดรูปแบบของคุณเป็นเทมเพลต Go และบันทึกเทมเพลตนี้เป็นไฟล์
ตั้งค่ารูปแบบเอาต์พุตเป็น "template" ( -o template
)
ระบุพาธไปยังไฟล์เทมเพลต ( -t ./path/to/custom.template
)
การประมวลผลเทมเพลตของ Grype ใช้โมเดลข้อมูลเดียวกันกับรูปแบบเอาต์พุต json
ดังนั้นหากคุณสงสัยว่ามีข้อมูลใดบ้างเมื่อคุณสร้างเทมเพลต คุณสามารถใช้เอาต์พุตจาก grype
เป็นข้อมูลอ้างอิงได้
โปรดทราบ: เทมเพลตสามารถเข้าถึงข้อมูลเกี่ยวกับระบบที่พวกเขากำลังใช้งานอยู่ เช่น ตัวแปรสภาพแวดล้อม คุณไม่ควรเรียกใช้เทมเพลตที่ไม่น่าเชื่อถือ
มีเทมเพลตตัวอย่างหลายรายการในไดเร็กทอรีเทมเพลตในซอร์ส Grype ซึ่งสามารถใช้เป็นจุดเริ่มต้นสำหรับรูปแบบเอาต์พุตแบบกำหนดเองได้ ตัวอย่างเช่น csv.tmpl จะสร้างรายงานช่องโหว่ในรูปแบบ CSV (ค่าที่คั่นด้วยเครื่องหมายจุลภาค)
"Package","Version Installed","Vulnerability ID","Severity"
"coreutils","8.30-3ubuntu2","CVE-2016-2781","Low"
"libc-bin","2.31-0ubuntu9","CVE-2016-10228","Negligible"
"libc-bin","2.31-0ubuntu9","CVE-2020-6096","Low"
...
คุณยังค้นหาเทมเพลตสำหรับรูปแบบเอาต์พุต "ตาราง" เริ่มต้นได้จากที่เดียวกัน
Grype ยังมีฟังก์ชันการสร้างเทมเพลตยูทิลิตี้มากมายจาก sprig นอกเหนือจากข้อความ/เทมเพลต golang เริ่มต้น เพื่อให้ผู้ใช้ปรับแต่งเอาต์พุตจาก Grype ได้
คุณสามารถให้ Grype ออกโดยมีข้อผิดพลาดได้ หากมีการรายงานช่องโหว่ใดๆ ที่หรือสูงกว่าระดับความรุนแรงที่ระบุ สิ่งนี้มีประโยชน์เมื่อใช้ Grype ภายในสคริปต์หรือไปป์ไลน์ CI เมื่อต้องการทำเช่นนี้ ให้ใช้แฟล็ก --fail-on
CLI
ตัวอย่างเช่น ต่อไปนี้คือวิธีที่คุณสามารถกระตุ้นให้เกิดความล้มเหลวไปป์ไลน์ CI หากพบช่องโหว่ใน ubuntu:latest
ที่มีระดับความรุนแรง "ปานกลาง" หรือสูงกว่า:
grype ubuntu:latest --fail-on medium
หากคุณเห็น Grype รายงาน ผลบวกลวง หรือการจับคู่ช่องโหว่อื่นๆ ที่คุณไม่ต้องการเห็น คุณสามารถบอกให้ Grype เพิกเฉยต่อ การจับ คู่ได้โดยการระบุ "ละเว้นกฎ" อย่างน้อยหนึ่งกฎในไฟล์การกำหนดค่า Grype ของคุณ (เช่น ~/.grype.yaml
) ซึ่งจะทำให้ Grype ไม่รายงานการจับคู่ช่องโหว่ใดๆ ที่ตรงตามเกณฑ์ที่ระบุโดยกฎการเพิกเฉยใดๆ ของคุณ
แต่ละกฎสามารถระบุเกณฑ์ต่อไปนี้รวมกันได้:
รหัสช่องโหว่ (เช่น "CVE-2008-4318"
)
เนมสเปซ (เช่น "nvd"
)
สถานะการแก้ไข (ค่าที่อนุญาต: "fixed"
, "not-fixed"
, "wont-fix"
หรือ "unknown"
)
ชื่อแพ็คเกจ (เช่น "libcurl"
)
เวอร์ชันแพ็คเกจ (เช่น "1.5.1"
)
ภาษาแพ็คเกจ (เช่น "python"
ค่าเหล่านี้ถูกกำหนดไว้ที่นี่)
ประเภทแพ็คเกจ (เช่น "npm"
ค่าเหล่านี้ถูกกำหนดไว้ที่นี่)
ตำแหน่งแพ็คเกจ (เช่น "/usr/local/lib/node_modules/**"
; รองรับรูปแบบ glob)
ต่อไปนี้เป็นตัวอย่าง ~/.grype.yaml
ที่แสดงรูปแบบที่ต้องการสำหรับกฎการละเว้น:
ละเว้น: # นี่คือชุดฟิลด์กฎที่รองรับทั้งหมด: - ช่องโหว่: CVE-2008-4318 แก้ไขสถานะ: ไม่ทราบ # ฟิลด์ VEX จะถูกนำไปใช้เมื่อ Grype อ่านข้อมูล vex: vex-status: not_affected vex-justification: allowance_code_not_present แพ็คเกจ: ชื่อ: libcurl เวอร์ชัน: 1.5.1 ประเภท: ตำแหน่ง npm: "/ usr/local/lib/node_modules/**" # เราสามารถสร้างกฎให้ตรงกันได้โดยใช้รหัสช่องโหว่: - ช่องโหว่: CVE-2014-54321 # ...หรือเพียงฟิลด์แพ็คเกจเดียว: - แพ็คเกจ : ชนิด : อัญมณี
การแข่งขันที่มีช่องโหว่จะถูกละเว้นหากมีกฎ ใดๆ ที่มีผลกับการแข่งขัน กฎจะถือว่านำไปใช้กับการจับคู่ช่องโหว่ที่ระบุเฉพาะเมื่อฟิลด์ ทั้งหมด ที่ระบุในกฎใช้กับการจับคู่ช่องโหว่เท่านั้น
เมื่อคุณเรียกใช้ Grype ในขณะที่ระบุกฎการละเว้น สิ่งต่อไปนี้จะเกิดขึ้นกับการจับคู่ช่องโหว่ที่ถูก "ละเว้น":
การแข่งขันที่ละเว้นจะถูก ซ่อนไว้อย่างสมบูรณ์ จากเอาต์พุตของ Grype ยกเว้นเมื่อใช้รูปแบบเอาต์พุต json
หรือ template
อย่างไรก็ตาม ในทั้งสองรูปแบบนี้ รายการที่ตรงกันที่ถูกละเว้นจะ ถูกลบออก จากฟิลด์อาร์เรย์ matches
ที่มีอยู่ และจะถูกวางไว้ในฟิลด์อาร์เรย์ ignoredMatches
ใหม่ การจับคู่ที่ถูกละเว้นแต่ละรายการยังมีช่องเพิ่มเติม appliedIgnoreRules
ซึ่งเป็นอาร์เรย์ของกฎใดๆ ที่ทำให้ Grype เพิกเฉยต่อการจับคู่ช่องโหว่นี้
การจับคู่ที่ถูกละเว้น จะไม่ คำนึงถึงการตัดสินใจสถานะการออกของ Grype เมื่อใช้ --fail-on
ตัวอย่างเช่น หากผู้ใช้ระบุ --fail-on critical
และการจับคู่ช่องโหว่ทั้งหมดที่พบกับความรุนแรง "วิกฤติ" ถูก ละเว้น Grype จะออกจากศูนย์
หมายเหตุ: โปรด รายงาน ผลบวกลวงที่คุณเห็นต่อไป! แม้ว่าคุณจะสามารถกรองผลบวกลวงออกได้อย่างน่าเชื่อถือโดยใช้กฎการเพิกเฉย แต่ก็มีประโยชน์มากสำหรับชุมชน Grype ถ้าเรามีความรู้เกี่ยวกับผลบวกลวงของ Grype มากที่สุดเท่าที่จะเป็นไปได้ สิ่งนี้ช่วยให้เราปรับปรุง Grype อย่างต่อเนื่อง!
หากคุณต้องการให้ Grype รายงานช่องโหว่ ที่มีการแก้ไขที่ได้รับการยืนยัน แล้ว คุณสามารถใช้แฟล็ก --only-fixed
(ซึ่งจะเพิ่มกฎการเพิกเฉยลงในการกำหนดค่าของ Grype โดยอัตโนมัติ โดยที่ช่องโหว่ที่ไม่ได้รับการแก้ไขจะถูกละเว้น)
ตัวอย่างเช่น นี่คือการสแกน Alpine 3.10:
NAME INSTALLED FIXED-IN VULNERABILITY SEVERITY apk-tools 2.10.6-r0 2.10.7-r0 CVE-2021-36159 Critical libcrypto1.1 1.1.1k-r0 CVE-2021-3711 Critical libcrypto1.1 1.1.1k-r0 CVE-2021-3712 High libssl1.1 1.1.1k-r0 CVE-2021-3712 High libssl1.1 1.1.1k-r0 CVE-2021-3711 Critical
...และนี่คือการสแกนแบบเดียวกัน แต่เพิ่มการตั้งค่าสถานะ --only-fixed
:
NAME INSTALLED FIXED-IN VULNERABILITY SEVERITY apk-tools 2.10.6-r0 2.10.7-r0 CVE-2021-36159 Critical
หากคุณต้องการให้ Grype รายงานเฉพาะช่องโหว่ ที่ไม่มีการแก้ไขที่ได้รับการยืนยัน คุณสามารถใช้แฟล็ก --only-notfixed
หรือคุณสามารถใช้แฟล็ก --ignore-states
เพื่อกรองผลลัพธ์สำหรับช่องโหว่ที่มีสถานะเฉพาะ เช่น wont-fix
(ดู --help
สำหรับรายการสถานะการแก้ไขที่ถูกต้อง) การตั้งค่าสถานะเหล่านี้จะเพิ่มกฎการเพิกเฉยลงในการกำหนดค่าของ Grype โดยอัตโนมัติ โดยที่ช่องโหว่ที่ได้รับการแก้ไขแล้วหรือจะไม่ได้รับการแก้ไขจะถูกเพิกเฉย
Grype สามารถใช้ข้อมูล VEX (Vulnerability Exploitability Exchange) เพื่อกรองผลบวกลวงหรือให้บริบทเพิ่มเติม เพื่อเพิ่มการจับคู่ เมื่อสแกนอิมเมจคอนเทนเนอร์ คุณสามารถใช้แฟล็ก --vex
เพื่อชี้ไปที่เอกสาร OpenVEX อย่างน้อย 1 รายการ
คำสั่ง VEX เกี่ยวข้องกับผลิตภัณฑ์ (อิมเมจคอนเทนเนอร์) ช่องโหว่ และสถานะ VEX เพื่อแสดงการยืนยันถึงผลกระทบของช่องโหว่ มีสถานะ VEX สี่สถานะ: not_affected
, affected
, fixed
และ under_investigation
นี่คือตัวอย่างเอกสาร OpenVEX แบบธรรมดา (เคล็ดลับ: ใช้ vexctl
เพื่อสร้างเอกสารของคุณเอง)
{ "@context": "https://openvex.dev/ns/v0.2.0", "@id": "https://openvex.dev/docs/public/vex-d4e9020b6d0d26f131d535e055902dd6ccf3e2088bce3079a8cd3588a4b14c78", "ผู้เขียน": " ผู้ใช้ Grype", "timestamp": "2023-07-17T18:28:47.696004345-06:00", "version": 1, "statements": [ { "ช่องโหว่": { "ชื่อ": "CVE-2023-1255" }, "สินค้า": [ { "@id": "pkg:oci/alpine@sha256%3A124c7d2707904eea7431fffe91522a01e5a861a624ee31d03372cc1d138a3126", "ส่วนประกอบย่อย": [ { "@id": "pkg:apk/alpine/[email protected]" }, { "@id": "pkg:apk/alpine/[email protected]" } - - ], "สถานะ": "แก้ไขแล้ว" - - -
ตามค่าเริ่มต้น Grype จะใช้คำสั่งใดๆ ในเอกสาร VEX ที่ระบุซึ่งมีสถานะ not_affected
หรือ fixed
เพื่อย้ายรายการที่ตรงกันไปยังชุดละเว้น
การจับคู่ใด ๆ ที่ถูกละเว้นอันเป็นผลมาจากคำสั่ง VEX จะถูกตั้งค่าสถานะเมื่อใช้ --show-suppressed
:
libcrypto3 3.0.8-r3 3.0.8-r4 apk CVE-2023-1255 Medium (suppressed by VEX)
ข้อความที่มีสถานะ affected
หรือ under_investigation
จะได้รับการพิจารณาเพื่อเพิ่มชุดผลลัพธ์เมื่อมีการร้องขอโดยเฉพาะโดยใช้ตัวแปรสภาพแวดล้อม GRYPE_VEX_ADD
หรือในไฟล์การกำหนดค่า
สามารถเขียนกฎการเพิกเฉยเพื่อควบคุมวิธีที่ Grype ให้เกียรติคำสั่ง VEX ตัวอย่างเช่น ในการกำหนดค่า Grype ให้ดำเนินการเฉพาะกับคำสั่ง VEX เมื่อเหตุผลเป็นช่อง vulnerable_code_not_present
คุณสามารถเขียนกฎดังนี้:
---ไม่สนใจ: - สถานะ vex: not_affected vex-justification:เปราะบาง_code_not_present
ดูรายการเหตุผลเพื่อดูรายละเอียด คุณสามารถผสม vex-status
และ vex-justification
กับพารามิเตอร์กฎการละเว้นอื่นๆ ได้
เมื่อ Grype ทำการสแกนหาช่องโหว่ Grype จะดำเนินการดังกล่าวโดยใช้ฐานข้อมูลช่องโหว่ที่จัดเก็บไว้ในระบบไฟล์ในเครื่องของคุณ ซึ่งสร้างขึ้นโดยการดึงข้อมูลจากแหล่งข้อมูลช่องโหว่ต่างๆ ที่เปิดเผยต่อสาธารณะ แหล่งที่มาเหล่านี้ได้แก่:
อัลไพน์ Linux SecDB: https://secdb.alpinelinux.org/
Amazon Linux ALAS: https://alas.aws.amazon.com/AL2/alas.rss
Chainguard SecDB: https://packages.cgr.dev/chainguard/security.json
ตัวติดตาม Debian Linux CVE: https://security-tracker.debian.org/tracker/data/json
คำแนะนำด้านความปลอดภัย GitHub (GHSA): https://github.com/advisories
ฐานข้อมูลช่องโหว่แห่งชาติ (NVD): https://nvd.nist.gov/vuln/data-feeds
ออราเคิล ลินุกซ์ OVAL: https://linux.oracle.com/security/oval/
ข้อมูลความปลอดภัยของ RedHat Linux: https://access.redhat.com/hydra/rest/securitydata/
RedHat RHSA: https://www.redhat.com/security/data/oval/
SUSE Linux OVAL: https://ftp.suse.com/pub/projects/security/oval/
ความปลอดภัยของ Ubuntu Linux: https://people.canonical.com/~ubuntu-security/
Wolfi SecDB: https://packages.wolfi.dev/os/security.json
ตามค่าเริ่มต้น Grype จะจัดการฐานข้อมูลนี้ให้คุณโดยอัตโนมัติ Grype ตรวจสอบการอัปเดตใหม่ในฐานข้อมูลช่องโหว่เพื่อให้แน่ใจว่าการสแกนทุกครั้งใช้ข้อมูลช่องโหว่ที่ทันสมัย ลักษณะการทำงานนี้สามารถกำหนดค่าได้ สำหรับข้อมูลเพิ่มเติม โปรดดูส่วนการจัดการฐานข้อมูลของ Grype
ฐานข้อมูลช่องโหว่ของ Grype เป็นไฟล์ SQLite ชื่อ vulnerability.db
การอัปเดตฐานข้อมูลเป็นแบบอะตอมมิก: Grype แทนที่ฐานข้อมูลทั้งหมดแล้วถือว่าเป็น "อ่านอย่างเดียว"
ขั้นตอนแรกของ Grype ในการอัพเดตฐานข้อมูลคือการค้นหาฐานข้อมูลที่พร้อมสำหรับการเรียกค้น Grype ทำได้โดยการร้องขอ "ไฟล์รายการ" จากจุดสิ้นสุดสาธารณะ:
https://toolbox-data.anchore.io/grype/databases/listing.json
ไฟล์รายการประกอบด้วยรายการสำหรับทุกฐานข้อมูลที่พร้อมให้ดาวน์โหลด
ต่อไปนี้เป็นตัวอย่างของรายการในไฟล์รายการ:
{ "สร้าง": "2021-10-21T08:13:41Z", "เวอร์ชัน": 3, "url": "https://toolbox-data.anchore.io/grype/databases/vulnerability-db_v3_2021-10- 21T08:13:41Z.tar.gz", "เช็คซัม": "sha256:8c99fb4e516f10b304f026267c2a73a474e2df878a59bf688cfb0f094bfe7a91"}
ด้วยข้อมูลนี้ Grype สามารถเลือกฐานข้อมูลที่ถูกต้อง (ฐานข้อมูลที่สร้างขึ้นล่าสุดด้วยเวอร์ชันสคีมาปัจจุบัน) ดาวน์โหลดฐานข้อมูล และตรวจสอบความสมบูรณ์ของฐานข้อมูลโดยใช้ค่า checksum
ที่ระบุไว้
หมายเหตุ: ในระหว่างการใช้งานปกติ ผู้ใช้ไม่จำเป็นต้องจัดการฐานข้อมูลของ Grype! Grype จัดการฐานข้อมูลเบื้องหลัง อย่างไรก็ตาม สำหรับผู้ใช้ที่ต้องการการควบคุมที่มากขึ้น Grype มีตัวเลือกในการจัดการฐานข้อมูลให้ชัดเจนยิ่งขึ้น
ตามค่าเริ่มต้น ฐานข้อมูลจะถูกแคชไว้บนระบบไฟล์ในเครื่องในไดเร็กทอรี $XDG_CACHE_HOME/grype/db/
ตัวอย่างเช่น บน macOS ฐานข้อมูลจะถูกจัดเก็บไว้ใน ~/Library/Caches/grype/db/3/
(สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเส้นทาง XDG โปรดดูข้อกำหนดเฉพาะของไดเรกทอรีฐาน XDG)
คุณสามารถตั้งค่าเส้นทางไดเรกทอรีแคชได้โดยใช้ตัวแปรสภาพแวดล้อม GRYPE_DB_CACHE_DIR
หากการตั้งค่าตัวแปรนั้นเพียงอย่างเดียวไม่ได้ผล อาจจำเป็นต้องตั้งค่าตัวแปรสภาพแวดล้อม TMPDIR
ด้วย
Grype ต้องการข้อมูลช่องโหว่ที่เป็นปัจจุบันเพื่อให้การจับคู่ที่แม่นยำ ตามค่าเริ่มต้น การดำเนินการจะล้มเหลวหากไม่มีการสร้างฐานข้อมูลภายในเครื่องในช่วง 5 วันที่ผ่านมา การตรวจสอบความเก่าของข้อมูลสามารถกำหนดค่าได้ผ่านตัวแปรสภาพแวดล้อม GRYPE_DB_MAX_ALLOWED_BUILT_AGE
และ GRYPE_DB_VALIDATE_AGE
หรือฟิลด์ max-allowed-built-age
และ validate-age
ภายใต้ db
มันใช้ไวยากรณ์ระยะเวลาของ golang ตั้งค่า GRYPE_DB_VALIDATE_AGE
หรือ validate-age
เป็น false
เพื่อปิดใช้งานการตรวจสอบความล้าสมัย
ตามค่าเริ่มต้น Grype จะตรวจสอบฐานข้อมูลใหม่ทุกครั้งที่ใช้งาน โดยการโทรผ่านเครือข่ายผ่านอินเทอร์เน็ต คุณสามารถบอก Grype ได้ว่าอย่าทำการตรวจสอบนี้โดยการตั้งค่าตัวแปรสภาพแวดล้อม GRYPE_DB_AUTO_UPDATE
เป็น false
ตราบใดที่คุณวางไฟล์ vulnerability.db
และ metadata.json
ของ Grype ในไดเร็กทอรีแคชสำหรับเวอร์ชันสคีมาที่คาดไว้ Grype ก็ไม่จำเป็นต้องเข้าถึงเครือข่าย นอกจากนี้ คุณยังสามารถรับรายการไฟล์เก็บถาวรฐานข้อมูลที่พร้อมให้ดาวน์โหลดได้จากคำสั่ง grype db list
ในสภาพแวดล้อมออนไลน์ ดาวน์โหลดไฟล์เก็บถาวรฐานข้อมูล ถ่ายโอนไปยังสภาพแวดล้อมออฟไลน์ของคุณ และใช้ grype db import
เพื่อ ใช้ฐานข้อมูลที่กำหนดในความจุออฟไลน์
หากคุณต้องการกระจายฐานข้อมูล Grype ของคุณเองเป็นการภายในโดยไม่จำเป็นต้องใช้ db import
ด้วยตนเอง คุณสามารถใช้ประโยชน์จากกลไกการอัปเดต DB ของ Grype ได้ ในการดำเนินการนี้ คุณสามารถสร้างไฟล์ listing.json
ของคุณเองได้คล้ายกับไฟล์ที่พบในสาธารณะ (ดู grype db list -o raw
สำหรับตัวอย่างไฟล์ listing.json
ของเรา) และเปลี่ยน URL ดาวน์โหลดให้ชี้ไปยังจุดสิ้นสุดภายใน (เช่น บัคเก็ต S3 ส่วนตัว, เซิร์ฟเวอร์ไฟล์ภายใน ฯลฯ) การติดตั้ง Grype ภายในใดๆ สามารถรับการอัปเดตฐานข้อมูลได้โดยอัตโนมัติโดยการกำหนดค่า db.update-url
(เหมือนกับตัวแปรสภาพแวดล้อม GRYPE_DB_UPDATE_URL
) ให้ชี้ไปที่ไฟล์ listing.json
ที่โฮสต์ที่คุณสร้างขึ้น
Grype มีคำสั่ง CLI เฉพาะฐานข้อมูลสำหรับผู้ใช้ที่ต้องการควบคุมฐานข้อมูลจากบรรทัดคำสั่ง ต่อไปนี้คือคำสั่งที่มีประโยชน์บางส่วนที่มีให้:
grype db status
— รายงานสถานะปัจจุบันของฐานข้อมูลของ Grype (เช่น ตำแหน่ง วันที่สร้าง และผลรวมตรวจสอบ)
grype db check
— ดูว่ามีการอัพเดตสำหรับฐานข้อมูลหรือไม่
grype db update
— ตรวจสอบให้แน่ใจว่าได้ดาวน์โหลดฐานข้อมูลล่าสุดไปยังไดเร็กทอรีแคชแล้ว (Grype ดำเนินการนี้เมื่อเริ่มต้นการสแกนทุกครั้งตามค่าเริ่มต้น)
grype db list
— ดาวน์โหลดไฟล์รายชื่อที่กำหนดค่าไว้ที่ db.update-url
และแสดงฐานข้อมูลที่พร้อมให้ดาวน์โหลด
grype db import
— ให้ grype พร้อมไฟล์เก็บถาวรฐานข้อมูลเพื่อใช้งานอย่างชัดเจน (มีประโยชน์สำหรับการอัพเดตฐานข้อมูลออฟไลน์)
grype db providers
- แสดงรายการผู้ให้บริการฐานข้อมูลโดยละเอียด
ค้นหาข้อมูลที่สมบูรณ์เกี่ยวกับคำสั่งฐานข้อมูลของ Grype โดยการเรียกใช้ grype db --help
Grype จัดหากระบวนการสร้างเชลล์ให้สมบูรณ์ด้วยการใช้ CLI (งูเห่า) สร้างโค้ดการเสร็จสิ้นสำหรับเชลล์ของคุณโดยการรันคำสั่งใดคำสั่งหนึ่งต่อไปนี้:
grype completion
go run ./cmd/grype completion
สิ่งนี้จะส่งออกเชลล์สคริปต์ไปที่ STDOUT ซึ่งสามารถใช้เป็นสคริปต์การเสร็จสิ้นสำหรับ Grype ได้ การรันคำสั่งใดคำสั่งหนึ่งข้างต้นด้วยแฟล็ก -h
หรือ --help
จะให้คำแนะนำเกี่ยวกับวิธีการดำเนินการดังกล่าวสำหรับเชลล์ที่คุณเลือก
เมื่อไม่มีคอนเทนเนอร์รันไทม์ grype ยังคงสามารถใช้ข้อมูลรับรองที่กำหนดค่าไว้ในแหล่งข้อมูลรับรองทั่วไป (เช่น ~/.docker/config.json
) มันจะดึงรูปภาพจากการลงทะเบียนส่วนตัวโดยใช้ข้อมูลรับรองเหล่านี้ ไฟล์กำหนดค่าเป็นที่เก็บข้อมูลรับรองของคุณเมื่อตรวจสอบสิทธิ์กับรีจิสทรีส่วนตัวผ่านคำสั่งบางอย่างเช่น docker login
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบ go-containerregistry
ตัวอย่าง config.json
มีลักษณะดังนี้:
// config.json { "auths": { "registry.example.com": { "username": "AzureDiamond", "password": "hunter2" } } }
คุณสามารถรันคำสั่งต่อไปนี้เป็นตัวอย่าง โดยให้รายละเอียดเกี่ยวกับการกำหนดค่าการเมานท์/สภาพแวดล้อมที่คอนเทนเนอร์จำเป็นต้องเข้าถึงรีจิสทรีส่วนตัว:
docker run -v ./config.json:/config/config.json -e "DOCKER_CONFIG=/config" anchore/grype:latest
ส่วนด้านล่างแสดงขั้นตอนการทำงานง่ายๆ เกี่ยวกับวิธีเมานต์ไฟล์กำหนดค่านี้เป็นความลับในคอนเทนเนอร์บน Kubernetes
สร้างความลับ ค่าของ config.json
มีความสำคัญ มันอ้างถึงข้อกำหนดที่มีรายละเอียดอยู่ที่นี่ ด้านล่างส่วนนี้คือไฟล์ secret.yaml
ที่การกำหนดค่าพ็อดจะใช้เป็นโวลุ่ม คีย์ config.json
มีความสำคัญ มันจะกลายเป็นชื่อของไฟล์เมื่อเมานท์ลงในพ็อด
apiVersion: v1
kind: Secret
metadata:
name: registry-config
namespace: grype
data:
config.json:
```
`kubectl apply -f secret.yaml`
สร้างพ็อดของคุณที่กำลังรัน grype env DOCKER_CONFIG
มีความสำคัญเนื่องจากจะโฆษณาตำแหน่งที่จะค้นหาไฟล์ข้อมูลรับรอง ในตัวอย่างด้านล่าง การตั้งค่า DOCKER_CONFIG=/config
จะแจ้งให้ grype ทราบว่าข้อมูลประจำตัวสามารถพบได้ที่ /config/config.json
นี่คือสาเหตุที่เราใช้ config.json
เป็นกุญแจไขความลับของเรา เมื่อติดตั้งในคอนเทนเนอร์ รหัสลับจะถูกใช้เป็นชื่อไฟล์ ส่วน volumeMounts
จะยึดความลับของเราไปที่ /config
ส่วน volumes
จะตั้งชื่อวอลุ่มของเราและใช้ประโยชน์จากความลับที่เราสร้างขึ้นในขั้นตอนที่หนึ่ง
apiVersion: v1
kind: Pod
spec:
containers:
- image: anchore/grype:latest
name: grype-private-registry-demo
env:
- name: DOCKER_CONFIG
value: /config
volumeMounts:
- mountPath: /config
name: registry-config
readOnly: true
args:
-
volumes:
- name: registry-config
secret:
secretName: registry-config
```
`kubectl apply -f pod.yaml`
ขณะนี้ผู้ใช้สามารถเรียกใช้ kubectl logs grype-private-registry-demo
บันทึกควรแสดงการวิเคราะห์ grype สำหรับ
ที่ให้ไว้ในการกำหนดค่าพ็อด
เมื่อใช้ข้อมูลข้างต้น ผู้ใช้ควรจะสามารถกำหนดค่าการเข้าถึงรีจิสทรีส่วนตัวได้โดยไม่ต้องดำเนินการดังกล่าวในไฟล์การกำหนดค่า grype
หรือ syft
นอกจากนี้ยังจะไม่ขึ้นอยู่กับ docker daemon (หรือซอฟต์แวร์รันไทม์อื่นๆ) สำหรับการกำหนดค่าและการเข้าถึงรีจิสทรี
เส้นทางการค้นหาการกำหนดค่าเริ่มต้น (ดูทั้งหมดด้วย grype config locations
):
.grype.yaml
.grype/config.yaml
~/.grype.yaml
ใช้ grype config
เพื่อพิมพ์ไฟล์ปรับแต่งตัวอย่างไปยัง stdout ใช้ grype config --load
เพื่อพิมพ์การกำหนดค่าปัจจุบันหลังจากโหลดค่าทั้งหมดไปที่ stdout
คุณสามารถระบุไฟล์ได้โดยตรงโดยใช้แฟล็ก --config
/ -c
เพื่อจัดเตรียมไฟล์/พาธการกำหนดค่าของคุณเอง:
grype-c /path/to/config.yaml
ตัวเลือกการกำหนดค่า (ค่าตัวอย่างเป็นค่าเริ่มต้น):
# เปิด/ปิดการตรวจสอบการอัปเดตแอปพลิเคชันเมื่อเริ่มต้น# เช่นเดียวกับ GRYPE_CHECK_FOR_APP_UPDATE env varcheck-for-app-update: true# อนุญาตให้ผู้ใช้ระบุแหล่งที่มาของรูปภาพที่ควรใช้เพื่อสร้าง sbom# ค่าที่ถูกต้องคือ: รีจิสทรี, นักเทียบท่า, podman# เช่นเดียวกับ GRYPE_DEFAULT_IMAGE_PULL_SOURCE env vardefault-image-pull-source: ""# เหมือนกับ --name; ตั้งชื่อของเป้าหมายที่กำลังวิเคราะห์ชื่อ: ""# เมื่อสแกน หากพบความรุนแรงที่หรือสูงกว่าความรุนแรงที่กำหนด รหัสส่งคืนจะเป็น 1# ค่าเริ่มต้นจะไม่ได้ตั้งค่า ซึ่งจะข้ามการตรวจสอบนี้ (ตัวเลือก: เล็กน้อย ต่ำ ปานกลาง , สูง, สำคัญ)# เช่นเดียวกับ --fail-on ; GRYPE_FAIL_ON_SEVERITY env varfail-on-severity: ""# รูปแบบเอาต์พุตของรายงานช่องโหว่ (ตัวเลือก: ตาราง, เทมเพลต, json, cyclonedx)# เมื่อใช้เทมเพลตเป็นประเภทเอาต์พุต คุณต้องระบุค่าสำหรับ 'output-template- file'# เช่นเดียวกับ -o ; GRYPE_OUTPUT env varoutput: "table"# หากใช้เอาต์พุตเทมเพลต คุณต้องระบุเส้นทางไปยังไฟล์เทมเพลต Go# ดู https://github.com/anchore/grype#using-templates สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเอาต์พุตเทมเพลต# เส้นทางเริ่มต้น ไปยังไฟล์เทมเพลตคือไดเร็กทอรีการทำงานปัจจุบัน # output-template-file: .grype/html.tmpl# เขียนรายงานเอาต์พุตไปยังไฟล์ (ค่าเริ่มต้นคือการเขียนไปยัง stdout)# เช่นเดียวกับ --file; GRYPE_FILE env varfile: ""# รายการ globs ที่จะแยกออกจากการสแกน ตัวอย่างเช่น:# ยกเว้น:# - '/etc/**'# - './out/**/*.json'# เช่นเดียวกับ -- ไม่รวม; GRYPE_EXCLUDE env varexclude: []# รวมการจับคู่ในแพ็คเกจเคอร์เนลส่วนหัวที่จับคู่กับแพ็คเกจเคอร์เนลอัปสตรีม # หาก 'เท็จ' การจับคู่ใด ๆ ดังกล่าวถูกทำเครื่องหมายเป็น ignedmatch-upstream-kernel-headers: false# os และ/หรือสถาปัตยกรรมที่จะใช้เมื่อ อ้างอิงอิมเมจคอนเทนเนอร์ (เช่น "windows/armv6" หรือ "arm64")# เช่นเดียวกับ --platform; GRYPE_PLATFORM env varplatform: ""# หากใช้อินพุต SBOM จะสร้าง CPE โดยอัตโนมัติเมื่อแพ็คเกจมี noneadd-cpes-if-none: false# ระบุการกระจาย linux อย่างชัดเจนเพื่อใช้เป็น: เช่น อัลไพน์:3.10distro:external - แหล่งที่มา: เปิดใช้งาน: false maven: search-upstream-by-sha1: true base-url: https://repo1.maven.org/maven2db: # ตรวจสอบการอัปเดตฐานข้อมูลในการดำเนินการ # เหมือนกับ GRYPE_DB_AUTO_UPDATE env var อัปเดตอัตโนมัติ: ตำแหน่ง # จริงเพื่อเขียนแคชฐานข้อมูลช่องโหว่ ค่าเริ่มต้นเป็น $XDG_CACHE_HOME/grype/db # เหมือนกับ GRYPE_DB_CACHE_DIR env var cache-dir: "" # URL ของฐานข้อมูลช่องโหว่ # เหมือนกับ GRYPE_DB_UPDATE_URL env var update-url: "https://toolbox-data.anchore.io/grype /databases/listing.json" # ช่วยให้มั่นใจได้ว่า db build ไม่เก่ากว่าอายุสูงสุดที่อนุญาต # ตั้งค่าเป็น false เพื่อปิดใช้งานการตรวจสอบอายุการตรวจสอบ: จริง # อายุสูงสุดที่อนุญาตสำหรับฐานข้อมูลช่องโหว่ # อายุเป็นเวลาตั้งแต่นั้นมา มันถูกสร้างขึ้น # อายุสูงสุดเริ่มต้นคือ 120 ชั่วโมง (หรือห้าวัน) อายุสูงสุดที่อนุญาต: "120 ชั่วโมง" # หมดเวลาสำหรับการดาวน์โหลด GRYPE_DB_UPDATE_URL เพื่อดูว่าจำเป็นต้องดาวน์โหลดฐานข้อมูลหรือไม่ # ไฟล์นี้มีขนาด ~ 156KiB ณ ปี 2024-04 -17 ดังนั้นการดาวน์โหลดควรจะรวดเร็ว ปรับตามความจำเป็น การอัปเดต-พร้อมใช้งาน-หมดเวลา: "30 วินาที" # หมดเวลาสำหรับการดาวน์โหลดฐานข้อมูลช่องโหว่จริง # ฐานข้อมูลอยู่ที่ ~156MB ณ วันที่ 2024-04-17 ดังนั้นการเชื่อมต่อที่ช้ากว่าอาจเกินการหมดเวลาเริ่มต้น ปรับตามต้องการ อัปเดต - ดาวน์โหลด - หมดเวลา: "120s" ค้นหา: # พื้นที่ค้นหาเพื่อค้นหาแพ็คเกจ (ตัวเลือก: ทุกเลเยอร์, แบน) # เหมือนกับ -s ; GRYPE_SEARCH_SCOPE env ขอบเขต var: "squashed" # ค้นหาภายในไฟล์เก็บถาวรที่มีดัชนีไฟล์เพื่อค้นหา (zip) # หมายเหตุ: สำหรับตอนนี้ใช้ได้กับแค็ตตาล็อกแพ็คเกจ java เท่านั้น # เช่นเดียวกับ GRYPE_PACKAGE_SEARCH_INDEXED_ARCHIVES env var indexed-archives: true # search ภายในไฟล์เก็บถาวรที่ไม่มีดัชนีไฟล์สำหรับค้นหา (tar, tar.gz, tar.bz2 ฯลฯ) # หมายเหตุ: การเปิดใช้งานสิ่งนี้อาจส่งผลให้เกิดผลกระทบต่อประสิทธิภาพเนื่องจาก tars ที่ถูกบีบอัดที่ค้นพบทั้งหมดจะถูกขยายขนาด # หมายเหตุ: สำหรับตอนนี้ ใช้กับแค็ตตาล็อกแพ็คเกจ Java เท่านั้น # เช่นเดียวกับ GRYPE_PACKAGE_SEARCH_UNINDEXED_ARCHIVES env var unindexed-archives: false# ตัวเลือกเมื่อดึงโดยตรงจากรีจิสตรีผ่าน Schemeregistry "รีจิสทรี:": # ข้ามการตรวจสอบ TLS เมื่อสื่อสารกับรีจิสตรี # เหมือนกับ GRYPE_REGISTRY_INSECURE_SKIP_TLS_VERIFY env var ไม่ปลอดภัย -skip-tls-verify: false # ใช้ http แทน https เมื่อเชื่อมต่อกับรีจิสทรี # เช่นเดียวกับ GRYPE_REGISTRY_INSECURE_USE_HTTP env var insecure-use-http: false # filepath ไปยังใบรับรอง CA (หรือไดเร็กทอรีที่มี *.crt, *.cert, *.pem) ใช้เพื่อสร้างใบรับรองไคลเอ็นต์ # GRYPE_REGISTRY_CA_CERT env var ca-cert: "" # ข้อมูลประจำตัวสำหรับการลงทะเบียนเฉพาะ auth: # URL ไปยังรีจิสทรี (เช่น "docker.io", "localhost:5000" ฯลฯ) # GRYPE_REGISTRY_AUTH_AUTHORITY สภาพแวดล้อม var - ผู้มีอำนาจ: "" # GRYPE_REGISTRY_AUTH_USERNAME ชื่อผู้ใช้ env var: "" # GRYPE_REGISTRY_AUTH_PASSWORD รหัสผ่าน env var: "" # หมายเหตุ: โทเค็นและชื่อผู้ใช้/รหัสผ่านไม่เกิดร่วมกัน # GRYPE_REGISTRY_AUTH_TOKEN โทเค็น env var: "" # พาธไฟล์ไปยังใบรับรองไคลเอ็นต์ที่ใช้สำหรับการตรวจสอบสิทธิ์ TLS ไปยังรีจิสทรี # GRYPE_REGISTRY_AUTH_TLS_CERT env var tls-cert: "" # filepath ไปยังคีย์ไคลเอ็นต์ที่ใช้สำหรับการตรวจสอบสิทธิ์ TLS ไปยังรีจิสทรี # GRYPE_REGISTRY_AUTH_TLS_KEY env var tls-key: "" # - ... # หมายเหตุ สามารถระบุข้อมูลประจำตัวเพิ่มเติมได้ผ่านทาง ไฟล์ config เท่านั้น (ไม่ใช่ env vars)log: # ระงับเอาต์พุตทั้งหมด (ยกเว้นรายการช่องโหว่) # เหมือนกับ -q ; GRYPE_LOG_QUIET env var quiet: false # เพิ่มรายละเอียด # เช่นเดียวกับ GRYPE_LOG_VERBOSITY env var verbosity: 0 # ระดับการบันทึก; หมายเหตุ: การบันทึกโดยละเอียดระงับ ETUI # เช่นเดียวกับ GRYPE_LOG_LEVEL env var # ใช้ระดับการบันทึก logrus: https://github.com/sirupsen/logrus#level-logging ระดับ: "ข้อผิดพลาด" # ตำแหน่งที่จะเขียนไฟล์บันทึก (ค่าเริ่มต้นไม่ใช่ ที่จะมีไฟล์บันทึก) # เหมือนกับไฟล์ env var ของ GRYPE_LOG_FILE: "" การจับคู่: # ตั้งค่าตัวจับคู่ด้านล่างเพื่อใช้ cpes เมื่อพยายามค้นหา # รายการที่ตรงกันที่มีช่องโหว่ ตัวจับคู่หุ้นเป็นค่าเริ่มต้น # เมื่อไม่สามารถระบุตัวจับคู่หลักได้ java: การใช้-cpes: หลามเท็จ: การใช้-cpes: จาวาสคริปต์เท็จ: การใช้-cpes: ทับทิมเท็จ: การใช้-cpes: เท็จ dotnet: การใช้-cpes: เท็จ golang: การใช้-cpes: false # แม้ว่าการจับคู่ CPE จะถูกปิดใช้งาน สร้างข้อยกเว้นเมื่อสแกนหา "stdlib" Always-use-cpe-for-stdlib: true # อนุญาตเวอร์ชันหลอกของโมดูลหลัก ซึ่งอาจ "คาดเดาได้" โดย Syft เท่านั้น เพื่อใช้ในการจับคู่ช่องโหว่ Allow-main-module-pseudo-version-comparison: false stock : การใช้-cpes: จริง
ปัจจุบันมีการตรวจสอบการพัฒนาศักยภาพด้านต่อไปนี้:
รองรับรายการที่อนุญาต การแมปแพ็คเกจ