


CWE_CHECKER เป็นชุดของการตรวจสอบเพื่อตรวจจับคลาสข้อผิดพลาดทั่วไปเช่นตัวชี้ NULL dereferences และบัฟเฟอร์ล้น ชั้นเรียนบั๊กเหล่านี้เป็นที่รู้จักกันอย่างเป็นทางการว่าการระบุจุดอ่อนทั่วไป (CWEs) การตรวจสอบจะขึ้นอยู่กับเทคนิค Anaylsis ที่หลากหลายตั้งแต่ฮิวริสติกง่าย ๆ ไปจนถึงการวิเคราะห์การไหลของข้อมูลเชิงนามธรรม เป้าหมายหลักคือการช่วยเหลือนักวิเคราะห์ในการค้นหาเส้นทางรหัสที่มีความเสี่ยงที่อาจเกิดขึ้นได้อย่างรวดเร็ว
จุดสนใจหลักของมันคือ Binaries ELF ที่พบได้ทั่วไปในระบบปฏิบัติการ Linux และ UNIX CWE_CHECKER ใช้ Ghidra เพื่อถอดชิ้นส่วนไบนารีออกเป็นตัวแทนระดับกลางทั่วไปหนึ่งครั้งและดำเนินการวิเคราะห์ของตัวเองใน IR นี้ ดังนั้นการวิเคราะห์สามารถทำงานบนสถาปัตยกรรม CPU ส่วนใหญ่ที่ Ghidra สามารถถอดแยกชิ้นส่วนซึ่งทำให้ CWE_CHECKER เป็นเครื่องมือที่มีค่าสำหรับการวิเคราะห์เฟิร์มแวร์
ข้อโต้แย้งต่อไปนี้ควรโน้มน้าวให้คุณลอง CWE_CHECKER :

วิธีที่ง่ายที่สุดคือการดึงภาพนักเทียบท่าล่าสุดจากรีจิสทรีคอนเทนเนอร์ GitHub:
docker pull ghcr.io/fkie-cad/cwe_checker:latest ให้ภาพตามสาขาหลักปัจจุบันdocker pull ghcr.io/fkie-cad/cwe_checker:stable ให้ภาพที่ขึ้นอยู่กับรุ่นที่มีเสถียรภาพล่าสุดdocker pull ghcr.io/fkie-cad/cwe_checker:v0.9 ให้ภาพตามเวอร์ชันการเปิดตัว V0.9 ที่เสถียร อย่างไรก็ตามขอแนะนำให้เปลี่ยนเป็นรุ่นใหม่ที่มีเสถียรภาพทันทีที่ได้รับการเผยแพร่เนื่องจากการปรับปรุงระหว่างเวอร์ชันที่เสถียรอาจมีความสำคัญมากหากคุณต้องการสร้างอิมเมจนักเทียบท่าด้วยตัวเองเพียงแค่วิ่ง
docker build -t cwe_checker .
วิธีนี้คุณยังสามารถสร้างอิมเมจ Docker ดั้งเดิมสำหรับพีซีที่ใช้ ARM (เช่น Apple Mac รุ่นใหม่) ภาพนักเทียบท่า prebuilt ในปัจจุบันมีพื้นฐานจาก x86 เท่านั้น
ต้องติดตั้งการพึ่งพาต่อไปนี้เพื่อสร้างและติดตั้ง cwe_checker ในเครื่อง:
เรียกใช้ make all GHIDRA_PATH=/path/to/ghidra_folder (ด้วยเส้นทางที่ถูกต้องไปยังการติดตั้ง Ghidra ในท้องถิ่นที่แทรก) เพื่อรวบรวมและติดตั้ง cwe_checker หากคุณละเว้นอาร์กิวเมนต์ GHIDRA_PATH ผู้ติดตั้งจะค้นหาระบบไฟล์ของคุณสำหรับการติดตั้ง Ghidra ในท้องถิ่น
CWE_CHECKER ใช้ไบนารีเป็นอินพุตดำเนินการตรวจสอบหลายอย่างตามการวิเคราะห์แบบคงที่บนไบนารีและจากนั้นส่งออกรายการคำเตือน CWE ที่พบในระหว่างการวิเคราะห์
หากคุณใช้ภาพ Docker อย่างเป็นทางการเพียงแค่เรียกใช้
docker run --rm -v /PATH/TO/BINARY:/input ghcr.io/fkie-cad/cwe_checker /inputหากคุณติดตั้ง cwe_checker ในเครื่องให้เรียกใช้
cwe_checker BINARYหากคุณใช้ Nix Flakes ให้เรียกใช้
nix run github:fkie-cad/cwe_checker -- BINARY คุณสามารถปรับพฤติกรรมของการตรวจสอบส่วนใหญ่ผ่านไฟล์กำหนดค่าที่อยู่ที่ src/config.json หากคุณแก้ไขให้เพิ่ม Flag บรรทัดคำสั่ง --config=src/config.json เพื่อบอก CWE_Checker ให้ใช้ไฟล์ที่แก้ไข สำหรับข้อมูลเกี่ยวกับธงบรรทัดคำสั่งอื่น ๆ ที่มีอยู่คุณสามารถส่งธง --help ไปยัง CWE_CHECKER
มีการสนับสนุน การทดลอง สำหรับการวิเคราะห์โมดูลเคอร์เนลที่โหลดได้ Linux (LKMS) CWE_CHECKER จะรับรู้หากคุณผ่าน LKM และจะดำเนินการชุดย่อยของ CWE ตรวจสอบที่มีให้สำหรับโปรแกรมพื้นที่ผู้ใช้ การวิเคราะห์สามารถกำหนดค่าได้ผ่านไฟล์การกำหนดค่าแยกต่างหาก
หากคุณใช้เวอร์ชันที่เสถียรคุณสามารถดูเอกสารออนไลน์สำหรับข้อมูลเพิ่มเติมได้
CWE_CHECKER ให้การสนับสนุนการทดลองสำหรับการวิเคราะห์ไบนารีโลหะเปลือย สำหรับสิ่งนั้นจำเป็นต้องจัดเตรียมไฟล์การกำหนดค่าโลหะเปลือยผ่านตัวเลือกบรรทัดคำสั่ง --bare-metal-config ตัวอย่างสำหรับไฟล์การกำหนดค่าดังกล่าวสามารถพบได้ที่ bare_metal/stm32f407vg.json (ซึ่งถูกสร้างและทดสอบสำหรับ STM32F407VG MCU)
สำหรับข้อมูลเพิ่มเติมลองดูเอกสารออนไลน์
การทดสอบไบนารีสำหรับชุดทดสอบของเราสามารถสร้างขึ้นได้ด้วย make compile_test_files (ต้องการ Docker ที่จะติดตั้ง!) ชุดทดสอบสามารถทำงานได้ด้วย make test
เอกสารซอร์สโค้ดสามารถสร้างได้ด้วย make documentation สำหรับเวอร์ชันที่เสถียรเอกสารสามารถพบได้ที่นี่
จนถึงขณะนี้มีการวิเคราะห์ต่อไปนี้:
โปรดทราบว่าคาดว่าจะมีทั้งผลบวกที่ผิดพลาดและเชิงลบเท็จเนื่องจากทางลัดและลักษณะของการวิเคราะห์แบบคงที่เช่นเดียวกับการแพร่กระจายมากเกินไป คุณสามารถค้นหาข้อมูลเกี่ยวกับการทำงานภายในของการตรวจสอบแต่ละครั้งรวมถึงเหตุผลที่รู้จักสำหรับผลบวกที่ผิดพลาดและเชิงลบที่ผิดพลาดในหน้าเอกสารตรวจสอบเฉพาะ
CWE_CHECKER มาพร้อมกับสคริปต์สำหรับ Ghidra ซึ่งแยกวิเคราะห์ผลลัพธ์ของ CWE_CHECKER และใส่คำอธิบายประกอบ CWEs ที่พบใน Disassembler เพื่อการวิเคราะห์ด้วยตนเองที่ง่ายขึ้น สคริปต์อยู่ที่ ghidra_plugin/cwe_checker_ghidra_plugin.py คำแนะนำการใช้งานมีอยู่ในไฟล์

