Semgrep عبارة عن أداة تحليل ثابتة سريعة ومفتوحة المصدر تبحث في التعليمات البرمجية وتجد الأخطاء وتفرض حواجز حماية آمنة ومعايير الترميز. يدعم Semgrep أكثر من 30 لغة ويمكن تشغيله في IDE، وكفحص مسبق للالتزام، وكجزء من سير عمل CI/CD.
Semgrep هو grep الدلالي للتعليمات البرمجية. أثناء تشغيل grep "2"
سوف يتطابق فقط مع السلسلة الدقيقة 2 ، فإن Semgrep سيطابق x = 1; y = x + 1
عند البحث عن 2 . تبدو قواعد Semgrep مثل الكود الذي كتبته بالفعل؛ لا توجد أشجار نحوية مجردة أو مصارعة regex أو DSLs مؤلمة.
لاحظ أنه في السياقات الأمنية، سيفتقد Semgrep OSS العديد من الإيجابيات الحقيقية لأنه يمكنه فقط تحليل التعليمات البرمجية داخل حدود وظيفة أو ملف واحد. إذا كنت تريد استخدام Semgrep لأغراض أمنية ( SAST أو SCA أو فحص الأسرار )، يوصى بشدة باستخدام Semgrep AppSec Platform لأنه يضيف الإمكانات الهامة التالية:
تعمل منصة Semgrep AppSec خارج الصندوق مع أكثر من 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 · روبي · الصدأ · سكالا · المخطط · الصلابة · سويفت · Terraform · TypeScript · TSX · YAML · XML · عام (ERB، Jinja، إلخ.)
تدعم Semgrep Supply Chain 12 لغة عبر 15 مديرًا للحزم، بما في ذلك:
C# (NuGet) · Dart (Pub) · Go (Go Modules, go mod
) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (الملحن) · بايثون (النقطة، أداة النقطة، Pipenv، الشعر) · روبي (RubyGems) · الصدأ (الشحن) · سكالا (مافن) · سويفت (SwiftPM)
لمزيد من المعلومات، راجع اللغات المدعومة.
بالنسبة للمستخدمين الجدد، نوصي بالبدء باستخدام Semgrep AppSec Platform لأنه يوفر واجهة مرئية ومشروعًا تجريبيًا وفرز النتائج وسير عمل الاستكشاف ويجعل الإعداد في CI/CD سريعًا. لا تزال عمليات المسح محلية ولم يتم تحميل الكود. وبدلاً من ذلك، يمكنك أيضًا البدء باستخدام واجهة سطر الأوامر (CLI) والتنقل في مخرجات الوحدة الطرفية لإجراء عمليات بحث لمرة واحدة.
سجل على semgrep.dev
استكشف النتائج التجريبية لمعرفة كيفية عمل Semgrep
قم بمسح مشروعك بالانتقال إلى Projects > Scan New Project > Run scan in CI
حدد نظام التحكم في الإصدار الخاص بك واتبع خطوات الإعداد لإضافة مشروعك. بعد هذا الإعداد، سيقوم Semgrep بفحص مشروعك بعد كل طلب سحب.
[اختياري] إذا كنت تريد تشغيل Semgrep محليًا، فاتبع الخطوات الموجودة في قسم واجهة سطر الأوامر (CLI).
إذا كانت هناك أية مشكلات، فيرجى طلب المساعدة في Semgrep Slack.
# 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 ci
. سيؤدي هذا إلى فحص مشروعك للتحقق من وجود ثغرات أمنية في كود المصدر الخاص بك وتبعياته.
حاول كتابة الاستعلام الخاص بك بشكل تفاعلي باستخدام -e
. على سبيل المثال، التحقق من Python == حيث يكون الجانبان الأيسر والأيمن متماثلين (من المحتمل أن يكون خطأ): $ semgrep -e '$X == $X' --lang=py path/to/src
يتضمن نظام Semgrep البيئي ما يلي:
Semgrep OSS - محرك تحليل البرامج مفتوح المصدر في قلب كل شيء. مناسب لحالات الاستخدام المخصصة التي تتمتع بدرجة عالية من التسامح مع النتائج الإيجابية الكاذبة - فكر في المستشارين أو مدققي الأمن أو المخترقين.
منصة Semgrep AppSec - يمكنك بسهولة تنسيق وتوسيع نطاق فحص SAST وSCA وSecrets عبر المؤسسة، دون التعرض لخطر إرهاق المطورين. قم بتخصيص النتائج التي يراها المطورون، وأين يرونها، وادمجها مع موفري CI مثل GitHub، وGitLab، وCircleCI، والمزيد. يشمل كلا من المستويات المجانية والمدفوعة.
Semgrep Code (SAST) - حقق تقدمًا حقيقيًا في تراكم الثغرات الأمنية لديك باستخدام SAST الذي يقلل من الضوضاء ويمكّن المطورين من إصلاح المشكلات بسرعة بأنفسهم، حتى لو لم تكن لديهم معرفة أمنية. إن سهولة نشر حواجز الحماية الآمنة وإرشادات المعالجة المخصصة خطوة بخطوة تعني أن المطورين يقومون فعليًا بإصلاح المشكلات لأنهم لا يشعرون بالبطء.
Semgrep Supply Chain (SSC) - ماسح ضوئي عالي الإشارة للتبعية يكتشف نقاط الضعف التي يمكن الوصول إليها في مكتبات ووظائف الطرف الثالث مفتوحة المصدر.
Semgrep Secrets (مسح الأسرار) - اكتشاف الأسرار الذي يستخدم التحليل الدلالي، وتحسين تحليل الإنتروبيا، والتحقق من الصحة لإظهار بيانات الاعتماد الحساسة بدقة في سير عمل المطور.
Semgrep Assistant (AI) - المساعد هو مهندس AppSec مدعوم بالذكاء الاصطناعي يساعد المطورين وفرق AppSec على تحديد أولويات نتائج Semgrep وفرزها ومعالجتها على نطاق واسع. يوافق البشر على قرارات الفرز التلقائي للمساعد بنسبة 97% من الوقت، ويصنفون إرشادات العلاج التي تم إنشاؤها على أنها مفيدة بنسبة 80% من الوقت. للحصول على نظرة عامة حول كيفية عمل المساعد، اقرأ هذه النظرة العامة.
موارد إضافية:
انضم إلى مئات الآلاف من المطورين ومهندسي الأمان الآخرين الذين يستخدمون Semgrep بالفعل في شركات مثل GitLab وDropbox وSlack وFigma وShopify وHashiCorp وSnowflake وTrail of Bits.
تم تطوير Semgrep ودعمه تجاريًا بواسطة Semgrep, Inc.، وهي شركة لأمن البرامج.
تبدو قواعد Semgrep مثل الكود الذي كتبته بالفعل؛ لا توجد أشجار نحوية مجردة أو مصارعة regex أو DSLs مؤلمة. إليك قاعدة سريعة للعثور على عبارات Python print()
.
قم بتشغيله عبر الإنترنت في ملعب Semgrep بالنقر هنا.
تفضل بزيارة المستندات > أمثلة القواعد لحالات الاستخدام والأفكار.
حالة الاستخدام | حكم سيمغريب |
---|---|
حظر واجهات برمجة التطبيقات الخطيرة | منع استخدام exec |
طرق البحث والمصادقة | استخراج طرق الربيع |
فرض استخدام الإعدادات الافتراضية الآمنة | قم بتعيين ملفات تعريف الارتباط Flask بشكل آمن |
البيانات الملوثة تتدفق إلى المصارف | تدفق بيانات ExpressJS إلى sandbox.run |
فرض أفضل ممارسات المشروع | استخدم "assertEqual" لإجراء اختبارات ==، وتحقق دائمًا من استدعاءات العمليات الفرعية |
تدوين المعرفة الخاصة بالمشروع | التحقق من المعاملات قبل إجرائها |
تدقيق النقاط الساخنة الأمنية | العثور على XSS في Apache Airflow، بيانات الاعتماد المشفرة |
ملفات التكوين التدقيق | ابحث عن استخدامات S3 ARN |
الترحيل من واجهات برمجة التطبيقات المهملة | تم إهمال DES، وواجهات برمجة تطبيقات Flask المهملة، وواجهات برمجة تطبيقات Bokeh المهملة |
تطبيق الإصلاحات التلقائية | استخدم الاستماع وServeTLS |
تفضل بزيارة Docs > Extensions للتعرف على كيفية استخدام Semgrep في محررك أو الالتزام المسبق. عند دمجها في CI وتكوينها لفحص طلبات السحب، سيقوم Semgrep بالإبلاغ فقط عن المشكلات التي يقدمها طلب السحب هذا؛ يتيح لك هذا البدء في استخدام Semgrep دون إصلاح أو تجاهل المشكلات الموجودة مسبقًا!
تصفح وثائق Semgrep الكاملة على الموقع. إذا كنت جديدًا في Semgrep، فراجع المستندات > البدء أو البرنامج التعليمي التفاعلي.
باستخدام التكوين عن بعد من السجل (مثل --config=p/ci
) يُبلغ عن مقاييس القاعدة ذات الأسماء المستعارة إلى semgrep.dev.
استخدام التكوينات من الملفات المحلية (مثل --config=xyz.yml
) لا يؤدي إلى تمكين المقاييس.
لتعطيل مقاييس قاعدة التسجيل، استخدم --metrics=off
.
تصف سياسة خصوصية Semgrep المبادئ التي توجه قرارات جمع البيانات وتقسيم البيانات التي يتم جمعها والتي لا يتم جمعها عند تمكين المقاييس.
للترقية، قم بتشغيل الأمر أدناه المرتبط بكيفية تثبيت Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest