CodeQl Agent เป็นโครงการที่มุ่งเน้นการใช้ CodeQL โดยอัตโนมัติ โครงการช่วยสร้างฐานข้อมูลและดำเนินการวิเคราะห์ CodeQL CodeQl Agent เป็นภาพนักเทียบท่า
CodeQL Agent สำหรับ Docker ยังเป็นภาพพื้นฐานของ CodeQL Agent สำหรับ Visual Studio Code - ส่วนขยายสำหรับรหัส Visual Studio ที่ทำให้การใช้งาน CodeQL ง่ายขึ้นและดำเนินการสแกนรหัสโดยอัตโนมัติ
ภาพ CODEQL Agent ถูกเผยแพร่บน Docker Hub ภายใต้ชื่อ doublevkay/codeql-agent คุณสามารถใช้งานได้โดยไม่ต้องสร้างในพื้นที่
CodeQL Agent สำหรับ Docker มีคุณสมบัติสำคัญเหล่านี้:
Bind Mounts แหล่งที่มาโฟลเดอร์ผลลัพธ์และเรียกใช้ภาพ codeql-agent ด้วยคำสั่ง Docker ต่อไปนี้
docker run --rm --name codeql-agent-docker
-v "$PWD:/opt/src"
-v "$PWD/codeql-agent-results:/opt/results"
doublevkay/codeql-agentคุณยังสามารถระบุตัวเลือกเพิ่มเติมเพื่อเรียกใช้ Agent CodeQL ดูตัวเลือกที่รองรับสำหรับรายละเอียดเพิ่มเติม
คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อมเพื่อใช้ตัวเลือกที่รองรับต่อไปนี้:
| ตัวแปร | คำอธิบาย |
|---|---|
LANGUAGE | ค่า <language> ตั้งค่าภาษาโครงการเพื่อสร้างฐานข้อมูลหรือดำเนินการ SAST <language> ต้องเป็น: go , java , cpp , csharp , python , javascript , ruby |
USERID | ค่า <id> ตั้งค่าเจ้าของโฟลเดอร์ผลลัพธ์เป็น <id> |
GROUPID | ค่า <group_id> ตั้งค่าเจ้าของกลุ่มของโฟลเดอร์ผลลัพธ์เป็น <group_id> |
THREADS | ค่า <number_of_threads> ใช้เธรดจำนวนมากนี้เพื่อสร้างฐานข้อมูลและประเมินการสืบค้น ค่าเริ่มต้นถึง 1 คุณสามารถผ่าน 0 เพื่อใช้หนึ่งเธรดต่อคอร์บนเครื่อง |
OVERWRITE_FLAG | ค่า --overwrite เปิด/ปิดใช้งานฐานข้อมูลที่เขียนทับเมื่อพา ธ ฐานข้อมูลอยู่และไม่ใช่ไดเรกทอรีที่ว่างเปล่า ธงนี้มีประโยชน์สำหรับการบังคับใช้ฐานข้อมูลใหม่ |
QS | ค่า <queries-suite> ระบุรายการของการสืบค้นเพื่อเรียกใช้เหนือฐานข้อมูลของคุณ ค่าเริ่มต้นคือ <language>-security-extended.qls สำหรับรายละเอียดเพิ่มเติมโปรดดูการวิเคราะห์ฐานข้อมูลด้วย CodeQL CLI |
SAVE_CACHE_FLAG | ค่า --save-cache บันทึกผลลัพธ์ระดับกลางลงในแคชดิสก์อย่างจริงจัง สิ่งนี้อาจเพิ่มความเร็วในการสืบค้นที่ตามมาหากคล้ายกัน โปรดทราบว่าการใช้ตัวเลือกนี้จะเพิ่มการใช้ดิสก์และเวลาการประเมินเบื้องต้นอย่างมาก |
ACTION | ค่า create-database-only การสร้างฐานข้อมูล CodeQL เท่านั้นโดยไม่ต้องดำเนินการวิเคราะห์ CodeQL |
COMMAND | ค่า <command> ตัวแปรที่ใช้เมื่อคุณสร้างฐานข้อมูล codeql สำหรับหนึ่งภาษาที่รวบรวมหรือมากกว่านั้นให้ละเว้นหากภาษาเดียวที่ร้องขอคือ Python และ JavaScript สิ่งนี้ระบุคำสั่ง build ที่จำเป็นในการเรียกใช้คอมไพเลอร์ หากคุณไม่ได้ตั้งค่าตัวแปรนี้ CodeQL จะพยายามตรวจจับระบบบิลด์โดยอัตโนมัติโดยใช้ Autobuilder ในตัว |
ข้อจำกัดความรับผิดชอบ: Agent CodeQL ส่งต่อตัวเลือกเหล่านี้โดยตรงไปยังอาร์กิวเมนต์คำสั่งในขณะที่เรียกใช้คอนเทนเนอร์ โปรดใช้เป็นความรับผิดชอบด้านความปลอดภัยของคุณ
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-agentโดยค่าเริ่มต้นเราใช้ JDK 11 และ Maven 3.6.3 สำหรับรูปภาพ Agent CodeQL เราสามารถเปลี่ยนเวอร์ชันของ Java และ Maven ได้โดยการติดตั้งระดับเสียงและการตั้งค่าตัวแปรสภาพแวดล้อม Java_home และ Maven_home ในคอนเทนเนอร์ Agent CodeQL ตัวอย่างเช่น:
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-agentคุณสามารถใช้ Image CodeQL Agent บน Docker Hub หรือปรับแต่งและสร้างมันในพื้นที่
# Build codeql-agent docker image locally
cd codeql-agent
docker build -t codeql-agent . CodeQl Agent เป็นภาพนักเทียบท่า ขั้นตอนต่อไปนี้จะทำเพื่อให้บรรลุเป้าหมายของการใช้ CodeQL โดยอัตโนมัติ
ในขั้นตอนนี้ภาพจะเตรียมสภาพแวดล้อมสำหรับการดำเนินการ CODEQL มันรวมถึง: การใช้อิมเมจฐาน Ubuntu; การดาวน์โหลดและติดตั้ง Bundle CodeQL (ซึ่งมี codeql CLI และแบบสอบถามไลบรารีที่คอมไพล์ preompiled เพื่อลดเวลาดำเนินการ codeql); การติดตั้งซอฟต์แวร์ที่จำเป็นเช่น
java,maven,nodejs,typescript, ... เพื่อสร้างฐานข้อมูล CodeQL ได้สำเร็จ
CodeQL Agent ใช้ GitHub/Linguist เพื่อตรวจจับภาษาซอร์สโค้ด
Agent CodeQL เรียกใช้คำสั่ง CODEQL CREATE DATABASE
codeql database create --threads= $THREADS --language= $LANGUAGE $COMMAND $DB -s $SRC $OVERWRITE_FLAGการวิเคราะห์ฐานข้อมูลจำเป็นต้องมีการระบุชุดคิวรี ตามเป้าหมายของเป้าหมายแอปพลิเคชันการทดสอบความปลอดภัยแอปพลิเคชันแบบคงที่ (SAST) Agent CodeQL ใช้
<language>-security-extended.qlsเป็นชุดคิวรีเริ่มต้น
CODEQL Agent เรียกใช้คำสั่งวิเคราะห์ฐานข้อมูล CODEQL
codeql database analyze --format= $FORMAT --threads= $THREADS $SAVE_CACHE_FLAG --output= $OUTPUT /issues. $FORMAT $DB $QSCodeQL Agent จะแปลงผลลัพธ์ CODEQL จากรูปแบบ SARIF เป็น SCHEMA รายงานความปลอดภัย (จัดทำโดย GitLab) ขั้นตอนนี้ทำโดยการแมปฟิลด์ของสองรูปแบบ รายละเอียดของการใช้งานอยู่ในสคริปต์ Sarif2Sast คุณสามารถใช้สคริปต์นี้อย่างอิสระเป็นวิธีแก้ปัญหาเพื่อแก้ไขปัญหา Gitlab ฉบับที่ 118496
repo นี้ขึ้นอยู่กับ Microsoft/Codeql-Container และ J3SSIE/CODEQL-DOCKER พร้อมตัวเลือกฟังก์ชั่นเพิ่มเติม โดยเฉพาะ:
คุณสามารถเปิดปัญหาเกี่ยวกับ gitHub repo
ยินดีต้อนรับการมีส่วนร่วมเสมอ! เพียงสร้างคำขอดึงหรือติดต่อฉัน
ดูรายละเอียด
CodeQl Agent ใช้ CodeQL CLI เป็นเครื่องมือหลัก โปรดปฏิบัติตามข้อกำหนดและเงื่อนไขของ GitHub CodeQL และใช้เป็นความรับผิดชอบของคุณเอง