Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
semgrep-rules — مجموعة من قواعد Semgrep الخاصة بي لتسهيل أبحاث الثغرات الأمنية. | Kitploit
أدوات/GitHubGitHub/0xdea/semgrep-rules
تحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودتحليل الملفات الثنائيةالتعلم والتعليمموارد منسقة
GitHub0xdea/semgrep-rules

semgrep-rules

مجموعة من قواعد Semgrep الخاصة بي لتسهيل أبحاث الثغرات الأمنية.

عرض المستودع
86689منذ 6 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

semgrep-rules

validate

«سطح الهجوم هو الثغرة. العثور على خطأ هناك ليس سوى تفصيل.»

-- Mark Dowd

«بعض التفاصيل أكثر أهمية من غيرها.»

-- Fedor G. Pikus

مجموعة من قواعد Semgrep الخاصة بي لتسهيل أبحاث الثغرات الأمنية.

Program in C

منشورات المدونة

  • https://hnsecurity.it/blog/semgrep-ruleset-for-c-c-vulnerability-research
  • https://hnsecurity.it/blog/automating-binary-vulnerability-discovery-with-ghidra-and-semgrep
  • https://hnsecurity.it/blog/big-update-to-my-semgrep-c-cpp-ruleset
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-the-idalib-rust-bindings-for-ida-9-2/
  • https://hnsecurity.it/blog/my-semgrep-c-cpp-ruleset-is-ready-for-prime-time-again/

انظر أيضًا

  • https://appsec.guide/docs/static-analysis/semgrep/
  • https://semgrep.dev/docs/writing-rules/overview
  • https://semgrep.dev/r

تعليمات الإعداد والاستخدام

  1. ثبّت Semgrep.
  2. لاستخدام هذه القواعد عبر سجل Semgrep، شغّل ما يلي من المجلد الجذر لمستودع الكود المصدري المستهدف:
root@kitploit:~
# فحص ذو أولوية عالية (مكاسب سريعة)
semgrep --severity ERROR --config "p/0xdea"

# فحص ذو أولوية عالية ومتوسطة (موصى به)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"

# فحص كامل (قد يتضمن نتائج هامشية ومزيدًا من الإيجابيات الكاذبة)
semgrep --config "p/0xdea"

بدلًا من ذلك، يمكنك استنساخ مستودع GitHub هذا محليًا وتشغيل:

root@kitploit:~
# فحص كامل
semgrep --config semgrep-rules/rules /path/to/source

# فحص قاعدة محددة
semgrep --config semgrep-rules/rules/c/command-injection.yaml /path/to/source

[!TIP] حدد مفتاح --no-git-ignore لفحص الملفات بغض النظر عن حالة تتبع git أو قواعد .gitignore.

لتجربة أكثر سلاسة، أوصي بحفظ مخرجات فحص Semgrep بصيغة SARIF واستخدام SARIF Explorer في VS code:

root@kitploit:~
semgrep --sarif --sarif-output=/path/to/source/SEMGREP.sarif --config semgrep-rules/rules /path/to/source
code /path/to/source # ثم افتح ملف SEMGREP.sarif في VS code باستخدام SARIF Explorer 

انظر أيضًا مثال على مخرجات SARIF المرفقة.

التوافق

تم اختباره مع Semgrep CLI 1.169.0.

القواعد

C/C++

مجموعة قواعد C (وأحيانًا C++) مختبرة ميدانيًا.

تجاوزات المخزن المؤقت

  • insecure-api-gets. استخدام دالة API غير الآمنة gets.
  • insecure-api-strcpy-strcat. استخدام دوال API التي قد تكون غير آمنة strcpy، stpcpy، strcat.
  • insecure-api-sprintf-vsprintf. استخدام دوال API التي قد تكون غير آمنة sprintf وvsprintf.
  • insecure-api-scanf. استخدام دوال API التي قد تكون غير آمنة في عائلة scanf.
  • incorrect-use-of-strncat. وسيط حجم خاطئ يتم تمريره إلى strncat.
  • use-of-source-size-in-copy. وسيط حجم خاطئ يتم تمريره إلى strncpy، ، ، والنسخ المختلفة.

تجاوزات الأعداد الصحيحة

  • integer-wraparound. أخطاء محتملة في الالتفاف على الأعداد الصحيحة.
  • unsafe-strlen. تحويل القيمة المُرجعة من strlen إلى short قد يكون خطيرًا.
  • integer-truncation. أخطاء محتملة في اقتطاع الأعداد الصحيحة.
  • signed-unsigned-conversion. أخطاء محتملة في التحويل بين الموقّع وغير الموقّع.
  • incorrect-unsigned-comparison. التحقق مما إذا كان متغير غير موقّع سالبًا.

سلاسل التنسيق

  • format-string-bugs. أخطاء محتملة في سلاسل التنسيق.

إدارة الذاكرة

  • insecure-api-alloca. استخدام دالة API التي قد تكون غير آمنة alloca.
  • use-after-free. استخدام محتمل بعد free.
  • double-free. free مزدوج محتمل.
  • incorrect-use-of-free. استدعاء free على ذاكرة ليست في الكومة.
  • unchecked-ret-malloc. رمز إرجاع غير مُفحوص لـ malloc، calloc، realloc، إلخ.
  • putenv-stack-var. استدعاء putenv بمتغير مخصص على المكدس.
  • ret-stack-address. إرجاع محتمل لعنوان متغير مخصص على المكدس.

