
semgrep v1.173.0
تحليل ثابت خفيف الوزن للعديد من اللغات. اعثر على متغيرات الأخطاء باستخدام أنماط تشبه الكود المصدري.
فحص الكود بسرعة هائلة.
Semgrep هي أداة تحليل ثابت سريعة ومفتوحة المصدر تبحث في الكود، وتجد الأخطاء، وتفرض قواعد الأمان ومعايير الترميز. تدعم Semgrep أكثر من 30 لغة ويمكن تشغيلها في IDE، وكفحص قبل الالتزام (pre-commit)، وكجزء من سير عمل CI/CD.
Semgrep هي grep دلالي للكود. بينما تشغيل grep "2" سيطابق فقط السلسلة النصية الدقيقة 2، فإن Semgrep ستطابق x = 1; y = x + 1 عند البحث عن 2. تبدو قواعد Semgrep مثل الكود الذي تكتبه بالفعل؛ لا حاجة لأشجار النحو المجردة، أو الصراع مع التعبيرات النمطية، أو لغات خاصة مؤلمة.
لاحظ أنه في سياقات الأمان، ستفوت Semgrep Community Edition العديد من الإيجابيات الحقيقية حيث يمكنها فقط تحليل الكود ضمن حدود دالة أو ملف واحد. إذا كنت ترغب في استخدام Semgrep لأغراض أمنية (SAST، SCA، أو فحص الأسرار)، فإن Semgrep AppSec Platform موصى بها بشدة لأنها تضيف القدرات الحرجة التالية:
- قدرات تحليل أساسية محسّنة (عبر الملفات، عبر الدوال، قابلية الوصول لتدفق البيانات) تقلل بشكل كبير من الإيجابيات الخاطئة بنسبة 25% وتزيد الإيجابيات الحقيقية المكتشفة بنسبة 250%
- معالجة لاحقة سياقية للنتائج باستخدام Semgrep Assistant (AI) لتقليل الضوضاء بشكل أكبر بنسبة ~20%. بالإضافة إلى ذلك، يثري المساعد النتائج بإرشادات علاجية مخصصة خطوة بخطوة يجدها البشر قابلة للتنفيذ بنسبة >80% من الوقت.
- سياسات قابلة للتخصيص وتكامل سلس في سير عمل المطورين، مما يمنح فرق الأمان تحكماً دقيقاً في أين ومتى وكيف يتم عرض النتائج المختلفة للمطورين (IDE، تعليق PR، إلخ.)
تعمل Semgrep AppSec Platform فوراً مع أكثر من 20000 قاعدة خاصة عبر SAST وSCA والأسرار. القواعد الاحترافية مكتوبة ومُدارة بواسطة فريق أبحاث الأمان في Semgrep ودقيقة للغاية، مما يعني أن فرق AppSec يمكنها أن تثق في نقل النتائج مباشرة إلى المطورين دون إبطائهم.
تقوم Semgrep بتحليل الكود محلياً على جهاز الكمبيوتر الخاص بك أو في بيئة البناء الخاصة بك: بشكل افتراضي، لا يتم رفع الكود أبداً. ابدأ الآن ←.
دعم اللغات
Semgrep Code تدعم أكثر من 30 لغة، بما في ذلك:
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TypeScript · TSX · YAML · XML · عام (ERB, Jinja, إلخ)
Semgrep Supply Chain تدعم 12 لغة عبر 15 مدير حزم، بما في ذلك:
C# (NuGet) · Dart (Pub) · Go (وحدات Go، go mod) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Composer) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Swift (SwiftPM)
لمزيد من المعلومات، انظر اللغات المدعومة.
البدء 🚀
للمستخدمين الجدد، نوصي بالبدء مع Semgrep AppSec Platform لأنها توفر واجهة مرئية، مشروع تجريبي، سير عمل لتصنيف النتائج واستكشافها، وتجعل الإعداد في CI/CD سهلاً. لا تزال عمليات الفحص محلية ولا يتم رفع الكود. بدلاً من ذلك، يمكنك أيضاً البدء مع CLI والتنقل في مخرجات الطرفية لتشغيل عمليات بحث لمرة واحدة.
الخيار 1: البدء من Semgrep Appsec Platform (موصى به)
-
سجل على semgrep.dev
-
استكشف النتائج التجريبية لتعلم كيفية عمل Semgrep
-
افحص مشروعك بالانتقال إلى
Projects > Scan New Project > Run scan in CI -
حدد نظام التحكم في الإصدار الخاص بك واتبع خطوات الإعداد لإضافة مشروعك. بعد هذا الإعداد، سوف تفحص Semgrep مشروعك بعد كل طلب سحب.
-
[اختياري] إذا كنت ترغب في تشغيل Semgrep محلياً، اتبع الخطوات في قسم CLI.
ملاحظات:
إذا كانت هناك أي مشكلات، يرجى طلب المساعدة في Slack Semgrep.
الخيار 2: البدء من CLI
-
قم بتثبيت Semgrep CLI
# For macOS $ brew install semgrep # For Ubuntu/WSL/Linux/macOS $ python3 -m pip install semgrep # To try Semgrep without installation run via Docker $ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login $ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci -
قم بتشغيل
semgrep loginلإنشاء حسابك وتسجيل الدخول إلى Semgrep. هذه الخطوة اختيارية، لكن تسجيل الدخول إلى Semgrep يمنحك الوصول إلى:- Semgrep Supply Chain: ماسح تبعيات يكتشف الثغرات القابلة للوصول في المكتبات الطرفية
- قواعد Semgrep Code الاحترافية: أكثر من 600 قاعدة عالية الثقة كتبها فريق أبحاث الأمان في Semgrep
- محرك Semgrep Code الاحترافي: محرك تحليل كود متقدم، مصمم لاكتشاف الثغرات المعقدة وتقليل الإيجابيات الخاطئة
-
اذهب إلى الدليل الجذر لتطبيقك وقم بتشغيل
semgrep ci. سيقوم هذا بفحص مشروعك للتحقق من وجود ثغرات في الكود المصدري وتبعياته. -
حاول كتابة استعلامك الخاص بشكل تفاعلي باستخدام
-e. على سبيل المثال، فحص لـ Python == حيث الجانبان الأيسر والأيمن متطابقان (ربما خطأ):$ semgrep -e '$X == $X' --lang=py path/to/src
نظام Semgrep البيئي
يشمل نظام Semgrep البيئي ما يلي:
-
Semgrep Community Edition - محرك تحليل البرامج مفتوح المصدر في قلب كل شيء. مناسب لحالات الاستخدام المخصصة مع قدرة عالية على تحمل الإيجابيات الخاطئة - فكر في المستشارين ومدققي الأمن أو المختبرين الاختراقيين.
-
Semgrep AppSec Platform - قم بتنظيم وتوسيع نطاق فحص SAST وSCA والأسرار بسهولة عبر المؤسسة، دون خطر إرهاق المطورين. خصص النتائج التي يراها المطورون وأين يرونها وتكامل مع مزودي CI مثل GitHub وGitLab وCircleCI وغيرها. يتضمن مستويات مجانية ومدفوعة.
-
Semgrep Code (SAST) - حقق تقدماً حقيقياً في قائمة الثغرات الخاصة بك باستخدام SAST التي تقلل الضوضاء وتمكن المطورين من إصلاح المشكلات بسرعة بأنفسهم، حتى بدون معرفة أمنية. سهولة نشر قواعد الأمان وإرشادات العلاج المخصصة خطوة بخطوة تعني أن المطورين يصلحون المشكلات بالفعل لأنهم لا يشعرون بالإبطاء.
-
Semgrep Supply Chain (SSC) - ماسح تبعيات عالي الإشارة يكتشف الثغرات القابلة للوصول في المكتبات والوظائف الطرفية مفتوحة المصدر.
-
Semgrep Secrets (فحص الأسرار) - كشف الأسرار الذي يستخدم التحليل الدلالي وتحليل الإنتروبيا المحسن والتحقق لسطح بيانات الاعتماد الحساسة بدقة في سير عمل المطور.
-
Semgrep Assistant (AI) - المساعد هو مهندس AppSec مدعوم بالذكاء الاصطناعي يساعد كلاً من المطورين وفرق AppSec في تحديد الأولويات والتصنيف ومعالجة نتائج Semgrep على نطاق واسع. يوافق البشر على قرارات التصنيف التلقائي للمساعد بنسبة 97% من الوقت، ويقيمون إرشادات العلاج المولدة كمفيدة بنسبة 80% من الوقت. للحصول على نظرة عامة حول كيفية عمل المساعد، اقرأ هذه النظرة العامة.
-
-
Semgrep MCP Server - خادم بروتوكول سياق النموذج (MCP) يتيح لمساعدي الترميز بالذكاء الاصطناعي تشغيل فحوصات Semgrep مباشرة. يتكامل مع Cursor وVS Code وWindsurf وClaude Desktop وغيرها. قم بتشغيل
semgrep mcpلبدء تشغيله محلياً.- Hooks - قم بتشغيل فحوصات Semgrep تلقائياً أثناء الترميز.
- Skills / Prompts - مطالبات MCP مدمجة مثل
write_custom_semgrep_ruleتساعد مساعدي الذكاء الاصطناعي في كتابة قواعد Semgrep دقيقة. - إضافة Claude Code - متاحة في المتجر الرسمي وعبر مستودع semgrep/mcp-marketplace:
/plugin marketplace add semgrep/mcp-marketplace - إضافة Cursor - متاحة في المتجر الرسمي وعبر مستودع semgrep/cursor-plugin repo.
موارد إضافية:
- Semgrep Playground - أداة تفاعلية عبر الإنترنت لكتابة ومشاركة القواعد.
- Semgrep Registry - أكثر من 2000 قاعدة من المجتمع تغطي الأمان والصحة وثغرات التبعيات.
انضم إلى مئات الآلاف من المطورين ومهندسي الأمن الآخرين الذين يستخدمون Semgrep بالفعل في شركات مثل GitLab وDropbox وSlack وFigma وShopify وHashiCorp وSnowflake وTrail of Bits.
تم تطوير Semgrep ودعمه تجارياً بواسطة Semgrep, Inc.، شركة برمجيات أمنية.
قواعد Semgrep
تبدو قواعد Semgrep مثل الكود الذي تكتبه بالفعل؛ لا حاجة لأشجار النحو المجردة، أو التعبيرات النمطية، أو لغات خاصة مؤلمة. إليك قاعدة سريعة للعثور على جمل print() في Python.
قم بتشغيلها عبر الإنترنت في Semgrep Playground بالنقر هنا.
أمثلة
قم بزيارة Docs > Rule examples لحالات الاستخدام والأفكار.
| حالة الاستخدام | قاعدة Semgrep |
|---|---|
| حظر APIs الخطيرة | منع استخدام exec |
| البحث عن المسارات والمصادقة | استخراج مسارات Spring |
| فرض استخدام الإعدادات الافتراضية الآمنة | تعيين ملفات تعريف الارتباط Flask بشكل آمن |
| البيانات الملوثة المتدفقة إلى المصارف | تدفق البيانات ExpressJS إلى sandbox.run |
| فرض أفضل الممارسات للمشروع | استخدم assertEqual لفحوصات ==، تحقق دائماً من استدعاءات العمليات الفرعية |
| تدوين المعرفة الخاصة بالمشروع | تحقق من المعاملات قبل إجرائها |
| تدقيق النقاط الساخنة الأمنية | العثور على XSS في Apache Airflow، بيانات اعتماد مشفرة |
| تدقيق ملفات التكوين | العثور على استخدامات S3 ARN |
| الترحيل من APIs المهملة | DES مهمل، APIs Flask مهملة، APIs Bokeh مهملة |
| تطبيق التصحيحات التلقائية | استخدم listenAndServeTLS |
الإضافات
قم بزيارة Docs > Extensions لمعرفة كيفية استخدام Semgrep في المحرر أو pre-commit الخاص بك. عند التكامل مع CI وتكوينه لفحص طلبات السحب، سيقوم Semgrep بالإبلاغ فقط عن المشكلات التي قدمها طلب السحب ذلك؛ هذا يتيح لك البدء في استخدام Semgrep دون إصلاح أو تجاهل المشكلات الموجودة مسبقاً!
التوثيق
تصفح توثيق Semgrep الكامل على الموقع. إذا كنت جديداً في Semgrep، تحقق من Docs > Getting started أو البرنامج التعليمي التفاعلي.
المقاييس
استخدام التكوين عن بُعد من Registry (مثل --config=p/ci) يرسل مقاييس القاعدة ذات الأسماء المستعارة إلى semgrep.dev.
عند استخدام التكوينات من الملفات المحلية (مثل --config=xyz.yml)، يتم إرسال المقاييس فقط عندما يكون المستخدم مسجلاً الدخول.
لتعطيل مقاييس قواعد Registry، استخدم --metrics=off.
تصف سياسة الخصوصية الخاصة بـ Semgrep المبادئ التي توجه قرارات جمع البيانات وتحليل البيانات التي يتم جمعها والتي لا يتم جمعها عند تمكين المقاييس.
المزيد
- الأسئلة الشائعة (FAQs)
- المساهمة
- تعليمات البناء للمطورين
- اطرح الأسئلة في Slack مجتمع Semgrep
- مرجع CLI ورموز الخروج
- قناة Semgrep على YouTube
- الترخيص (LGPL-2.1)
- ترخيص Semgrep
الترقيةللتحديث، قم بتشغيل الأمر أدناه المرتبط بكيفية تثبيت Semgrep:```sh
Using Homebrew
$ brew upgrade semgrep
Using pipx
$ pipx upgrade semgrep
Using uv tool command
$ uv tool upgrade semgrep
Using Docker
$ docker pull semgrep/semgrep:latest
