


CWE_CHECKER هي مجموعة من الاختبارات لاكتشاف فئات الأخطاء الشائعة مثل تخزين المؤشرات الفارغة وتدفقات المخزن المؤقت. تُعرف فئات الأخطاء هذه بشكل رسمي باسم تعداد الضعف الشائع (CWES). تستند الشيكات إلى مجموعة متنوعة من تقنيات Anaylsis التي تتراوح من الاستدلال البسيط إلى تحليل تدفق البيانات المستند إلى التفسير التجريدي. هدفها الرئيسي هو مساعدة المحللين على العثور بسرعة على مسارات التعليمات البرمجية الضعيفة بسرعة.
تركيزها الرئيسي هي ثنائيات ELF التي توجد عادة على أنظمة التشغيل Linux و UNIX. يستخدم CWE_CHECKER GHIDRA لتفكيك الثنائيات في تمثيل وسيط مشترك واحد وينفذ تحليلاته الخاصة على هذا الأشعة تحت الحمراء. وبالتالي ، يمكن تشغيل التحليلات على معظم بنيات وحدة المعالجة المركزية التي يمكن لـ Ghidra فصلها ، مما يجعل CWE_CHECKER أداة قيمة لتحليل البرامج الثابتة.
يجب أن تقنعك الحجج التالية بإعطاء CWE_CHECKER تجربة:

أبسط طريقة هي سحب أحدث صورة Docker من سجل حاوية 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 بنفسك ، فما عليك سوى تشغيل
docker build -t cwe_checker .
وبهذه الطريقة ، يمكنك أيضًا إنشاء صور Docker الأصلية لأجهزة الكمبيوتر القائمة على ARM (مثل Macs أحدث Apple). تعتمد صور Docker 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 . إذا قمت بتعديله ، فأضف علامة سطر الأوامر --config=src/config.json لإخبار CWE_Checker باستخدام الملف المعدل. للحصول على معلومات حول أعلام سطر الأوامر المتاحة الأخرى ، يمكنك تمرير علامة --help إلى CWE_Checker .
هناك دعم تجريبي لتحليل وحدات kernel القابلة للتحميل 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 (وخاصة الهروب الرسمي) للإجابة على الأسئلة ومناقشة الحلول.
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/>.