حقن الأوامر

  • command-injection. حقن أوامر نظام التشغيل المحتمل عبر system أو popen.

حالات السباق

  • insecure-api-access-stat. استخدام دوال API غير الآمنة access، stat، lstat، إلخ.
  • insecure-api-mktemp-tmpnam-tempnam. استخدام دوال API غير الآمنة mktemp، tmpnam، tempnam.
  • insecure-api-signal. استخدام دالة API غير الآمنة signal.

إدارة الامتيازات

  • incorrect-order-setuid-setgid. دوال إدارة الامتيازات تُستدعى بالترتيب الخاطئ.
  • unchecked-ret-setuid-seteuid. رمز إرجاع غير مُفحوص لـ setuid وseteuid.

رفض الخدمة

  • regex-dos. تعبير نمطي قد يُظهر وقت تشغيل أسي ويؤدي إلى ReDoS.

متنوع

  • incorrect-use-of-memset. ترتيب خاطئ لوسائط memset.
  • insecure-api-rand-srand. استخدام دوال API التي قد تكون غير آمنة rand وsrand.
  • overlapping-source-destination. تداخل المصدر والوجهة في دوال النسخ.
  • suspicious-assert. فحص حجم غير صالح محتمل بسبب استخدام وحدات ماكرو التأكيد.
  • interesting-api-calls. استدعاءات لدوال API مثيرة للاهتمام وقد تكون غير آمنة.
  • unchecked-ret-scanf. رمز إرجاع غير مُفحوص لدوال عائلة scanf.
  • insecure-api-ato. استخدام دوال API التي قد تكون غير آمنة atoi، atol، atof.
  • . إسناد قيمة عالية الإنتروبيا قد تكون سرًا.

صاخبة (Noisy)

تُعتبر هذه القواعد صاخبة جدًا بشكل محتمل وغير مناسبة للاستخدام العام.

عام

  • bad-words. كلمات مفتاحية وتعليقات تشير إلى وجود أخطاء برمجية.

سجل التغييرات

  • CHANGELOG.md

المهام المتبقية

بنود عمل قصيرة المدى

  • معالجة المشكلات وطلبات السحب المفتوحة.
  • إضافة فحوصات جديدة إلى القواعد الحالية وإضافة قواعد جديدة عند الحاجة.
  • تحسين الدقة الإجمالية وتقليل الإيجابيات الكاذبة، دون تفويت النقاط الساخنة المحتملة في الكود.
  • فحص الأداء (انظر test_public_repos.py).
  • قياس أداء إضافي عبر --time مقابل أكواد من العالم الحقيقي لاكتشاف القواعد البطيئة التي تحتاج إلى تحسين.

بنود عمل طويلة المدى

  • إضافة سكربتات لتنظيف الشيفرة الزائفة الناتجة عن أدوات فك الترجمة الشائعة لتحسين تحليل Semgrep.
  • نقل القواعد إلى محرك Semgrep Pro، والذي يسمح بالتحليل بين الملفات وبين الدوال.
  • تنفيذ وضع التلوث (taint mode) حيثما كان مناسبًا لتحسين القواعد عبر تحليل تدفق البيانات.
  • التحقيق في الانتشار الرمزي الذي قد يكون مفيدًا لتقليل بعض الإيجابيات الكاذبة.
  • تنفيذ غلاف ومعالج لاحق لـ Semgrep كما هو موضح في هذا البحث.

مجموعات قواعد خاصة بالمجال

  • تنفيذ قواعد نواة مخصصة (Linux، BSD، macOS، إلخ).
  • تنفيذ قواعد مخصصة لـ crypto و rng.
  • تنفيذ قواعد C++ مخصصة ونقلها إلى مجلد منفصل عن مجلد قواعد C.
  • إنشاء مجموعة قواعد مخصصة للغة Rust.
تنزيل الأداة
memcpy
snprintf
  • incorrect-use-of-sizeof. استخدام عرضي لعامل sizeof على مؤشر بدلاً من هدفه.
  • unterminated-string-strncpy. غياب إنهاء NUL صريح بعد strncpy وstpncpy.
  • off-by-one. خطأ محتمل خارج التعداد (off-by-one).
  • unsafe-ret-snprintf-vsnprintf. استخدام قد يكون غير آمن لقيمة الإرجاع لـ snprintf وvsnprintf.
  • unsafe-ret-strlcpy-strlcat. استخدام قد يكون غير آمن لقيمة الإرجاع لـ strlcpy وstrlcat.
  • pointer-subtraction. استخدام محتمل لطرح المؤشرات لتحديد الحجم.
  • write-into-stack-buffer. كتابة مباشرة في مخزن مؤقت مخصص على المكدس.
  • mismatched-memory-management. إجراءات إدارة ذاكرة C متطابقة بشكل محتمل.
  • mismatched-memory-management-cpp. إجراءات إدارة ذاكرة C++ متطابقة بشكل محتمل.
  • memory-address-exposure. كشف محتمل لعناوين الذاكرة الأساسية.
  • high-entropy-assignment
  • argv-envp-access. الوصول إلى وسيطات سطر الأوامر أو متغيرات البيئة.
  • missing-default-in-switch. غياب حالة default في جملة switch.
  • missing-break-in-switch. غياب break أو ما يعادله في جملة switch.
  • missing-return. غياب جملة return في دالة غير void.
  • typos. أخطاء إملائية محتملة ذات تأثيرات أمنية.