العودة إلى التحديثات
New releaseAug 13, 2026

semgrep v1.173.0

تحليل ثابت خفيف الوزن للعديد من اللغات. اعثر على متغيرات الأخطاء باستخدام أنماط تشبه الكود المصدري.

مشاركة

شعار Semgrep

فحص الكود بسرعة هائلة.

Homebrew PyPI التوثيق انضم إلى مجتمع Semgrep على Slack المشكلات مرحب بها! ضع نجمة لـ Semgrep على GitHub سحوبات Docker سحوبات Docker (قديم) تابع @semgrep على تويتر


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 موصى بها بشدة لأنها تضيف القدرات الحرجة التالية:

  1. قدرات تحليل أساسية محسّنة (عبر الملفات، عبر الدوال، قابلية الوصول لتدفق البيانات) تقلل بشكل كبير من الإيجابيات الخاطئة بنسبة 25% وتزيد الإيجابيات الحقيقية المكتشفة بنسبة 250%
  2. معالجة لاحقة سياقية للنتائج باستخدام Semgrep Assistant (AI) لتقليل الضوضاء بشكل أكبر بنسبة ~20%. بالإضافة إلى ذلك، يثري المساعد النتائج بإرشادات علاجية مخصصة خطوة بخطوة يجدها البشر قابلة للتنفيذ بنسبة >80% من الوقت.
  3. سياسات قابلة للتخصيص وتكامل سلس في سير عمل المطورين، مما يمنح فرق الأمان تحكماً دقيقاً في أين ومتى وكيف يتم عرض النتائج المختلفة للمطورين (IDE، تعليق PR، إلخ.)

تعمل Semgrep AppSec Platform فوراً مع أكثر من 20000 قاعدة خاصة عبر SAST وSCA والأسرار. القواعد الاحترافية مكتوبة ومُدارة بواسطة فريق أبحاث الأمان في Semgrep ودقيقة للغاية، مما يعني أن فرق AppSec يمكنها أن تثق في نقل النتائج مباشرة إلى المطورين دون إبطائهم.

تقوم Semgrep بتحليل الكود محلياً على جهاز الكمبيوتر الخاص بك أو في بيئة البناء الخاصة بك: بشكل افتراضي، لا يتم رفع الكود أبداً. ابدأ الآن ←.

صورة Semgrep CLI

دعم اللغات

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)

لمزيد من المعلومات، انظر اللغات المدعومة.

البدء 🚀

  1. من Semgrep AppSec Platform
  2. من CLI

للمستخدمين الجدد، نوصي بالبدء مع Semgrep AppSec Platform لأنها توفر واجهة مرئية، مشروع تجريبي، سير عمل لتصنيف النتائج واستكشافها، وتجعل الإعداد في CI/CD سهلاً. لا تزال عمليات الفحص محلية ولا يتم رفع الكود. بدلاً من ذلك، يمكنك أيضاً البدء مع CLI والتنقل في مخرجات الطرفية لتشغيل عمليات بحث لمرة واحدة.

الخيار 1: البدء من Semgrep Appsec Platform (موصى به)

صورة منصة Semgrep

  1. سجل على semgrep.dev

  2. استكشف النتائج التجريبية لتعلم كيفية عمل Semgrep

  3. افحص مشروعك بالانتقال إلى Projects > Scan New Project > Run scan in CI

  4. حدد نظام التحكم في الإصدار الخاص بك واتبع خطوات الإعداد لإضافة مشروعك. بعد هذا الإعداد، سوف تفحص Semgrep مشروعك بعد كل طلب سحب.

  5. [اختياري] إذا كنت ترغب في تشغيل Semgrep محلياً، اتبع الخطوات في قسم CLI.

ملاحظات:

إذا كانت هناك أي مشكلات، يرجى طلب المساعدة في Slack Semgrep.

الخيار 2: البدء من CLI

  1. قم بتثبيت 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
    
  2. قم بتشغيل semgrep login لإنشاء حسابك وتسجيل الدخول إلى Semgrep. هذه الخطوة اختيارية، لكن تسجيل الدخول إلى Semgrep يمنحك الوصول إلى:

  3. اذهب إلى الدليل الجذر لتطبيقك وقم بتشغيل semgrep ci. سيقوم هذا بفحص مشروعك للتحقق من وجود ثغرات في الكود المصدري وتبعياته.

  4. حاول كتابة استعلامك الخاص بشكل تفاعلي باستخدام -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 بالنقر هنا.

مثال قاعدة Semgrep لاكتشاف جمل Python print()

أمثلة

قم بزيارة 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 المبادئ التي توجه قرارات جمع البيانات وتحليل البيانات التي يتم جمعها والتي لا يتم جمعها عند تمكين المقاييس.

المزيد

الترقيةللتحديث، قم بتشغيل الأمر أدناه المرتبط بكيفية تثبيت 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

الفئات