
Choccy เป็นโครงการที่ตรวจสอบการอัปเดตที่เก็บ GitHub และทำการสแกนการวิเคราะห์ CodeQL โดยอัตโนมัติ
ก่อนที่จะทำงานคุณจะต้องกำหนดค่าสภาพแวดล้อมการรวบรวมรหัสด้วยตัวคุณเองสภาพแวดล้อม codeql:
ดาวน์โหลด codeql binary และ library https://github.com/github/codeql-clii-binaries/releases, https://github.com/github/codeql/tags
หลังจากการบีบอัดมันจะถูกวางไว้ในไดเรกทอรีเดียวกับไฟล์ไบนารี choccy นั่นคือ:
$ tree . -L 1
.
├── choccy
├── codeql
└── codeql-codeql-cli-v2.19.4
การกำหนดค่าและฟังก์ชั่นหลักอยู่ในเว็บอินเตอร์เฟสและมีพารามิเตอร์บรรทัดคำสั่งเพียงสองตัวเท่านั้น:
-addr string
监听地址和端口 (default "0.0.0.0:80")
-token string
系统Token
เมื่อโปรแกรมทำงานเป็นครั้งแรกมันจะสร้างโฟลเดอร์ choccy_data ในไดเรกทอรีที่ตั้งอยู่เพื่อบันทึกข้อมูล หากไม่ได้ระบุโทเค็นจะถูกสร้างขึ้นแบบสุ่มและส่งออกไปยังบรรทัดคำสั่ง โครงการเองมีฟังก์ชั่นที่เป็นไปได้เช่นการดำเนินการคำสั่งโดยพลการและการอ่านไฟล์ ดังนั้นหากบริการเปิดให้กับเครือข่ายสาธารณะให้แน่ใจว่าได้ตั้งรหัสผ่านที่แข็งแกร่ง
คุณต้องป้อนเว็บไดเรกทอรีเพื่อรวบรวมส่วนหน้าก่อน เมื่อรวบรวม Golang back-end ไฟล์ทรัพยากรส่วนหน้าจะถูกฝังโดยอัตโนมัติ
cd web
npm install
npm run build
cd ..
go build -o choccy main.go
# mac上交叉编译
# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o choccy_linux_amd64 main.go
# CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o choccy_windows_amd64.exe main.go
# CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o choccy_darwin_amd64 main.go ก่อนใช้ให้กำหนดค่าสภาพแวดล้อม CODEQL และเป็นการดีที่สุดที่จะกำหนดค่าโทเค็น GitHub ใน设置มิฉะนั้นอาจถูก จำกัด จากการเข้าถึงโดย GitHub API设置-其他- --ram 2048 ใน CodeQL附加命令行选项คือหน่วยความจำสูงสุดที่อนุญาตให้ใช้โดย CodeQL และหน่วยคือ MB โปรดเพิ่มตามความเหมาะสมตามการกำหนดค่าระบบของคุณมิฉะนั้นอาจส่งผลกระทบต่อความเร็วในการสแกนหรือทำให้เกิดความล้มเหลวในการสแกน
ปัจจุบันรองรับการสแกนการสแกนการสแกนสาขาเริ่มต้นและการสแกนฐานข้อมูล CodeQL ดั้งเดิมของที่เก็บ GitHub GitHub จะรวบรวมฐานข้อมูล CodeQL โดยอัตโนมัติสำหรับที่เก็บข้อมูลจำนวนมาก (สามารถดูได้ผ่านอินเตอร์เฟส https://api.github.com/repos/<owner>/<repo>/code-scanning/codeql/databases <ornow>/<repo>/code-scanning/codeql/ฐานข้อมูล) สิ่งนี้จะบันทึกขั้นตอนของการกำหนดค่าสภาพแวดล้อมการรวบรวมในท้องถิ่นและเวลาในการรวบรวมฐานข้อมูลในเครื่อง ดังนั้นโหมดการสแกนจะให้ความสำคัญกับฐานข้อมูลดั้งเดิม ใช้โครงการ Java-Sec-Code เป็นตัวอย่าง:

ชุด Query เป็นชุดของชุดข้อความสอบถาม คุณสามารถคลิก查询套件ในแถบเมนูเพื่อดูและแก้ไข ที่นี่คุณสามารถเลือก preset java_security.qls ก่อน
จากนั้นคลิก加入扫描队列ทางด้านขวาของโครงการซึ่งจะสร้างงานให้กับเวอร์ชันโครงการและสแกนทันที

ในแท็บ任务คุณสามารถดูสถานะการดำเนินการงานปัจจุบันและบันทึกการดำเนินการ:

หลังจากการดำเนินการเสร็จสมบูรณ์คุณจะเห็นผลลัพธ์การสแกนที่เฉพาะเจาะจงในแท็บ分析结果การแสดงผลของผลลัพธ์จะเลียนแบบเอฟเฟกต์การแสดงผลของปลั๊กอิน CodeQL ใน VSCODE อย่างสมบูรณ์และมีการปรับให้เหมาะสมบางอย่างรวมถึงข้อมูลช่องโหว่ตำแหน่งช่องโหว่รหัสกฎที่สอดคล้องกันลิงก์การโทรที่สมบูรณ์ของช่องโหว่และรหัสบริบทช่องโหว่ คลิกที่ไฮเปอร์ลิงก์เพื่อข้ามไปยังตำแหน่งรหัสที่สอดคล้องกันของที่เก็บ GitHub

หลังจากเพิ่มโครงการแล้วเวอร์ชันล่าสุดจะถูกดึงทุกสัปดาห์เพื่อสแกน สามารถกำหนดค่าได้ใน设置-其他-定时扫描Cron表达式:

นอกจากนี้设置-环境-环境变量สามารถกำหนดค่าพร็อกซีเมื่อระบบเข้าถึง gitHub ฯลฯ

คุณสามารถใส่คิวรีคิวรีไลบรารีหรือข้อความค้นหาของคุณเองลงในไดเรกทอรี Packs หลังจากที่ตำแหน่งเสร็จสมบูรณ์คุณสามารถไปที่แท็บ查询包เพื่อดู:


Query Suite เป็นชุดของชุดของกฎ CodeQL ที่สามารถแก้ไขและดูได้ในแท็บ查询套件:

เอกสารอ้างอิงไวยากรณ์อย่างเป็นทางการ: https://docs.github.com/zh/code-security/codeql-clibli/using-the-advanced-functionality-of-the-codeql-clie/creating-codeql-query-suites
ในหน้า数据库ให้คลิกที่ไอคอน PLUS ที่มุมขวาบนเพื่อจัดทำแพ็คเกจฐานข้อมูลท้องถิ่นลงในแพ็คเกจบีบอัดซิปจากนั้นอัปโหลดรอการอัปโหลดและนำเข้าให้เสร็จสมบูรณ์ (หน้าไม่สามารถปิดได้ในระหว่างการอัปโหลด)
(ฟังก์ชั่นการอัปโหลดไม่ได้ใช้การส่งสัญญาณบล็อกดังนั้นหน่วยความจำที่มีอยู่ของเซิร์ฟเวอร์จะต้องมากกว่าขนาดไฟล์)


ในหน้า任务ให้คลิกที่ไอคอนบวกที่มุมขวาบนและเลือกชุดฐานข้อมูลและแบบสอบถาม ชื่อโครงการเหมือนกับชื่อฐานข้อมูลโดยค่าเริ่มต้น

ในหน้า任务ให้เลือกไอคอนบวกที่มุมขวาบนและคลิก从GitHub批量创建

搜索语句คือการค้นหาที่เก็บข้อมูลการอ้างอิงไวยากรณ์: https://docs.github.com/en/rest/search/search?apiversion=2022-11-28#search-repositories
扫描范围หมายถึงส่วนใดของการสแกนหลังจากเรียงลำดับในลำดับที่แน่นอน ในภาพหน้าจอต่อไปนี้จำนวนดาวจะถูกจัดเรียงตามลำดับย้อนกลับและคลังสินค้าที่ 11 และ 12 จะถูกสแกน

เครื่องมือนี้มีไว้สำหรับการเรียนรู้ทางกฎหมายหรือพฤติกรรมการวิจัยเท่านั้น ในระหว่างการใช้เครื่องมือนี้คุณควรตรวจสอบให้แน่ใจว่าพฤติกรรมทั้งหมดของคุณเป็นไปตามกฎหมายและข้อบังคับในท้องถิ่น หากคุณมีการกระทำที่ผิดกฎหมายในระหว่างการใช้เครื่องมือนี้คุณจะแบกรับผลกระทบทั้งหมดตามดุลยพินิจของคุณเองและนักพัฒนาทั้งหมดและผู้สนับสนุนทั้งหมดของเครื่องมือนี้จะไม่รับผิดชอบต่อความรับผิดทางกฎหมายหรือร่วมใด ๆ โปรดอย่าติดตั้งและใช้เครื่องมือนี้เว้นแต่ว่าคุณได้อ่านอย่างเต็มที่เข้าใจอย่างเต็มที่และยอมรับข้อกำหนดทั้งหมดของข้อตกลงนี้ การใช้งานของคุณหรือการยอมรับข้อตกลงนี้โดยลักษณะอื่น ๆ โดยชัดแจ้งหรือโดยนัยถือว่ามีการอ่านและตกลงกับข้อผูกพันของข้อตกลงนี้