
Choccy adalah proyek yang memantau pembaruan repositori GitHub dan secara otomatis melakukan pemindaian analisis CodeQL.
Sebelum berjalan, Anda perlu mengkonfigurasi lingkungan kompilasi kode sendiri, CodeQL Environment:
Unduh CodeQL Binary and Library https://github.com/github/codeql-li-binaries/releases, https://github.com/github/codeql/tags
Setelah dekompresi, ditempatkan di direktori yang sama dengan file biner choccy, yaitu:
$ tree . -L 1
.
├── choccy
├── codeql
└── codeql-codeql-cli-v2.19.4
Konfigurasi dan fungsi utama ada di antarmuka web, dan hanya ada dua parameter baris perintah:
-addr string
监听地址和端口 (default "0.0.0.0:80")
-token string
系统Token
Ketika program berjalan untuk pertama kalinya, itu akan membuat folder choccy_data di direktori tempat ia berada untuk menyimpan data. Jika token tidak ditentukan, itu akan dihasilkan secara acak dan output ke baris perintah. Proyek itu sendiri memiliki fungsi potensial seperti eksekusi perintah sewenang -wenang dan membaca file. Oleh karena itu, jika layanan terbuka untuk jaringan publik, pastikan untuk menetapkan kata sandi yang kuat.
Anda harus memasukkan direktori web untuk mengkompilasi front-end terlebih dahulu. Saat menyusun back-end Golang, file sumber daya front-end akan secara otomatis tertanam.
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 Sebelum menggunakan, konfigurasikan lingkungan CodeQL, dan yang terbaik adalah juga mengkonfigurasi token GitHub di设置, jika tidak, ia dapat dibatasi dari akses oleh Github API.设置-其他- --ram 2048 dalam CodeQL附加命令行选项adalah memori maksimum yang diizinkan untuk digunakan oleh CodeQL, dan unitnya adalah MB. Harap tingkatkan sebagaimana mestinya sesuai dengan konfigurasi sistem Anda, jika tidak dapat memengaruhi kecepatan pemindaian atau menyebabkan kegagalan pemindaian.
Saat ini, mendukung pemindaian rilis, pemindaian cabang default, dan pemindaian basis data CodeQL asli dari repositori GitHub. GitHub akan secara otomatis mengkompilasi basis data CodeQL untuk banyak repositori (dapat dilihat melalui antarmuka https://api.github.com/repos/<owner>/<repo>/code-scanning/codeql/databases <O. Ini akan menyimpan langkah -langkah mengkonfigurasi lingkungan kompilasi lokal dan waktu untuk mengkompilasi database secara lokal. Oleh karena itu, mode pemindaian akan memberikan prioritas pada database asli. Ambil proyek java-sec-code sebagai contoh:

Query Suite adalah kumpulan serangkaian pernyataan kueri. Anda dapat mengklik查询套件di bilah menu untuk melihat dan mengeditnya. Di sini Anda dapat memilih preset java_security.qls .
Kemudian klik加入扫描队列di sisi kanan proyek, yang akan segera membuat tugas untuk versi proyek dan pemindaian.

Di tab任务, Anda dapat melihat status eksekusi tugas saat ini dan log eksekusi:

Setelah eksekusi selesai, Anda dapat melihat hasil pemindaian spesifik di tab分析结果. Tampilan hasil sepenuhnya mereplikasi efek tampilan plug-in CodeQL di vScode, dan beberapa optimisasi telah dibuat, termasuk informasi kerentanan, lokasi kerentanan, ID aturan yang sesuai, tautan panggilan lengkap kerentanan, dan kode konteks kerentanan. Klik hyperlink untuk melompat ke lokasi kode yang sesuai dari repositori GitHub.

Setelah proyek ditambahkan, versi terbaru akan ditarik setiap minggu untuk pemindaian. Ini dapat dikonfigurasi dalam设置-定时扫描Cron表达式其他:

Selain itu,环境变量设置-环境- lingkungan dapat mengonfigurasi proxy ketika sistem mengakses github, dll.

Anda dapat memasukkan Perpustakaan Kueri atau Pernyataan Kueri Anda sendiri ke dalam Direktori Packs . Setelah penempatan selesai, Anda dapat pergi ke tab查询包untuk dilihat:


Query Suite adalah kumpulan serangkaian aturan CodeQL yang dapat diedit dan dilihat di tab查询套件:

Dokumen Referensi Sintaks Resmi: https://docs.github.com/zh/code-security/codeql-li/using-the-advanced-functionality-of-the-codeql-cli/creating-codeql-query-suites
Pada halaman数据库, klik ikon Plus di sudut kanan atas untuk mengemas database lokal ke dalam paket terkompresi zip, lalu unggah, tunggu unggah dan impor untuk menyelesaikan (halaman tidak dapat ditutup selama unggahan)
(Fungsi unggah tidak menggunakan transmisi blok, sehingga memori server yang tersedia harus lebih besar dari ukuran file)


Di halaman任务, klik ikon Plus di sudut kanan atas dan pilih database dan suite kueri. Nama proyek sama dengan nama database secara default.

Di halaman任务, pilih ikon plus di sudut kanan atas dan klik从GitHub批量创建

搜索语句adalah pencarian repositori, referensi sintaks: https://docs.github.com/en/rest/search/search?apiverion=2022-11-28#search-repositories
扫描范围mengacu pada bagian pemindaian mana setelah menyortir dalam urutan tertentu. Dalam tangkapan layar berikut, jumlah bintang akan diurutkan dalam urutan terbalik, dan gudang ke -11 dan ke -12 akan dipindai.

Alat ini hanya untuk pembelajaran hukum atau perilaku penelitian. Selama penggunaan alat ini, Anda harus memastikan bahwa semua perilaku Anda sesuai dengan hukum dan peraturan setempat. Jika Anda memiliki tindakan ilegal selama penggunaan alat ini, Anda akan menanggung semua konsekuensi atas kebijakan Anda sendiri, dan semua pengembang dan semua kontributor alat ini tidak menanggung tanggung jawab hukum atau bersama. Harap jangan menginstal dan menggunakan alat ini kecuali Anda telah membaca sepenuhnya, sepenuhnya dipahami, dan menerima semua ketentuan Perjanjian ini. Penggunaan Anda atau penerimaan Anda atas Perjanjian ini dengan cara tersurat lainnya atau tersirat dianggap telah membaca dan menyetujui pengikatan Perjanjian ini.