Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
opengrep — 🔎 محرك تحليل ثابت للشيفرة البرمجية لاكتشاف المشكلات الأمنية في الشيفرة. | Kitploit
أدوات/GitHubGitHub/opengrep/opengrep
أدوات دفاعيةالتحليل الثابتماسحات الثغرات الأمنيةتحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودالبرمجة النصية والأتمتةالمحاكاة الافتراضية للأمانDevSecOpsأمن سلسلة التوريد
GitHub
3.2k28041منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
opengrep/opengrep

opengrep

🔎 محرك تحليل ثابت للشيفرة البرمجية لاكتشاف المشكلات الأمنية في الشيفرة.

عرض المستودع
مشاركة

شعار Opengrep

مرحبًا بك في Opengrep، تفرّع من Semgrep، بموجب ترخيص LGPL 2.1

Opengrep هو محرك SAST مفتوح المصدر الأكثر تقدمًا.

لنجعل تطوير البرمجيات الآمن معيارًا مشتركًا. يوفّر Opengrep لكل مطوّر ومؤسسة تحليلًا ثابتًا للشيفرة مفتوحًا ومتقدمًا.

يحظى Opengrep بدعم من اتحاد من مؤسسات AppSec، بما في ذلك: Aikido، Amplify، Endor Labs، Kodem، وOrca Security. لمعرفة المزيد، اقرأ البيان على opengrep.dev.

لماذا Opengrep؟

أُنشئ Opengrep عندما نقلت Semgrep ميزات حاسمة خلف ترخيص تجاري. نؤمن بأن التحليل الثابت المتقدم يجب أن يبقى مفتوحًا ومتاحًا للجميع.

المزايا الرئيسية:

  • متوافق مع قواعد Semgrep - قواعدك ومجموعات القواعد الحالية تعمل دون تغيير
  • مخرجات قياسية - صيغ JSON وSARIF لسهولة التكامل
  • حوكمة مفتوحة - تُقبل المساهمات على أساس الجدارة، لا المصلحة التجارية
  • ضمان طويل الأمد - ملتزمون بالمصدر المفتوح بموجب LGPL 2.1

التحسينات الرئيسية

أدخل Opengrep تحسينات كبيرة منذ التفرّع. تشمل أبرزها:

تحليل تلوّث فائق (--taint-intrafile):

  • تتبّع تعيينات المُنشئ (constructor) والحقول
  • تدفّق التلوّث بين الدوال (inter-method)
  • دعم الدوال عالية الرتبة عبر 12 لغة
  • تلويث دوال المجموعات (map، filter، reduce، إلخ)

راجع درس التلويث داخل الملف ودرس الدوال عالية الرتبة للتفاصيل.

دعم اللغات:

  • Visual Basic - غير متاح في Semgrep CE أو Pro
  • Apex، Elixir - غير متاح في Semgrep CE
  • محسّن: Clojure (دعم التلويث)، PHP 8.4، C# 14

التوزيع:

  • ملفات ثنائية مكتفية ذاتيًا مُجمّعة من OCaml
  • إصدارات موقّعة باستخدام Cosign

راجع OPENGREP.md للقائمة الكاملة بالتحسينات منذ التفرّع.

Opengrep: بحث سريع وقوي عن أنماط الشيفرة

Opengrep أداة تحليل ثابت فائقة السرعة للبحث عن أنماط الشيفرة بقوة grep الدلالي. حلّل قواعد شيفرة كبيرة بسرعة الفكر مع مطابقة أنماط بديهية وقواعد قابلة للتخصيص. اكتشف وأصلح الثغرات الأمنية بسرعة – وأطلق شيفرة أكثر أمانًا.

يدعم Opengrep أكثر من 30 لغة، بما في ذلك:

Apex · Bash · C · C++ · C# · Clojure · Crystal · Dart · Dockerfile · Elixir · Go · HTML · Java · JavaScript · JSON · Jsonnet · JSX · Julia · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidity · Swift · Terraform · TSX · TypeScript · Visual Basic · XML · YAML · Generic (ERB، Jinja، إلخ)

التثبيت

تثبيت سريع (موصى به)

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/opengrep/opengrep/main/install.sh | bash

أو إذا كنت قد استنسخت المستودع:

./install.sh

Windows (PowerShell)

irm https://raw.githubusercontent.com/opengrep/opengrep/main/install.ps1 | iex

أو باستخدام إصدار محدد:

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/opengrep/opengrep/main/install.ps1))) -Version v1.16.0

التثبيت اليدوي

الملفات التنفيذية متاحة على صفحة الإصدارات.

