كيفية اكتشاف الثغرات الأمنية في مستودعك البرمجي مجانًا
كيفية اكتشاف الثغرات الأمنية في مستودعك البرمجي مجانًا لاكتشاف الثغرات الأمنية في مستودعك البرمجي مجانًا، ادمج ثلاث طبقات: أداة فحص التبعيات (npm audit أو pip-audit أو OSV-Scanner)، وأداة فحص الأسرار والبيانات الحساسة
كيفية اكتشاف الثغرات الأمنية في مستودعك البرمجي مجانًا
لاكتشاف الثغرات الأمنية في مستودعك البرمجي مجانًا، ادمج ثلاث طبقات: أداة فحص التبعيات (npm audit أو pip-audit أو OSV-Scanner)، وأداة فحص الأسرار والبيانات الحساسة (Gitleaks)، وأداة فحص الشيفرة البرمجية (Semgrep Community Edition). شغّل هذه الأدوات مع كل طلب سحب (pull request). لكن اعلم أن أيًا منها لن يكتشف غياب التحقق من صلاحيات الوصول (authorization)، لذا أضف اختبارًا أثناء التشغيل (runtime test) لتغطية ذلك.
npm audit --audit-level=high
pip-audit -r requirements.txt
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off --error
ما الجديد الذي تقدمه ميزة Vercel Security Review
تُعد Vercel Security Review إحدى إمكانيات Vercel Agent، وهي متوفرة في مرحلة تجريبية عامة منذ 2 نوفمبر 2026. تعمل هذه الميزة على فحص كل عملية دفع (push) إلى مستودع GitHub متصل، وتقرأ الفروقات البرمجية (diff) والشيفرة المحيطة بها، وتتتبع كيفية الوصول إلى هذا التغيير، وتعيد التحقق من كل نتيجة قبل الإبلاغ عنها.
المثال الذي طرحته Vercel هو السبب الأساسي وراء كتابة هذا المقال. يتعلق التغيير بنقطة نهاية (endpoint) للفواتير تبحث عن الفاتورة عبر المعرّف (ID) دون التحقق من المؤسسة التابعة لها، مما مكّن أي مستخدم مسجل الدخول من تنزيل فواتير مؤسسة أخرى. هذا خلل في المنطق البرمجي (logic flaw)، وأدوات الفحص المعتمدة على الأنماط تعجز عادةً عن اكتشاف مثل هذه العيوب.
إليك من يمكنه استخدام هذه الميزة:
| السؤال | الإجابة |
|---|---|
| الخطط | فرق Pro وEnterprise فقط |
| التكلفة | مجانية حتى 10 نوفمبر 2026، ثم تُحتسب وفق أسعار الرموز (token rates) للمزود مضافًا إليها 0.25 دولار لكل مليون رمز |
| المستودعات | مستودعات GitHub المتصلة؛ والمستودعات التي لا تُنشر على Vercel ليست مدعومة بعد |
| النطاق | الفروقات البرمجية (diff) مقارنة بالفرع الأساسي، أو الشيفرة المصدرية كاملة في المراجعة الأولى |
| النتائج | لوحة تحكم الثغرات، وفحص GitHub check، وتعليقات على طلبات السحب (PR) في المستودعات الخاصة والداخلية |
توضح وثائق Vercel أيضًا قيود هذه الميزة: فهي تحلل الشيفرة البرمجية وليس التطبيق أثناء تشغيله، ولا تُعد اختبار اختراق (penetration test). إذا كنت لا تستوفي شروط الاستخدام، أو تقرأ هذا المقال بعد انتهاء الفترة المجانية، فإن بقية هذا الدليل لن تكلفك شيئًا.
ما الذي ينبغي أن يغطيه فحص ثغرات المستودع
يتحقق الفحص الشامل لثغرات المستودع من أربعة أمور: الثغرات المعروفة في التبعيات، وبيانات الاعتماد المحفوظة في سجل Git، وأنماط الشيفرة غير الآمنة مثل ثغرات الحقن (injection)، ومنطق التحقق من الصلاحيات (authorization). تتوفر أدوات فحص مجانية وناضجة للأمور الثلاثة الأولى. أما الرابع فيعتمد على دلالة الشيفرة البرمجية وغايتها، لذا يتطلب إجراء اختبار على واجهة برمجة تطبيقات (API) قيد التشغيل.
يبقى المفتاح المحذوف مسجلاً في سجل Git، لذا احرص على فحص السجل وتغيير (rotate) أي مفاتيح حقيقية. للتحقق من المفاتيح في حركة مرور واجهات البرمجة ومجموعات الاختبار، راجع دليل فحص تسريب مفاتيح API الخاص بنا.
مقارنة بين أدوات فحص الثغرات المجانية
تم التحقق من الأسعار والتراخيص في 5 نوفمبر 2026. لا تتطلب أي من أدوات سطر الأوامر إنشاء حساب أو إدخال بطاقة مصرفية لتشغيل الأوامر الواردة في هذا الدليل.
| الأداة | ما تكتشفه | التكلفة والترخيص | نقاط يجب الانتباه لها |
|---|---|---|---|
npm audit |
ثغرات تبعيات npm | مجانية، تأتي مدمجة مع npm | تتطلب وجود ملف lockfile |
| pip-audit | ثغرات تبعيات Python | مجانية، ترخيص Apache-2.0 | مخصصة لـ Python فقط |
| OSV-Scanner | ثغرات التبعيات عبر بيئات برمجية متعددة | مجانية، ترخيص Apache-2.0 | تكتشف عددًا أكبر من النتائج، لذا توقع الحاجة لفرزها |
| Trivy | التبعيات، الأسرار، الأخطاء الإعدادية | مجانية، ترخيص Apache-2.0 | ثبّت الإصدارات (انظر أدناه) |
| Gitleaks | الأسرار في سجل Git | مجانية، ترخيص MIT | يتطلب استخدامها عبر GitHub Action مفتاح ترخيص مجاني للمؤسسات |
| Semgrep Community Edition | أنماط الشيفرة، وبعض الأسرار | مجانية، محرك بترخيص LGPL-2.1 | لا يمكنها تتبع تدفق البيانات خارج نطاق دالة واحدة أو ملف واحد |
| Dependabot alerts | ثغرات التبعيات | مجانية للمستودعات العامة والخاصة | حصرية لـ GitHub فقط |
| GitHub secret scanning | الأسرار | مجانية للمستودعات العامة؛ و19 دولارًا شهريًا لكل مساهم نشط للمستودعات الخاصة | تتطلب المستودعات الخاصة تفعيل حماية الأسرار (Secret Protection) |
| CodeQL | أنماط الشيفرة | مجانية للمستودعات العامة؛ و30 دولارًا شهريًا لكل مساهم نشط للمستودعات الخاصة | تتطلب المستودعات الخاصة تفعيل أمان الشيفرة (Code Security) |
ملاحظتان بشأن التراخيص: تستخدم قواعد مجتمع Semgrep ترخيص Semgrep Rules License، الذي يسمح بالاستخدام التجاري الداخلي لكنه يمنع إعادة توزيعها أو تقديمها كخدمة. وإذا قررت اعتماد Trivy، فاطّلع على الثغرة CVE-2026-33634، حيث اخترق المهاجمون أجزاءً من منظومة Trivy لفترة وجيزة في مارس 2026. احرص دائمًا على تشغيل إصدار حديث وتثبيت أي إجراء (Action) باستخدام معرف الالتزام (commit SHA).
فحص مستودع ببضعة أوامر: ما توصلنا إليه
أنشأنا واجهة برمجة تطبيقات (API) بسيطة للفواتير باستخدام Express وأضفناها إلى مستودع محلي. واحتوت على أربع تبعيات npm وثلاث تبعيات Python بإصدارات قديمة، ومفتاحين وهميين (أحدهما بنمط Stripe والآخر بنمط AWS)، وثغرة حقن SQL، وثغرة حقن أوامر (command injection)، ومسار يعيد فاتورة أي مؤسسة لأي مستخدم مسجل الدخول.
ثم قمنا بتشغيل كل أداة على نظام macOS في 5 نوفمبر 2026:
npm audit
pip-audit -r requirements.txt --no-deps --disable-pip
osv-scanner scan source -r .
trivy fs --scanners vuln,secret .
gitleaks git . --no-banner
semgrep scan --config p/default --metrics=off
semgrep scan --config p/nodejsscan --metrics=off
| الأداة (الإصدار) | ما تم اكتشافه | ما لم يتم اكتشافه |
|---|---|---|
npm audit (npm 11.12.1) |
9 حزم تحتوي على ثغرات: 6 عالية الخطورة، و3 منخفضة الخطورة | كل ما لا يمثل حزمة npm |
| pip-audit 2.10.1 | 16 تحذيرًا أمنيًا عبر الحزم الثلاث المثبتة | الحزم غير المباشرة (transitive)، لأننا مررنا الخيار --no-deps
|
| OSV-Scanner 2.7.0 | 66 تحذيرًا فريدًا عبر 15 حزمة، بما في ذلك حزم Python غير المباشرة | الأسرار وأخطاء الشيفرة البرمجية |
| Trivy 0.76.1 | 33 نتيجة متعلقة بالتبعيات والمفتاح الشبيه بنمط Stripe | المفتاح الشبيه بنمط AWS |
| Gitleaks 8.30.1 | المفتاح الشبيه بنمط Stripe | المفتاح الشبيه بنمط AWS |
Semgrep 1.183.0, p/default
|
المفتاح الشبيه بنمط Stripe، وحقن الأوامر، وملاحظة حول غياب طبقة برمجية وسيطة لـ CSRF | حقن SQL، والمفتاح الشبيه بنمط AWS |
Semgrep 1.183.0, p/nodejsscan
|
حقن SQL، وحقن الأوامر، والمفتاح الشبيه بنمط AWS | المفتاح الشبيه بنمط Stripe |
تبرز ثلاثة استنتاجات رئيسية:
- أعداد النتائج لا يمكن مقارنتها مباشرة. فالحزمة والتحذير الأمني والنتيجة المكتشفة وحدات مختلفة، وكل أداة تقرأ بيانات مغايرة. قارن نوعية ما تم اكتشافه لا الأرقام الإجمالية.
- أداة واحدة لفحص الأسرار لا تكفي. فقد أغفلت كل من Gitleaks وTrivy المفتاح الشبيه بنمط AWS.
-
حزم القواعد تصنع الفارق. أغفلت الحزمة الافتراضية في Semgrep استعلام SQL مبنيًا عبر دمج نصوص عادي. ولم تُظهر حزم
p/javascriptوp/nodejsوp/owasp-top-tenوp/sql-injectionأي نتائج في هذا المستودع، في حين تمكنت حزمةp/nodejsscanمن اكتشافه.
لم تتمكن أي أداة من رصد الخلل في مسار الفواتير. هذا مجرد مستودع تجريبي صغير، لذا تعامل معه كعرض توضيحي وليس كاختبار قياسي شامل. علمًا بأننا لم نقم بتشغيل CodeQL.
فحص مستودع GitHub مع كل طلب سحب
تتوفر بيئات التشغيل القياسية المستضافة على GitHub مجانًا للمستودعات العامة. أما في المستودعات الخاصة، فتتضمن باقة GitHub Free رصيدًا شهريًا قدره 12 دولارًا، وهو ما يعادل حوالي 2,000 دقيقة على بيئة تشغيل Linux بنواتين وفق السعر المعلن. يعتمد سير العمل (workflow) هذا على أوامر مباشرة، مما يتيح للمؤسسات تجاوز الحاجة لمفتاح ترخيص Gitleaks Action:
name: repo-scan
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7 # pin to a commit SHA
with:
fetch-depth: 0
- name: Dependencies (npm)
run: npm audit --audit-level=high
- name: Dependencies (Python)
run: pipx run pip-audit -r requirements.txt
- name: Secrets
run: |
curl -sSL https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz | tar xz gitleaks
./gitleaks git . --no-banner
- name: Code patterns
run: pipx run semgrep scan --config p/default --config p/nodejsscan --metrics=off --error
انتهى تشغيل أدوات الفحص الأربع برمز الخروج 1 على مستودع الاختبار لدينا، وخروج الأداة برمز غير صفري هو ما يؤدي إلى فشل المهمة (job). يمكنك حذف الخطوات التي لا تحتاجها بنيتك البرمجية. ولإجراء اختبارات API ضمن خط الأنابيب نفسه، راجع استخدام Apidog CLI مع GitHub Actions.
احرص أيضًا على تفعيل تنبيهات Dependabot؛ فهي مجانية في جميع الخطط وتعمل دون انتظار تقديم طلب سحب.
الفجوة الأمنية: أخطاء الصلاحيات التي تعجز أدوات الفحص عن كشفها
يصعب على أدوات الفحص المعتمدة على الأنماط اكتشاف ثغرات الصلاحيات لأن الشيفرة البرمجية تبدو سليمة ظاهريًا: استعلام صحيح، ومعامل صالح، وطبقة برمجية وسيطة auth في المقدمة. يكمن الخلل في شرط ناقص، ولا يحدد ضرورة وجود هذا الشرط سوى نموذج البيانات (data model) الخاص بتطبيقك.
// Every scanner passed this
db.query("SELECT * FROM invoices WHERE id = $1", [req.params.id]);
// The fix: scope the lookup to the caller's organization
db.query("SELECT * FROM invoices WHERE id = $1 AND org_id = $2",
[req.params.id, req.user.orgId]);
تُعرف هذه الثغرة بـ خلل التحقق من الصلاحيات على مستوى الكائن (Broken Object Level Authorization)، والتي تتصدر قائمة OWASP لأخطر 10 ثغرات أمنية في واجهات برمجة التطبيقات لعام 2023. توصي OWASP بالتحقق من صلاحيات الوصول مع كل طلب يستخدم معرّفًا يقدمه العميل، وبكتابة اختبارات تكشف إخفاقات الصلاحيات قبل النشر.
قد تكون الاستعانة بوكيل برمجي ذكي (coding agent) مفيدة هنا. قمنا بإزالة التعليقات من مستودع الاختبار وطلبنا من Claude Code مراجعته، مرة مع تلميح بخصوص المؤسسات ومرة بدونه. وفي الحالتين نجح في التنبيه إلى الخلل في مسار الفواتير. مع ذلك، فهذا الخيار ليس مجانيًا تمامًا، إذ يستهلك من باقة اشتراك الوكيل، فضلاً عن أن النتائج قد تختلف من تشغيل لآخر.
يمنحك الاختبار البرمجي إجابة حاسمة (نجاح أو فشل) مع كل طلب سحب. ولتغطية جانب واجهات برمجة التطبيقات، راجع مقالنا حول الاكتشاف التلقائي لثغرات API، ودليل أفضل أدوات فحص أمان API، وقائمة التحقق لاختبار أمان API.
دع وكيلك البرمجي يختبر الصلاحيات باستخدام Apidog CLI
لا تكتب هذا الاختبار يدويًا لكل مسار. دع وكيلك البرمجي يتولى ذلك باستخدام Apidog CLI؛ حيث يقرأ مساراتك، وينشئ اختبارًا لكل مورد محمي، ويزودك بمجموعة اختبارات متكاملة تعمل ضمن التكامل المستمر (CI). وتغطي باقة Apidog Free ما يصل إلى 4 مستخدمين.
npm install -g apidog-cli@latest
apidog auth login --with-token <YOUR_TOKEN>
apidog skill install
ستحتاج إلى بيئة اختبار مهيأة مسبقًا بمؤسستين تجريبيتين ومستخدم واحد في كل منهما. بعد ذلك، وجه لوكيلك موجهًا واحدًا (prompt):
Read the routes in src/. For each route that returns data owned by an
organization, create an Apidog test scenario in project <id>: log in as
the Org A test user, request an Org B resource by ID, and assert the
status is 403 or 404. Add an Org A request for its own resource and
assert 200, so a broken login can't pass. Group the scenarios in a test
suite, run it against the staging environment, and summarize failures.
يتحقق الوكيل من بنية البيانات (payload shape)، وينشئ السيناريوهات، ثم يُشغّل مجموعة الاختبارات:
apidog cli-schema get test-scenario-create
apidog cli-schema validate test-scenario-create --file scenario.json
apidog test-scenario create --project <id> --file scenario.json
apidog test-scenario import-steps <scenarioId> --project <id> --source endpoint --ids <endpointIds>
apidog test-suite create --project <id> --file suite.json
apidog run --test-suite <suiteId> --project <id> -e <envId> -r cli,junit
التحقق الإيجابي خطوة بالغة الأهمية؛ فبدونه، قد يعيد عنوان URL الأساسي غير الصحيح الرمز 404 أيضًا، فينجح الاختبار للسبب الخاطئ.
أضف سطر apidog run نفسه إلى سير العمل الموضح أعلاه، وشغّله على بيئة معاينة (preview) أو بيئة تجريبية (staging) تحتوي على مؤسسات تجريبية مهيأة، وتجنب تمامًا استخدام بيانات الإنتاج. يغطي دليل مرجع الأمر apidog run الخيارات والوسائط الأخرى، ويوضح مقال استخدام Apidog CLI في Claude Code خطوات إعداد الوكيل بالتفصيل.
الأسئلة الشائعة
ما هي أفضل طريقة مجانية لاكتشاف الثغرات في مستودع برمجي؟ ادمج بين أداة لفحص التبعيات، وGitleaks، وSemgrep Community Edition، ثم أضف اختبارًا أثناء التشغيل للتحقق من الصلاحيات؛ إذ لم تتمكن أي أداة منفردة من تغطية جميع الثغرات في مستودع الاختبار لدينا.
هل ميزة Vercel Security Review مجانية؟ هي مجانية حتى 10 نوفمبر 2026 فقط، ولفرق Pro وEnterprise حصرًا. بعد ذلك، ستدفع وفق أسعار الرموز للمزود مضافًا إليها 0.25 دولار لكل مليون رمز. كما أن المستودعات التي لا تُنشر على Vercel ليست مدعومة حتى الآن.
هل ميزة فحص الأسرار في GitHub مجانية للمستودعات الخاصة؟ لا؛ ففحص الأسرار وCodeQL مجانيان للمستودعات العامة، لكن المستودعات الخاصة تتطلب الاشتراك في GitHub Secret Protection (19 دولارًا) أو GitHub Code Security (30 دولارًا) شهريًا لكل مساهم نشط. في المقابل، تتوفر تنبيهات Dependabot مجانًا في كلا النوعين.
هل يستطيع Semgrep اكتشاف أخطاء الصلاحيات؟ لم يكتشف الخلل في مسار الفواتير لدينا باستخدام حزم القواعد التي شغّلناها. لا تستطيع النسخة المجانية (Community Edition) تتبع البيانات خارج نطاق دالة واحدة أو ملف واحد، مع أنه يمكنك كتابة قواعد مخصصة للأنماط الخاصة بقاعدتك البرمجية.
هل تغني أدوات الفحص عن اختبار الاختراق؟ لا؛ فالأدوات والاختبارات تغطي الأنماط المعروفة والحالات التي حددتها مسبقًا، بينما يبحث اختبار الاختراق عما لم يخطر ببالك، وتؤكد وثائق Vercel نفسها أن مراجعتها الأمنية لا تُعد بديلاً عن ذلك أيضًا.
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.
