
وكيل الأمان المستقل للبرمجيات المكتوبة بالذكاء الاصطناعي. يكتشف المشكلات، ويحقّق فيما إذا كانت حقيقية، ويعرض لك الأدلة. نواة حتمية، لا حاجة إلى مفتاح API، ومخرجات JSON وSARIF.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/b1f8834990a38d393bed6703c926c2f633c9d6afc19261eb02c67e9d45b7f350.png" alt="شعار Ship Safe" width="180" />
</p>
<p align="center"><strong>وكيل الأمان المستقل للبرمجيات المكتوبة بالذكاء الاصطناعي. يكتشف المشكلات، ويتحقق مما إذا كانت حقيقية، ويعرض لك الأدلة.</strong></p>
<p align="center"><a href="https://shipsafe.sh">الموقع الإلكتروني</a> · <a href="https://shipsafe.sh/docs">التوثيق</a> · <a href="https://shipsafe.sh/security">الأمان وتدفق البيانات</a> · <a href="https://shipsafe.sh/benchmarks">المقاييس المرجعية</a> · <a href="https://shipsafe.sh/pricing">الأسعار</a> · <a href="https://shipsafe.sh/blog">المدونة</a> · <a href="https://github.com/asamassekou10/ship-safe/contribute">المساهمة</a></p>
<p align="center">
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://badge.fury.io/js/ship-safe.svg" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/ship-safe"><img src="https://img.shields.io/npm/dm/ship-safe.svg" alt="npm downloads" /></a>
<a href="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml"><img src="https://github.com/asamassekou10/ship-safe/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
<a href="https://github.com/asamassekou10/ship-safe/stargazers"><img src="https://img.shields.io/github/stars/asamassekou10/ship-safe?style=social" alt="GitHub stars" /></a>
<a href="https://github.com/sponsors/asamassekou10"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github" alt="Sponsor" /></a>
</p>
## Ship Safe CLI
يعمل Ship Safe محليًا داخل مستودعك ويعمل على طبقتين.
**محرك حتمي** يكتشف المشكلات عبر كود التطبيق، ووكلاء الذكاء الاصطناعي، وإعدادات MCP، والمطالبات (prompts)، والتبعيات، وCI/CD، والأسرار، والإعدادات المرتبطة بالسحابة. سريع وقابل للتكرار ومقاس مرجعيًا — هذه هي طبقة الاستشعار.
ثم تأتي **طبقة التحقيق** لتقرر قيمة النتائج. فهي تتعقّب القيمة التي تصل إلى نقطة تصريف (sink)، وتبحث في المشروع عن الضوابط التي تقول قاعدة إنها مفقودة، وتبني سلاسل هجوم عبر إعدادات لا يحتويها أي ملف منفرد، وعندما تطلب منها ذلك — تختبر مفتاحًا مسرّبًا مقابل مزوّده. كل استنتاج يحمل معه المرحلة التي وصلت إليه والأسطر التي قرأها:
```
CONFIRMED — traced end to end (10)
NoSQL Injection via $where [high]
app/data/allocations-dao.js:78 NOSQL_INJECTION_WHERE
why: threshold is assigned from the HTTP request and reaches the sink without validation on that path.
decided by: dataflow
1. value reaches NOSQL_INJECTION_WHERE here app/data/allocations-dao.js:78
2. getByUserIdAndThreshold is called here with threshold app/routes/allocations.js:23
3. threshold is assigned here app/routes/allocations.js:20
fix: Replace $where with standard MongoDB operators ($eq, $gt, $regex, etc.)
```
<sub>مخرجات حقيقية من <code>ship-safe investigate</code> مقابل OWASP NodeGoat. تُفكَّك القيمة الملوّثة في ملف مسار وتُمرَّر إلى DAO على بُعد ثلاثة أدلة.</sub>
ابدأ بأمر واحد:
```bash
npx ship-safe
```
لا حاجة للتسجيل. لا يُشترط مفتاح API لإجراء الفحص. تعمل الفحوصات الأساسية دون اتصال بالإنترنت. تستخدم أوضاع الفريق الأحمر المدعومة بالذكاء الاصطناعي المزوّد الذي قمت بإعداده عند توفره.
استخدم `--no-ai` لضمان فحص محلي بالكامل. يُرسل التصنيف المدعوم من المزوّد والتحليل العميق وGPT-Red سياقًا محدودًا مباشرةً إلى المزوّد الذي اخترته بعد إخفاء بيانات الاعتماد بأفضل جهد ممكن. راجع [الأمان وتدفق البيانات](https://shipsafe.sh/security) للاطلاع على الحدود الدقيقة وحدود السياق.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/75988a5baca705edcd06c5d39049d35be36f660fad2362de6700cf40eb72d2dd.gif" alt="عرض توضيحي لـ Ship Safe REPL" width="800" />
</p>
---
## البدء السريع
يتطلب Node.js 22.13+ ضمن سلسلة 22.x، أو Node.js 24+. لم يعد الإصدار
الحالي التطويري يدعم Node 18 و20.
```bash
# Interactive REPL: scan, fix, and ask questions in one session
npx ship-safe
# Full audit: secrets + 31 agents + deps + remediation plan
npx ship-safe audit .
# Investigate: confirmed / likely / unresolved / refuted, with the evidence
npx ship-safe investigate .
npx ship-safe investigate . --all # also detail unresolved and refuted
npx ship-safe investigate . --verify # probe leaked keys against their providers
# Before you open an unfamiliar folder with an agent: what runs on open?
npx ship-safe trust ~/Downloads/take-home
npx ship-safe trust . --json
# What can an AI agent working in this repo actually reach?
npx ship-safe capabilities .
# AI agent red-team scenarios for agent-readable content
npx ship-safe red-team . --gpt-red
# Interactive fix agent: plan, diff, approve, inspect the static rescan
npx ship-safe agent .
npx ship-safe agent . --severity critical # critical findings only
npx ship-safe agent . --branch --pr # fix on a branch + open a PR
# Undo the last fix
npx ship-safe undo
# CI/CD mode — fails on any critical finding
npx ship-safe ci . --sarif results.sarif
npx ship-safe ci . --fail-on high # stricter: critical or high
# Gate on evidence instead of severity: block only what was established
npx ship-safe ci . --fail-on-verdict confirmed
npx ship-safe ci . --ignore-refuted # do not block on what was argued away
```
لمعالجة طلبات السحب (pull requests)، قارن فحصًا أساسيًا موثوقًا بفحص الرأس (head scan) بحيث يبقى الدين الموجود في المستودع ظاهرًا دون حجب التغييرات غير ذات الصلة:
```bash
# On the trusted base revision
npx ship-safe ci . --fail-on none --no-deps \
--write-baseline-report /tmp/ship-safe-base.json
# On the pull request head
npx ship-safe ci . --base-report /tmp/ship-safe-base.json --fail-on high
```
يحتوي ملف النتائج الأساسي على هويات النتائج المُجزّأة، والمسارات النسبية، وبيانات وصفية للقواعد. ولا يخزّن الأسرار المطابقة الخام. تُصنّف نتائج طلبات السحب النتائج على أنها مُدخلة، أو محلولة، أو غير متغيرة، أو غير مؤكدة؛ وتُعرض المطابقات الغامضة ولكنها لا تحجب طلب السحب.
### عقد التقرير القابل للقراءة آليًا
تتضمن `scan --json` و`audit --json` و`ci --json` الحقل `schemaVersion: 1`، وإصدار Ship Safe، وطابعًا زمنيًا `generatedAt` بتوقيت UTC. تكون مسارات النتائج نسبية إلى المشروع افتراضيًا حتى يمكن نقل التقارير بين محطات العمل وCI دون تسريب أسماء الأدلة المحلية. استخدم `--absolute-paths` فقط عندما يحتاج المستهلك صراحةً إلى مسارات المضيف. وتحمل تقارير SARIF نفس إصدار الحزمة في بياناتها الوصفية للأداة.
## ما الذي يكتشفه Ship Safe
| المجال | أمثلة |
|------|----------|
| أمن الذكاء الاصطناعي والنماذج اللغوية الكبيرة | حقن الأوامر (Prompt injection)، اختطاف الوكلاء، الصلاحيات المفرطة، تسميم الذاكرة، تسميم RAG، استدعاءات الأدوات غير الآمنة |
| إعدادات MCP والوكلاء | أذونات أدوات واسعة النطاق، سجلات مسمومة، وسائل نقل غير موثوقة، قوائم سماح خطرة |
| أمن التطبيقات | حقن SQL/NoSQL، XSS، SSRF، تجاوز المصادقة، اجتياز المسارات، مسارات API غير آمنة |
| الأسرار والامتثال | مفاتيح API، والرموز، وبيانات الاعتماد، والمعلومات الشخصية (PII)، والأسرار المسربة في سجل git |
| سلسلة التوريد | انتحال الأسماء (Typosquatting)، ارتباك التبعيات، سكربتات التثبيت المحفوفة بالمخاطر، إجراءات AI غير مثبتة الإصدار |
| CI/CD | تسميم خطوط الأنابيب، إجراءات GitHub Actions غير مثبتة الإصدار، تسجيل الأسرار، محفزات سير العمل غير الآمنة |
## كيف يعمل
1. **الفحص محليًا** - يفحص Ship Safe مستودعك بوكلاء مخصصين ويتخطى الفحوصات غير المنطبقة.
2. **التحقيق في كل نتيجة** - تحدد تمريرات منفصلة ما إذا كانت حقيقية، مرتبةً بحيث لا يقلب تمرير أرخص تمريرًا أغلى: فمسار بيانات متتبع يتفوق على قراءة نموذج لنفس الملف، وفحص مصادق عليه يتفوق على كليهما.
3. **قراءة الأدلة** - تُحسم النتائج إلى مؤكدة، أو محتملة، أو غير محلولة، أو مدحوضة، وكل منها يستشهد بالأسطر التي استُنتجت منها، حتى تتمكن من الاعتراض على خطوة بدلًا من وسم خطورة.
4. **الإصلاح بتحكم** - يقترح الوكيل خطةً وفرقًا (diff)، ويسأل قبل الكتابة، ويبلّغ عن أدلة إعادة فحص ثابتة، ويحافظ على قابلية عكس التغييرات. اختفاء الكاشف ليس إعادة اختبار مستقلة؛ راجع [نتائج الإصلاح](https://github.com/asamassekou10/ship-safe/blob/main/docs/fix-verification.md).
5. **البوابة في CI** - استخدم `ship-safe ci` لإفشال عمليات البناء المحفوفة بالمخاطر ورفع SARIF إلى فحص كود GitHub.
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/49363/31125a0161ee16c772304e3097cdea464c8988cdc8e818ebf8356506fa1f1314.gif" alt="عرض توضيحي لوكيل Ship Safe" width="800" />
</p>
---
## "لماذا لا أطلب من وكيل البرمجة الخاص بي مراجعة المستودع فحسب؟"
يمكنك ذلك، وينبغي لك. سيجد أشياء حقيقية. لكن هناك ثلاثة أسئلة لا يستطيع الإجابة عنها بنيويًا بشأن عمله الخاص.
**هل وكيل البرمجة الذي كتب هذا الكود هو من يصحح واجبه بنفسه؟** سؤال المؤلف عمّا إذا كان المؤلف قد أخطأ ليس مراجعة. Ship Safe مراجع منفصل بمنهجية منفصلة، وهو يخالف نفسه علنًا — فتتبع تدفق البيانات يقلب تمرير الاستدلال الإرشادي، والفحص الحي يقلب كليهما.
**هل يمكنه رؤية ما يستطيع الوصول إليه؟** وكيل البرمجة الذي يراجع مستودعك لا يستطيع قراءة إعدادات خادم MCP الخاص بك، ولا تعداد الأذونات التي أُطلق بها، وهو الفاعل الذي يُسأل عن مدى وصوله. يقرأ `ship-safe capabilities` كل ذلك من الخارج ويبلّغ عن التركيبات الخطرة معًا بينما تكون غير ملحوظة منفردة:
```
CRITICAL Repository-controlled instructions reach an unattended write capability
1. CLAUDE.md is read as instructions and can be changed by anyone who lands a commit
CLAUDE.md:1
2. Claude Code runs without per-action approval
.claude/settings.json:2
3. shell execute granted: Bash(git push:*)
.claude/settings.json:3
4. filesystem write granted: Write
.claude/settings.json:3
5. mcp-tool write granted: mcp__github__create_pull_request
.claude/settings.json:3
Impact: Text committed to this repository can direct the agent to write files
or run commands with no human in the loop.
Boundary: Require approval for write and execute tools during sessions on
untrusted branches, or remove the pre-granted entries.
```
كل سطر من هذه الأسطر لا يثير الاهتمام بمفرده. لكنها مجتمعةً تشكّل مسارًا من طلب سحب (pull request) إلى كتابة بصلاحيات مرتفعة، ولا يمكن لأي مراجعة لملف واحد أن ترى ذلك، لأن أي ملف واحد لا يحتوي عليه.
**هل هو متسق، وهل يمكنك إثبات أنه تحسّن؟** اسأل مرتين، تحصل على إجابتين. محرّك Ship Safe حتمي، ونتائجه مقيّدة في CI عبر معيار قياس يقيّم *جودة الاستنتاج*، لا تغطية الأنماط: كم عدد النتائج الحقيقية المعروفة التي يحسمها، وكم من الضجيج المعروف يدحضه، وما إذا كان يدحض شيئًا حقيقيًا في أي وقت. ميزانية ذلك الرقم الأخير صفر — فهو فئة الخطأ الوحيدة التي تفقد ثغرة بصمت. راجع [benchmarks/](https://github.com/asamassekou10/ship-safe/blob/main/benchmarks).
## لماذا يستخدمه المطوّرون
- **مصمّم لتطبيقات الذكاء الاصطناعي الأصلية**: يلتقط المخاطر في الوكلاء (agents)، وخوادم MCP، والمطالبات (prompts)، وتدفقات RAG، وإعدادات الوكلاء المُدارين، وCI المدعوم بالذكاء الاصطناعي.
- **يعمل مع عملاء الذكاء الاصطناعي**: يتيح Ship Safe لـ Codex وClaude Desktop وCursor وWindsurf وغيرها من عملاء MCP عبر خادم stdio المحلي.
- **تغذية راجعة محلية سريعة**: شغّله قبل طلب السحب، أو أثناء المراجعة، أو داخل CI دون إرسال الكود إلى ماسح مستضاف.
- **الإصلاحات قابلة للمراجعة**: يُعرض كل تغيير مقترح كفرق (diff) قبل أن يمسّ ملفاتك.
- **يعمل مع حزمة تقنياتك**: JavaScript وTypeScript وPython وملفات الإعداد وملفات البنية التحتية وGitHub Actions وغيرها.
- **نواة مفتوحة المصدر**: واجهة سطر أوامر (CLI) بترخيص MIT مع وثائق وأمثلة ونظام وكلاء متنامٍ.
## واجهة CLI مجانية، وسير عمل جماعي مدفوع
واجهة CLI مفتوحة المصدر هي أسرع طريقة لفحص أي مستودع محليًا. قم بالترقية عندما تحتاج إلى سير عمل مستضاف حول الماسح نفسه:
| الحاجة | الاستخدام |
|------|-----|
| الفحوصات المحلية والتدقيقات والإصلاحات بمساعدة الوكلاء | CLI المجاني |
| سجل الفحوصات ولوحة التحكم السحابية وتقارير PDF | Pro |
| مساحة عمل مشتركة وPR Guardian وتقارير الفريق والتعاون | Team |
قارن الخطط على [shipsafe.sh/pricing](https://shipsafe.sh/pricing).
يُطوَّر Ship Safe Cloud، لوحة التحكم المستضافة لسجل الفحوصات وPR Guardian والفوترة وسير عمل الفريق، في مستودع خاص لأنه يحتوي على كود منتج تجاري وسير عمل بنية تحتية مستضافة. يبقى مستودع `ship-safe` العام مركّزًا على واجهة CLI بترخيص MIT ووكلاء الأمان والقواعد والبيانات التجريبية (fixtures) وتكاملات CI والوثائق. راجع [Ship Safe Cloud](https://github.com/asamassekou10/ship-safe/blob/main/docs/cloud.md) لحدود المستودع.
---
## وكلاء الأمان
تعمل جميع الوكلاء بالتوازي. يتخطى كل منها المشاريع غير ذات الصلة تلقائيًا.
| الوكيل | الفئة | ما يكتشفه |
|-------|----------|-----------------|
| **InjectionTester** | ثغرات الكود | حقن SQL/NoSQL، حقن الأوامر، XSS، اجتياز المسار، XXE، ReDoS، تلوث النموذج الأولي |
| **AuthBypassAgent** | المصادقة | عيوب JWT (alg:none، أسرار ضعيفة)، CSRF، سوء إعداد OAuth، BOLA/IDOR، تجاوز TLS |
| **SSRFProber** | SSRF | إدخال المستخدم في fetch/axios، نقاط نهاية البيانات الوصفية السحابية، عناوين IP الداخلية |
| **SupplyChainAudit** | سلسلة التوريد | انتحال الأسماء (Typosquatting)، إصدارات بأحرف بدل، سكربتات تثبيت مشبوهة، ارتباك التبعيات |
| **ConfigAuditor** | الإعدادات | Docker (مستخدم root، :latest)، Terraform، Kubernetes، CORS، CSP، Firebase، Nginx |
| **SupabaseRLSAgent** | المصادقة | مفتاح service_role في كود العميل، جداول بدون RLS، إدراجات بمفتاح anon |
| **LLMRedTeam** | الذكاء الاصطناعي/LLM | OWASP LLM Top 10: حقن الأوامر النصية، الوكالة المفرطة، تسريب موجه النظام |
| **MCPSecurityAgent** | الذكاء الاصطناعي/LLM | سوء استخدام خادم MCP، تسميم الأدوات، انتحال الأسماء، مدخلات غير مُتحقَّق منها |
| **A2ASecurityAgent** | الذكاء الاصطناعي/LLM | تسميم بطاقة وكيل A2A، غياب المصادقة، نقاط نهاية نصية صريحة، ردود اتصال دفع غير آمنة، وبطاقات بعيدة غير مثبّتة ([التغطية](https://github.com/asamassekou10/ship-safe/blob/main/docs/a2a-security.md)) |
| **AgenticSecurityAgent** | الذكاء الاصطناعي/LLM | OWASP Agentic AI Top 10: اختطاف الوكلاء، تصعيد الامتيازات، سوء استخدام استدعاء الأدوات المتوافق مع Kimi K3/OpenAI |
| **RAGSecurityAgent** | الذكاء الاصطناعي/LLM | حقن السياق، تسميم المستندات، التحكم في الوصول إلى قاعدة بيانات المتجهات |
| **MemoryPoisoningAgent** | الذكاء الاصطناعي/LLM | حقن التعليمات في ملفات ذاكرة الوكيل، حمولات Unicode مخفية (ASI-01، ASI-05) |
| **PIIComplianceAgent** | الامتثال | أرقام الضمان الاجتماعي، بطاقات الائتمان، رسائل البريد الإلكتروني، أرقام الهواتف في الكود المصدري |
| **VibeCodingAgent** | ثغرات الكود | أنماط مضادة في الكود المولّد بالذكاء الاصطناعي: غياب التحقق، كتل catch فارغة، مصادقة TODO |
| **ExceptionHandlerAgent** | ثغرات الكود | كتل catch فارغة، رفض غير معالَج، آثار مكدس مسرّبة (OWASP A10:2025) |
| **AgentConfigScanner** | الذكاء الاصطناعي/LLM | حقن الأوامر النصية في .cursorrules، CLAUDE.md، خطافات Claude Code الخبيثة |
| **MobileScanner** | الجوال | OWASP Mobile Top 10 2024: تخزين غير آمن، حقن WebView، وضع التصحيح |
| **GitHistoryScanner** | الأسرار | أسرار مسرّبة في سجل التزامات git |
| **CICDScanner** | CI/CD | تسميم خط الأنابيب، إجراءات غير مثبّتة، تسجيل الأسرار (OWASP CI/CD Top 10) |
| **APIFuzzer** | API | مسارات بدون مصادقة، إسناد جماعي، استبطان GraphQL، نقاط نهاية تصحيح |
| **ManagedAgentScanner** | الذكاء الاصطناعي/LLM | سوء إعدادات Claude Managed Agent: سياسات always_allow، شبكات غير مقيّدة (ASI-03–ASI-07) |
| **HermesSecurityAgent** | الذكاء الاصطناعي/LLM | تسميم سجل الأدوات، حقن استدعاء الدوال، انحراف أذونات المهارات (ASI-01–ASI-10) |
| **AgentAttestationAgent** | سلسلة التوريد | إصدارات وكلاء غير مثبّتة، تجزئات سلامة مفقودة، بيانات وصفية غير موقّعة (ASI-10، SLSA L0) |
| **AgenticSupplyChainAgent** | سلسلة التوريد | إجراءات CI للذكاء الاصطناعي مفرطة الامتيازات، تضخم نطاق OAuth، مستقبلات webhook للذكاء الاصطناعي غير موقّعة (ASI-02، ASI-06) |
| **RobloxSecurityAgent** | سلسلة التوريد | أصول Roblox/Luau Toolbox خبيثة (حقن الأصول وقت التشغيل، محمّلات `rbxassetid://`، `HttpEnabled`، حمولات مخفية في سمات الكائنات) |
| **ModelScanAgent** | سلسلة التوريد | حمولات تنفيذ الكود في أوزان نماذج التعلم الآلي (أكواد pickle التشغيلية في `.pt`/`.pkl`/`.ckpt`)، `torch.load` بدون `weights_only`، أرشيفات تهرّب من الماسحات (CWE-502، CWE-506) |
| **TrustBoundaryAgent** | الوكيلية | هجمات GhostApproval عبر الروابط الرمزية (روابط بأسماء إعدادات إلى `~/.ssh`/`~/.aws`/`.env`)، روابط رمزية للمستودع تفلت من الشجرة، وتعليمات Friendly Fire للتشغيل عند المراجعة في مستندات يقرأها الوكيل (CWE-59، CWE-61) |
| **SlopSquatAgent** | سلسلة التوريد | عمليات استيراد حزم وهمية/مُتخيَّلة (slopsquatting) — عمليات استيراد مجردة غير معلنة أو غير مثبّتة أو غير مدمجة، إضافة إلى أسماء معروفة مُتخيَّلة من الذكاء الاصطناعي (CWE-1357) |
| **ClickFixAgent** | سلسلة التوريد | طُعم ClickFix / CAPTCHA المزيف للصق والتشغيل (خطأ مزيف + ضغطات Win+R/Ctrl+V/شريط الأوامر، حاضنات PowerShell) وسكربتات دورة حياة npm للمثبّتات المزيفة (CWE-1357، CWE-506) |
| **InstallGuardAgent** | سلسلة التوريد | سلوكيات دودة npm في نصوص دورة الحياة (جمع بيانات الاعتماد، تسريب متغيرات البيئة، `rm -rf` المدمّر، `node -e` المُشوَّش) وإجراءات node-gyp المُسلَّحة في `binding.gyp` (CWE-506، CWE-829) |
**جولات التحقيق**، بالترتيب الذي تتفوق فيه أدلتها على بعضها البعض:
| الجولة | الرتبة | ما تثبته |
|------|------|---------------------|
| **VerifierAgent** | استكشافي | فحص النمط حول النتيجة. لا يذكر أبدًا أكثر من "محتمل" |
| **DeepAnalyzer** | تحليل | قراءة تلوث LLM للنتيجة وملفها، مع التحقق من الاستشهاد |
| **DataflowInvestigator** | تدفق البيانات | يتتبع القيمة إلى مصدرها، عبر حدود دالة واحدة وإلى ملفات أخرى. JavaScript وTypeScript وPython |
| **AbsenceInvestigator** | الوجود | يبحث في المشروع، أو في المعالج، عن الضابط الذي تقول قاعدة إنه مفقود |
| **LiteralContextInvestigator** | الوجود | يحكم على النتائج المتعلقة بقيمة مكتوبة بناءً على ما يحيط بها — نص، أو سلسلة مساعدة، أو عنوان محجوز |
| **CapabilityGraph** | السلسلة | يبني سلاسل هجوم من إعدادات لا يحتويها أي ملف واحد |
| **RedosReproducer** | إعادة الإنتاج | يشغّل نمطًا مُعلَّمًا مقابل مدخلات مُولَّدة في عامل مع مهلة زمنية |
| **SecretsVerifier** | إعادة الإنتاج | يقدّم مفتاحًا مسرّبًا إلى مزوّده. اختياري: هذا يكشف المفتاح |
الادعاء الذي لا يُحلّ ملفه أو سطره المُستشهد به يُسجَّل لكنه لا يقرر حكمًا أبدًا. جولتان متساويتان في الرتبة تختلفان تُحلّان إلى غير محسوم بدلًا من الحكم الأكثر إثارة للخوف.
**أيضًا:** ScoringEngine
---
## REPL
```
$ ship-safe
███████╗██╗ ██╗██╗██████╗ ███████╗ █████╗ ███████╗███████╗
...
v9.4.1 · DeepSeek · ~/my-project
/scan to find issues · /agent to fix them · /help for more
shipsafe ›
```
| الأمر | ما الذي يفعله |
|---------|-------------|
| `/scan` | إعادة فحص المشروع |
| `/agent` | تشغيل حلقة الإصلاح التفاعلية |
| `/findings` | عرض النتائج من آخر فحص |
| `/show <n>` | تفاصيل كاملة عن النتيجة n |
| `/plan <n>` | معاينة خطة الإصلاح للنتيجة n (بدون كتابة) |
| `/undo [--all]` | التراجع عن آخر إصلاح (أو جميع الإصلاحات) |
| `/share` | نشر تقرير الفحص كرابط عام (7 أيام) |
| `/diff` | عرض فرق شجرة العمل في git |
| `/provider <name>` | تبديل مزوّد LLM في منتصف الجلسة |
| `/quit` | الخروج (أيضًا `Ctrl-D` أو `Ctrl-C`) |
أي شيء لا يبدأ بـ `/` يُرسل إلى LLM كسؤال حر، مع نتائج آخر فحص لديك كسياق.
---
## CI/CD
```yaml
# .github/workflows/security.yml
name: Security Audit
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security gate
run: npx ship-safe ci . --sarif results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
```
يوجد إصدار GitLab CI في [docs/examples/gitlab-security-workflow.yml](https://github.com/asamassekou10/ship-safe/blob/main/docs/examples/gitlab-security-workflow.yml).
### إجراء GitHub مع نتائج PR المضمّنة
استخدم الإجراء من سير عمل `pull_request` عندما تريد إرفاق النتائج الحرجة والعالية بالأسطر المتغيّرة. أبقِ `pull_request_target` بعيدًا عن هذا المسار للمساهمات المتفرّعة: يرفض Ship Safe هذه التركيبة ذات الامتيازات لأن عملية checkout قد تحتوي على تعليمات برمجية غير موثوقة.
```yaml
name: Ship Safe
on:
pull_request:
permissions:
contents: read
pull-requests: write
security-events: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: asamassekou10/[email protected]
with:
fail-on: high
inline: true
```
التعليقات المضمّنة اختيارية ولا تُنشر إلا للنتائج الحرجة/العالية. إعادة تشغيل المهمة تُحدّث الملخص دون إنشاء تعليقات مضمّنة مكررة.
---
## دعم LLM
يعمل مع أي مزوّد — يُكتشف تلقائيًا من متغيرات البيئة. استخدم `--provider <name>` للتجاوز.
Anthropic · OpenAI · Google · DeepSeek · Kimi K3 / Moonshot · Groq · Together · Mistral · xAI · Perplexity · Ollama · LM Studio · أي نقطة نهاية متوافقة مع OpenAI
يستخدم Kimi افتراضيًا `kimi-k3` عبر `MOONSHOT_API_KEY` أو `KIMI_API_KEY`. استخدم `--provider kimi --model kimi-k3` لتشغيلات GPT-Red ذات السياق الطويل والتحليل العميق.
لاختبار الفريق الأحمر الخاص بالسياق الطويل في Kimi K3:
```bash
npx ship-safe red-team . --gpt-red --provider kimi --model kimi-k3 --k3-long-context
```
يتحقق Ship Safe أيضًا من تطبيقات استدعاء الأدوات المتوافقة مع Kimi K3 / OpenAI للتحميل الديناميكي للأدوات من سياق المطالبة (prompt context)، وقوائم السماح للأدوات المفقودة، واستدعاءات الأدوات القسرية على مدخلات غير موثوقة، ونتائج الأدوات المعاد تشغيلها دون رسالة استدعاء الأداة الأصلية من المساعد.
لا يلزم مفتاح API للمسح الأساسي. يستخدم التصنيف بالذكاء الاصطناعي و`red-team --gpt-red` المزوّد المُهيّأ لديك عند توفره، مع آلية احتياطية حتمية دون اتصال لفحوصات GPT-Red.
---
## كبت النتائج الإيجابية الكاذبة
```python
password = get_password() # ship-safe-ignore
```
تُبلَّغ نتائج `critical` دائمًا. لا يمكن لتعليق مضمّن أن يخفي إحداها، وتُسجَّل أي محاولة لكتمها في الفحص. التعليق مخصّص لإنسان يستبعد نتيجة إيجابية خاطئة، وأي شيء قادر على كتابة سطر في مصدرك — بما في ذلك وكيل ذكاء اصطناعي — قادر أيضًا على كتابة التعليق، لذا لا تُراعى أعلى درجات الخطورة. يُحتسب كل كتم، لذا لا يبدو فحصٌ كتم نتائجه أبدًا كفحص لم تكن فيه نتائج أصلًا.
لا تُصنّف قواعد الشيفرة العادية نثر Markdown أو أمثلة الشيفرة المحصورة كشيفرة منشورة. لا تزال الأسرار تُفحص في كل مكان، وتحتفظ الملفات القابلة للقراءة بواسطة الوكلاء مثل `AGENTS.md` و`CLAUDE.md` بفحوصاتها المخصّصة لحقن المطالبات وحدود الثقة. لمراجعة الأمثلة المحصورة عمدًا، استخدم `--include-doc-examples` مع `scan` أو `audit` أو `ci`.
```gitignore
# .ship-safeignore
tests/fixtures/
docs/
```
### ما مدى الضجيج الذي يصدره؟
الاستدعاء هو النصف السهل من أي ماسح ضوئي. فالأداة التي تُبلّغ عن كل شيء تلتقط كل شيء وتصبح عديمة الفائدة، لذلك نتتبع أيضًا ما يُبلّغ عنه Ship Safe في المشاريع الناضجة التي لا تحتوي على ثغرات نشطة معروفة. هذه نتائج خام، وليست عيوبًا مؤكدة.
| المشروع | النتائج الخام | حرجة | الدرجة | التقييم |
|---|---:|---:|---:|:---:|
| [express](https://github.com/expressjs/express) | 10 | 0 | 88.2 | B |
| [requests](https://github.com/psf/requests) | 7 | 0 | 95.5 | A |
| [flask](https://github.com/pallets/flask) | 17 | 0 | 81.4 | B |
| [chalk](https://github.com/chalk/chalk) | 4 | 0 | 89.4 | B |
---
[Read more](https://github.com/asamassekou10/ship-safe)