على Windows، تحتوي الحزمة على opengrep.exe وملفات DLL التي يحتاجها؛ احتفظ بها معًا في الدليل الذي تثبّتها فيه.

البدء

أنشئ rules/demo-rust-unwrap.yaml بالمحتوى التالي:

rules:
- id: unwrapped-result
  pattern: $VAR.unwrap()
  message: "Unwrap detected - potential panic risk"
  languages: [rust]
  severity: WARNING

وcode/rust/main.rs بالمحتوى التالي (الذي يحتوي على unwrap محفوف بالمخاطر):

fn divide(a: i32, b: i32) -> Result<i32, String> {
    if b == 0 {
        return Err("Division by zero".to_string());
    }
    Ok(a / b)
}

fn main() {
    let result = divide(10, 0).unwrap(); // Risky unwrap!
    println!("Result: {}", result);
}

يجب أن يكون لديك الآن:

.
├── code
│   └── rust
│       └── main.rs
└── rules
    └── demo-rust-unwrap.yaml

الآن شغّل:

❯ opengrep scan -f rules code/rust

┌──────────────┐
│ Opengrep CLI │
└──────────────┘


Scanning 1 file (only git-tracked) with 1 Code rule:

  CODE RULES
  Scanning 1 file.

  PROGRESS

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00


┌────────────────┐
│ 1 Code Finding │
└────────────────┘

    code/rust/main.rs
    ❯❯ rules.unwrapped-result
          Unwrap detected - potential panic risk

            9┆ let result = divide(10, 0).unwrap(); // Risky unwrap!



┌──────────────┐
│ Scan Summary │
└──────────────┘

Ran 1 rule on 1 file: 1 finding.

للحصول على مخرجات SARIF:

❯ opengrep scan --sarif-output=sarif.json -f rules code
  ...
❯ cat sarif.json | jq
{
  "version": "2.1.0",
  "runs": [
    {
      "invocations": [
        {
          "executionSuccessful": true,
          "toolExecutionNotifications": []
        }
      ],
      "results": [
        {
          "fingerprints": {
            "matchBasedId/v1": "a0ff5ed82149206a74ee7146b075c8cb9e79c4baf86ff4f8f1c21abea6ced504e3d33bb15a7e7dfa979230256603a379edee524cf6a5fd000bc0ab29043721d8_0"
          },
          "locations": [
            {
              "physicalLocation": {
                "artifactLocation": {
                  "uri": "code/rust/main.rs",
                  "uriBaseId": "%SRCROOT%"
                },
                "region": {
                  "endColumn": 40,
                  "endLine": 9,
                  "snippet": {
                    "text": "    let result = divide(10, 0).unwrap(); // Risky unwrap!"
                  },
                  "startColumn": 18,
                  "startLine": 9
                }
              }
            }
          ],
          "message": {
            "text": "Unwrap detected - potential panic risk"
          },
          "properties": {},
          "ruleId": "rules.unwrapped-result"
        }
      ],
      "tool": {
        "driver": {
          "name": "Opengrep OSS",
          "rules": [
            {
              "defaultConfiguration": {
                "level": "warning"
              },
              "fullDescription": {
                "text": "Unwrap detected - potential panic risk"
              },
              "help": {
                "markdown": "Unwrap detected - potential panic risk",
                "text": "Unwrap detected - potential panic risk"
              },
              "id": "rules.unwrapped-result",
              "name": "rules.unwrapped-result",
              "properties": {
                "precision": "very-high",
                "tags": []
              },
              "shortDescription": {
                "text": "Opengrep Finding: rules.unwrapped-result"
              }
            }
          ],
          "semanticVersion": "1.100.0"
        }
      }
    }
  ],
  "$schema": "https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/schemas/sarif-schema-2.1.0.json"
}

ملف السجل

اضبط OPENGREP_LOG_FILE (أو SEMGREP_LOG_FILE) على مسار للحصول على نسخة مما تطبعه Opengrep على stderr، بالمستوى نفسه: التحذيرات والأخطاء افتراضيًا، وأكثر مع --verbose أو --debug. يُقتطع الملف عند كل تشغيل ويُنشأ دليله. لا يُكتب شيء عندما لا يكون المتغير مضبوطًا. المسار الذي يتعذر الكتابة إليه يُنتج تحذيرًا ويستمر التشغيل دون النسخة.

التقرير النصي

يحدد --skin تخطيط التقرير النصي: simple (الافتراضي)، vivid، أو legacy (تخطيط الإصدارات السابقة). ويضبطه متغير البيئة OPENGREP_SKIN أيضًا؛ و--skin له الأولوية عليه.

opengrep scan --skin vivid -f rules code
OPENGREP_SKIN=legacy opengrep scan -f rules code
تنزيل الأداة