CodeQL Agent adalah proyek yang bertujuan mengotomatisasi penggunaan CodeQL. Proyek ini membantu membuat database dan menjalankan analisis CodeQL. Agen CodeQL adalah gambar Docker.
Agen CodeQL untuk Docker juga merupakan gambar dasar agen CodeQL untuk kode studio visual - ekstensi untuk kode studio visual yang menyederhanakan penggunaan CodeQL dan menjalankan pemindaian kode secara otomatis.
Gambar agen CodeQL dirilis di Docker Hub dengan nama doublevkay/codeql-agent . Anda dapat menggunakannya tanpa membangun secara lokal.
Agen CodeQL untuk Docker menyediakan fitur -fitur utama ini:
Bind memasang sumber, folder hasil dan jalankan gambar codeql-agent dengan perintah Docker berikut.
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentAnda juga dapat menentukan lebih banyak opsi untuk menjalankan Agen CodeQL. Lihat opsi yang didukung untuk detail lebih lanjut.
Anda dapat mengatur variabel lingkungan untuk menggunakan opsi yang didukung berikut:
| Variabel | Keterangan |
|---|---|
LANGUAGE | Nilai <language> . Atur bahasa proyek untuk membangun database atau menjalankan SAST. <language> harus: go , java , cpp , csharp , python , javascript , ruby . |
USERID | Nilai <id> . Atur pemilik folder hasil ke <id> . |
GROUPID | Nilai <group_id> . Atur pemilik grup dari folder hasil ke <group_id> . |
THREADS | Nilai <number_of_threads> . Gunakan banyak utas ini untuk membangun database dan mengevaluasi kueri. Default ke 1. Anda dapat melewati 0 untuk menggunakan satu utas per inti pada mesin. |
OVERWRITE_FLAG | Nilai --overwrite . Aktifkan/nonaktifkan database overwrite saat jalur basis data ada dan bukan direktori kosong. Bendera ini berguna untuk membangun kembali database secara paksa. |
QS | Nilai <queries-suite> . Tentukan daftar kueri untuk menjalankan database Anda. Nilai default adalah <language>-security-extended.qls . Untuk detail lebih lanjut, silakan lihat menganalisis database dengan CodeQL CLI. |
SAVE_CACHE_FLAG | Nilai --save-cache . Simpan secara agresif hasil perantara ke cache disk. Ini dapat mempercepat pertanyaan berikutnya jika serupa. Ketahuilah bahwa menggunakan opsi ini akan sangat meningkatkan penggunaan disk dan waktu evaluasi awal. |
ACTION | Nilai create-database-only . Membuat database CodeQL hanya tanpa menjalankan analisis CodeQL. |
COMMAND | Nilai <command> . Variabel yang digunakan saat Anda membuat basis data CodeQL untuk satu atau lebih bahasa yang dikompilasi, keluarkan jika satu -satunya bahasa yang diminta adalah Python dan JavaScript. Ini menentukan perintah build yang diperlukan untuk memohon kompiler. Jika Anda tidak mengatur variabel ini, CodeQL akan mencoba mendeteksi sistem build secara otomatis, menggunakan autobuilder bawaan. |
Penafian: Agen CodeQL langsung meneruskan opsi ini ke argumen perintah saat menjalankan wadah. Harap anggap sebagai tanggung jawab keamanan Anda.
docker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " THREADS=0 "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " ACTION=create-database-only "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " LANGUAGE=java "
-e " QS=java-security-and-quality.qls "
doublevkay/codeql-agentdocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-e " USERID= $( id -u ${USER} ) " -e " GROUPID= $( id -g ${USER} )
doublevkay/codeql-agentSecara default, kami menggunakan JDK 11 dan Maven 3.6.3 untuk gambar agen CodeQL. Kita dapat mengubah versi Java dan Maven dengan memasang volume dan mengatur variabel lingkungan java_home dan maven_home dalam wadah agen CodeQL. Misalnya:
FROM --platform=amd64 maven:3-jdk-8-slim
RUN mkdir -p /opt/jdk/ /opt/maven/
RUN cp -r $JAVA_HOME/* /opt/jdk/
RUN cp -r $MAVEN_HOME/* /opt/maven/
CMD [ "echo" ] docker buildx build -t codeql-java -f Dockerfile-java .
docker run --rm -v " jdkvol:/opt/jdk " -v " mavenvol:/opt/maven " codeql-javadocker run --rm --name codeql-agent-docker
-v " $PWD :/opt/src "
-v " $PWD /codeql-agent-results:/opt/results "
-v " jdkvol:/opt/jdk "
-v " mavenvol:/opt/maven "
-e " LANGUAGE=java "
-e " JAVA_HOME=/opt/jdk "
-e " MAVEN_HOME=/opt/maven "
-e " COMMAND=mvn clean install "
doublevkay/codeql-agentAnda dapat menggunakan gambar agen CodeQL di Docker Hub atau menyesuaikan dan membangunnya secara lokal.
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . Agen CodeQL adalah gambar Docker. Langkah -langkah berikut dilakukan untuk mencapai tujuan mengotomatisasi penggunaan CodeQL.
Pada langkah ini, gambar mempersiapkan lingkungan untuk menjalankan CodeQL. Ini termasuk: menggunakan gambar dasar Ubuntu; Mengunduh dan menginstal bundel CodeQL (yang berisi CodeQL CLI dan kueri perpustakaan yang dikompilasi untuk mengurangi waktu eksekusi CodeQL); Menginstal perangkat lunak yang diperlukan seperti
java,maven,nodejs,typescript, ... agar membuat basis data CodeQL berhasil.
Agen CodeQL menggunakan GitHub/ahli bahasa untuk mendeteksi bahasa kode sumber.
Agen CodeQL menjalankan perintah CodeQL Buat Database.
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGMenganalisis database membutuhkan penentu suite kueri. Menurut tujuan dari tujuan pengujian keamanan aplikasi statis (SAST), agen CodeQL menggunakan
<language>-security-extended.qlssebagai suite kueri default.
Agen CodeQL menjalankan perintah analisis basis data CodeQL.
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSAgen CodeQL akan mengonversi hasil CodeQL dari format Sarif ke skema laporan keamanan (disediakan oleh GitLab). Langkah ini dilakukan dengan memetakan bidang dua format. Rincian implementasi ada dalam skrip Sarif2Sast. Anda dapat menggunakan skrip ini secara mandiri sebagai solusi untuk menyelesaikan edisi gitlab 118496.
Repo ini didasarkan pada Microsoft/CodeQL-Container dan J3Ssie/CodeQL-Docker dengan lebih banyak opsi fungsi. Secara khusus:
Anda dapat membuka masalah di repo GitHub
Kontribusi selalu diterima! Cukup buat permintaan tarik atau hubungi saya
Lihat detailnya
Agen CodeQL menggunakan CodeQL CLI sebagai mesin inti. Harap ikuti syarat dan ketentuan GitHub CodeQL dan anggaplah sebagai tanggung jawab Anda sendiri.