CWE_CHECKER ยังรวมกันเป็นปลั๊กอินที่จริงแล้ว หากคุณต้องการรวม CWE_CHECKER เข้ากับเครื่องมือวิเคราะห์ของคุณเองคุณสามารถใช้ธงบรรทัดคำสั่ง --json (ร่วมกับ --quiet หรือ --out=... ตัวเลือกบรรทัดคำสั่ง) เพื่อสร้างคำเตือน CWE ในรูปแบบเอาต์พุต JSON ที่แยกวิเคราะห์ได้ง่าย
การสร้างเอกสารโดยใช้ cargo doc --open --document-private-items --no-deps จะให้ข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างภายในของ CWE_CHECKER อย่างไรก็ตามเอกสารที่ดีที่สุดยังคงเป็นซอร์สโค้ดเอง หากคุณมีคำถามอย่าลืมถามพวกเขาในหน้าการสนทนาของเรา! เราพยายามอย่างต่อเนื่องในการปรับปรุงการขยายและเอกสารและคำถามของคุณจะช่วยให้เราบรรลุเป้าหมายได้!
เพื่อให้ได้ภาพรวมอย่างรวดเร็ว/เริ่มต้นของภายในคุณยังสามารถดูสไลด์ของการนำเสนอการประชุมบน CWE_CHECKER ในโฟลเดอร์ DOC เรานำเสนอ cwe_checker ในการประชุมต่อไปนี้จนถึงตอนนี้:
ยินดีต้อนรับการมีส่วนร่วมเสมอ เพียงแค่แยกมันและเปิดคำขอดึง!
โครงการนี้ได้รับการสนับสนุนทางการเงินจากสำนักงานรัฐบาลกลางเยอรมันเพื่อความปลอดภัยข้อมูล (BSI)
ขอขอบคุณเป็นพิเศษไปที่ชุมชน BAP (โดยเฉพาะอย่างเป็นทางการ Gitter) สำหรับการตอบคำถามและพูดคุยเกี่ยวกับวิธีแก้ปัญหา
Copyright (C) 2018 - 2024 Fraunhofer FKIE ([email protected])
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.