เหตุผลที่ Anthropic สร้างบริการนี้
ตลอดระยะเวลากว่าหกเดือน โมเดลของ Anthropic พบช่องโหว่ที่อาจเป็นไปได้มากกว่า 29,000 รายการในซอฟต์แวร์โอเพนซอร์สที่สำคัญ แต่ทีมความปลอดภัยตรวจทานด้วยตนเองได้เพียงประมาณ 6,000 รายการ ผู้ดูแลโปรเจกต์หลายรายที่ได้รับรายงานชุดแรกซึ่งผ่านการยืนยันโดยมนุษย์ขอให้ส่งข้อมูลทั้งหมดมาให้เลยโดยไม่ต้องยืนยัน พร้อมแพตช์ที่เสนอ — จึงมีการส่งรายงานเกือบ 5,000 รายการในลักษณะนั้น
OSS Scanner เปลี่ยนแนวทางดังกล่าวให้เป็นช่องทางด่วนแบบสมัครใจ รายงานที่ผ่านการยืนยันโดยมนุษย์ยังคงดำเนินการผ่านกระบวนการเปิดเผยช่องโหว่แบบประสานงาน (CVD) ของ Anthropic ส่วนโปรเจกต์ที่ลงทะเบียนจะได้รับผลลัพธ์ดิบจากโมเดลเพิ่มเติมทันทีที่พร้อม Anthropic ระบุว่าได้รับแรงบันดาลใจจาก OSS-Fuzz ของ Google
สิ่งที่ผู้ดูแลโปรเจกต์จะได้รับ
หลังลงทะเบียนแล้ว ระบบจะสแกนโปรเจกต์และส่งชุดรายงานให้ผู้ดูแลโปรเจกต์ทางอีเมล ไปป์ไลน์ของ Anthropic ประกอบด้วยเอเจนต์ที่ตรวจสอบบั๊กซ้ำ เสนอแพตช์ และวิเคราะห์หาสาเหตุรากของปัญหา แต่ละรายงานประกอบด้วย:
- ชุดทดสอบที่ทำให้เกิดปัญหาได้ด้วยตัวเอง
- คำอธิบายช่องโหว่ รวมถึงการไล่หาจุดที่บั๊กเริ่มปรากฏด้วยวิธี bisection หากทำได้
- แพตช์ที่เสนอ หากมี
ระบบจะสแกนโปรเจกต์ซ้ำเป็นประจำเพื่อค้นหาบั๊กที่เพิ่งเกิดขึ้นและบั๊กที่พลาดไปก่อนหน้านี้ ความถี่ขึ้นอยู่กับจำนวนโปรเจกต์ในไปป์ไลน์ การใช้งานโปรเจกต์อย่างแพร่หลาย และปัจจัยอื่น ๆ
แม่นยำแค่ไหน
ก่อนเปิดตัว ผู้ทดสอบเจาะระบบของ Anthropic ตรวจสอบ finding ระดับวิกฤตและระดับสูง 97 รายการจาก 48 โปรเจกต์ ในจำนวนนี้ 85 รายการ (88%) ผ่านเกณฑ์สำหรับกระบวนการ CVD ของ Anthropic ส่วน 11 รายการจาก 12 รายการที่เหลือเป็นปัญหาจริงแต่ซ้ำกับปัญหาที่ทราบแล้ว และมีเพียงรายการเดียวที่เป็นผลบวกลวง Anthropic คาดว่าอัตราผลบวกจริงจะสูงกว่า 90% และเตือนว่าการประเมินระดับความรุนแรงอาจสูงเกินจริง หรือเครื่องสแกนอาจตีความ threat model ของโปรเจกต์ผิดพลาด
ผู้เข้าร่วมกลุ่มแรกให้ความเห็นเชิงบวก wolfSSL รายงานว่าในรายงาน 74 รายการ มีเพียงสองรายการที่ไม่ถูกต้อง และมีห้ารายการที่กลายเป็น CVE Daniel Stenberg กล่าวว่าเครื่องมือพบช่องโหว่ curl ที่ร้ายแรงที่สุดรายการหนึ่งในรอบหลายปี ส่วนผู้ดูแล PostgreSQL, OpenSSL และ HotCRP ก็ชื่นชมรายงานเช่นกัน
ใครบ้างที่มีสิทธิ์
Anthropic ใช้เกณฑ์คล้ายกับ OSS-Fuzz โดยพิจารณาโปรเจกต์ที่มีการใช้งานมาระยะหนึ่งและส่งผลกระทบอย่างร้ายแรงต่อโครงสร้างพื้นฐานและความปลอดภัยของผู้ใช้ ทั้งนี้จะพิจารณาเป็นรายกรณี ปัจจัยสำคัญ ได้แก่ ความเสี่ยงจากการโจมตีระยะไกล (เช่น ไลบรารีที่ประมวลผลอินพุตที่ไม่น่าเชื่อถือ) และจำนวนผู้ใช้กับโปรเจกต์ที่พึ่งพา หากความสำคัญของโปรเจกต์ไม่ชัดเจน ให้เพิ่มประโยคสั้น ๆ อธิบายเหตุผล
Anthropic จะตรวจสอบด้วยตนเองว่าผู้สมัครเป็นผู้ดูแลหลักของโปรเจกต์ และอาจติดต่อโปรเจกต์ผ่านช่องทางอื่น บริการนี้เหมาะสำหรับโปรเจกต์ที่จัดการรายงานระดับสูงและระดับวิกฤตที่ผ่านการยืนยันแล้วได้อยู่แล้ว หากกล่องจดหมายของคุณมีรายงานล้นมืออยู่ก่อนแล้ว บริการนี้อาจยังไม่เหมาะกับคุณ
วิธีสมัคร
ผู้ดูแลหลักส่ง pull request ไปที่ github.com/anthropics/oss-scanner เพื่อเพิ่ม projects/your-project/project.yaml โดยเริ่มจากเทมเพลตในรีโพซิทอรีนั้น
ฟิลด์ที่จำเป็น:
- repo — git URL สำหรับโคลน โดยระบุ #branch ได้หากต้องการ และไม่จำเป็นต้องโฮสต์บน GitHub
- primary_contact — อีเมลที่จะได้รับรายงานทุกฉบับ
- Dockerfile — พาธที่สัมพันธ์กับ repo ไปยัง Dockerfile ซึ่งติดตั้ง dependencies และ build โปรเจกต์ หรือวางไฟล์ชื่อ Dockerfile ไว้ข้าง project.yaml แล้วไม่ต้องระบุฟิลด์นี้
ฟิลด์ที่ไม่จำเป็น:
- auto_ccs — ที่อยู่อีเมลเพิ่มเติมที่จะถูกคัดลอกในรายงานทุกฉบับ
- homepage — เว็บไซต์ของโปรเจกต์
- threat_model — พาธไปยัง threat model ของคุณ ค่าเริ่มต้นคือ .oss-scanner/threat_model.md
- pgp — public key สำหรับเข้ารหัสอีเมลรายงาน หากตั้งค่านี้ จะไม่สามารถใช้ CC ได้
- disabled — ตั้งเป็น true เพื่อหยุดรายงานชั่วคราว
เรียกใช้ tools/validate.py และ build Dockerfile ในเครื่องก่อนเปิด PR หลังจากได้รับการยอมรับ Anthropic จะ build image บนโครงสร้างพื้นฐานของตน และส่งอีเมลแจ้งคุณหาก build ไม่สำเร็จ
Dockerfile และการตรวจสอบแบบออฟไลน์
Dockerfile จะถูก build โดยมีสิทธิ์เข้าถึงเครือข่าย หลังจากนั้นทุกขั้นตอน รวมถึงการตรวจสอบของเอเจนต์ จะทำงานโดยปิดการเข้าถึงอินเทอร์เน็ตอย่างสมบูรณ์ภายใน sandbox ที่เสริมความปลอดภัย ดังนั้น image จึงต้องติดตั้ง dependencies ทั้งหมดไว้ล่วงหน้าและ build โปรเจกต์ Anthropic แนะนำให้ตรวจสอบว่าการทดสอบผ่านภายในคอนเทนเนอร์ เพราะจะช่วยให้เอเจนต์ compile และเรียกใช้โค้ดเพื่อยืนยันบั๊กได้
ไฟล์ threat model
threat_model.md เป็นไฟล์ที่ไม่บังคับและไม่มีรูปแบบที่กำหนดไว้ คุณสามารถใช้ไฟล์นี้แจ้งเอเจนต์ในสิ่งที่ไม่มีเอกสารระบุไว้ที่อื่นได้ เช่น:
- ควรทดสอบโค้ดส่วนใด อินพุตใดเป็นการโจมตี และเรื่องใดอยู่นอกขอบเขต
- เกณฑ์ประเมินความรุนแรงระดับวิกฤต สูง กลาง และต่ำ
- รูปแบบรายงานที่ต้องการ แพตช์ควรมีขนาดเล็กที่สุดหรือพร้อม merge และ proof of concept แบบใดที่เป็นประโยชน์
- ควรจัดกลุ่มรายการซ้ำอย่างละเอียดเพียงใด
หากไม่มีไฟล์นี้ เครื่องสแกนจะคาดเดา คุณสามารถเปลี่ยนไฟล์ระหว่างการสแกนแต่ละครั้งเพื่อปรับรายงานได้ เครื่องมือสร้าง threat model ของเราจะสร้างไฟล์ที่พร้อมใช้งานให้
การเปิดเผยข้อมูล การหยุดชั่วคราว และการให้เครดิต
ไม่มีเส้นตาย 90 วันสำหรับ finding เหล่านี้ที่ยังไม่ได้รับการยืนยัน หากภายหลัง Anthropic ยืนยันรายงานผ่านโปรแกรม CVD ของตน อาจเปิดเผยข้อมูลหลังจากแจ้งคุณว่ามนุษย์ได้ยืนยันรายงานแล้ว 90 วัน Anthropic ระบุว่าในอนาคตอาจกำหนดเส้นตายสำหรับรายงานระดับความรุนแรงสูงบางรายการ โดยจะแจ้งให้ทราบล่วงหน้าและให้เลือกไม่เข้าร่วมได้
หากต้องการหยุดชั่วคราว ให้เพิ่ม disabled: true ใน project.yaml ผ่าน PR หากต้องการออกจากโปรแกรม ให้ลบไดเรกทอรี projects/ ส่งความคิดเห็นโดยตอบกลับอีเมลรายงาน หากคุณยังไม่ได้ลงทะเบียน ให้เขียนถึง oss-scanner-questions@anthropic.com
การให้เครดิตเป็นทางเลือก Anthropic แนะนำให้เพิ่มบรรทัดในข้อความ commit เช่น “Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-ABCD1234”
ความปลอดภัยของข้อมูล
รายงานได้รับการจัดการเช่นเดียวกับ finding ในกระบวนการ CVD มาตรฐานของ Anthropic โดยจัดเก็บไว้ในโปรเจกต์คลาวด์ที่แยกออกมาและจำกัดการเข้าถึง ซึ่งมีเพียงเจ้าหน้าที่รักษาความปลอดภัยที่ดูแลโปรแกรมเท่านั้นที่เข้าถึงได้
OSS Scanner เทียบกับ Claude Security
Claude Security เป็นผลิตภัณฑ์เชิงพาณิชย์ของ Anthropic สำหรับองค์กร เพื่อค้นหาและแก้ไขช่องโหว่ในโค้ดของตนเอง ส่วน OSS Scanner มีไว้สำหรับผู้ดูแลโปรเจกต์โอเพนซอร์ส โดยเพิ่ม harness แบบทดลองที่ใช้โทเคนจำนวนมากเพื่อค้นหาบั๊กที่ซับซ้อนกว่า และ Anthropic รับผิดชอบค่าใช้จ่ายทั้งหมด ผู้ดูแลโปรเจกต์ยังสามารถรับ Claude Max 20x ฟรีผ่าน Claude for OSS ได้ และผู้เชี่ยวชาญด้านความปลอดภัยสามารถสมัครเข้าร่วม Cyber Verification Program ได้
ตัวสร้าง project.yaml
กรอกฟิลด์เพื่อสร้าง project.yaml ตามรูปแบบที่อธิบายไว้ในคำถามที่พบบ่อยของ Anthropic พร้อมคำสั่งสำหรับเปิด pull request โปรดตรวจสอบเทมเพลตปัจจุบันในรีโพซิทอรีก่อนส่งทุกครั้ง
ใช้ git host สาธารณะใดก็ได้ โดยจะต่อท้าย branch เป็น #branch
โฟลเดอร์ภายใน projects/ ในรีโพซิทอรีของ Anthropic
โดยปกติให้ใช้อีเมลของคุณเอง อีเมลนี้จะได้รับรายงานทุกรายการ
พาธอ้างอิงจาก repo หากวาง Dockerfile ไว้ข้าง project.yaml ให้ลบค่านี้ออก
ไม่บังคับ คั่นด้วยจุลภาค
ใช้ค่าเริ่มต้น เว้นแต่ไฟล์ของคุณจะอยู่ที่อื่น
ไม่บังคับ รายงานจะถูกเข้ารหัส และจะไม่สามารถเพิ่มผู้รับสำเนา (CC) ได้
projects/my-project/project.yaml
repo: https://github.com/owner/project primary_contact: you@example.org Dockerfile: Dockerfile
เปิด pull request
gh repo fork anthropics/oss-scanner --clone cd oss-scanner mkdir -p projects/my-project cp ~/Downloads/project.yaml projects/my-project/project.yaml python3 tools/validate.py git checkout -b enroll-my-project git add projects/my-project git commit -m "Enroll my-project in OSS Scanner" git push -u origin enroll-my-project gh pr create --repo anthropics/oss-scanner --fill
ต้องใช้ GitHub CLI (gh) และ Python 3 Anthropic จะตรวจสอบด้วยตนเองว่าคุณเป็นผู้ดูแลหลักก่อนยอมรับ
ตัวอย่าง Dockerfile
จุดเริ่มต้นสำหรับโปรเจกต์ C/C++ ที่สร้างด้วย CMake ปรับแพ็กเกจและคำสั่งสร้างให้เหมาะกับโปรเจกต์ของคุณ โดยหลักสำคัญคือต้องติดตั้งทุกอย่างและสร้างโปรเจกต์ภายในอิมเมจ เนื่องจากการตรวจสอบจะทำงานแบบออฟไลน์
FROM debian:bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git ca-certificates pkg-config \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . .
# Build everything and fetch all dependencies now:
# the audit itself runs with no network access.
RUN cmake -B build -DCMAKE_BUILD_TYPE=Debug && cmake --build build -j"$(nproc)"
# Optional, but recommended: make sure tests pass inside the image.
RUN ctest --test-dir build --output-on-failureคำถามเกี่ยวกับ Anthropic OSS Scanner
Anthropic OSS Scanner ใช้งานฟรีหรือไม่
ใช่ Anthropic รับผิดชอบค่าใช้จ่ายในการสแกนทั้งหมดสำหรับโปรเจกต์ที่ลงทะเบียนแล้ว
โปรเจกต์ของฉันต้องอยู่บน GitHub หรือไม่
ไม่ ฟิลด์ repo สามารถชี้ไปยัง git host ใดก็ได้ มีเพียง pull request สำหรับการลงทะเบียนเท่านั้นที่ส่งไปยัง GitHub
มีมนุษย์ตรวจสอบรายงานหรือไม่
ไม่มี รายงานแบบเร่งด่วนสร้างขึ้นโดยโมเดลทั้งหมด ส่วนรายงานที่ผ่านการตรวจสอบโดยมนุษย์จะส่งมาแยกต่างหากผ่านกระบวนการ CVD ของ Anthropic
จะเกิดอะไรขึ้นหากโปรเจกต์ของฉันไม่ได้รับการยอมรับ
คุณสามารถสแกนได้ทุกเมื่อที่ ossscanner.org และสมัครรับการสแกนเชิงลึกทุกสัปดาห์ได้ที่นี่ — คลังโค้ดสาธารณะใด ๆ ก็มีสิทธิ์
จะหยุดรับรายงานได้อย่างไร
เพิ่ม disabled: true ลงใน project.yaml ผ่าน PR หรือ ลบไดเรกทอรีโปรเจกต์ของคุณ คุณจะกลับไปรับเฉพาะรายงาน CVD ที่ผ่านการตรวจสอบโดยมนุษย์เท่านั้น