
مجموعة من قواعد Semgrep الخاصة بي لتسهيل أبحاث الثغرات الأمنية.
«سطح الهجوم هو الثغرة. العثور على خطأ هناك ليس سوى تفصيل.»
-- Mark Dowd
«بعض التفاصيل أكثر أهمية من غيرها.»
-- Fedor G. Pikus
مجموعة من قواعد Semgrep الخاصة بي لتسهيل أبحاث الثغرات الأمنية.
# فحص ذو أولوية عالية (مكاسب سريعة)
semgrep --severity ERROR --config "p/0xdea"
# فحص ذو أولوية عالية ومتوسطة (موصى به)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"
# فحص كامل (قد يتضمن نتائج هامشية ومزيدًا من الإيجابيات الكاذبة)
semgrep --config "p/0xdea"
بدلًا من ذلك، يمكنك استنساخ مستودع GitHub هذا محليًا وتشغيل:
# فحص كامل
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:
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++) مختبرة ميدانيًا.
gets.strcpy، stpcpy، strcat.sprintf وvsprintf.scanf.strncat.strncpy، ، ، والنسخ المختلفة.strlen إلى short قد يكون خطيرًا.alloca.free.free مزدوج محتمل.free على ذاكرة ليست في الكومة.malloc، calloc، realloc، إلخ.putenv بمتغير مخصص على المكدس.system أو popen.access، stat، lstat، إلخ.mktemp، tmpnam، tempnam.signal.setuid وseteuid.memset.rand وsrand.scanf.atoi، atol، atof.تُعتبر هذه القواعد صاخبة جدًا بشكل محتمل وغير مناسبة للاستخدام العام.
--time مقابل أكواد من العالم الحقيقي لاكتشاف القواعد البطيئة التي تحتاج إلى تحسين.memcpysnprintfsizeof على مؤشر بدلاً من هدفه.strncpy وstpncpy.snprintf وvsnprintf.strlcpy وstrlcat.