
T3 Code 61c3794c مسار محلي متبقٍّ. يمكن لعميل filesystem:read المقترن فتح ملفات المضيف عبر مسار مطلق أو مسار ~/. تبقى عمليات الكتابة داخل مساحة العمل. مختبر loopback.
أنت تقرن هاتفًا أو جهازًا ثانيًا بـ T3 Code ليتمكن من فتح ملفات المشروع. هذا المنح نفسه يمكنه فتح مفتاح SSH الخاص بك. تقبل واجهة برمجة قراءة الملفات مسارًا مطلقًا أو مسارًا يبدأ بـ ~/ وتتجاوز سياج مساحة العمل الذي لا تزال عمليات الكتابة تحترمه. يبقى ../ النسبي محظورًا. وكيل MCP للقراءة فقط لا يحصل على هذا المنح.
الفئة: مسار متبقٍّ
الوصول: محلي (جلسة مقترنة بـ filesystem:read؛ وأيضًا هاتف أو متصفح مقترن إذا منح المالك ذلك النطاق)
T3 Code 61c3794c - Ping
| المعرّف | لا يوجد CVE بعد |
| الفئة | مسار متبقٍّ |
| الوصول | محلي (عميل مقترن يحمل filesystem:read) |
| CWE | CWE-22 / CWE-73 |
| CVSS | متوسط: 6.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N |
| المنتج | T3 Code |
| المتأثر | 61c3794c32b0eeebfac09add43e403618c65d2d7 (بعد v0.1.6) |
| المصادقة | جلسة مقترنة أو بمنح قياسي مع filesystem:read |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | Vitest عبر loopback مقابل WorkspaceFileSystem؛ لا مضيفات إنتاج |
يحتاج إلى بيانات اعتماد تحمل بالفعل filesystem:read. يتضمن الاقتران الافتراضي ذلك النطاق، وأيضًا terminal:operate. لا تصل مشاركات الضيوف إلى هذا الـ RPC. وضع MCP للقراءة فقط هو orchestration:read فقط.
| الصلاحية | الطريقة / المصب | الاستطلاع / السلامة / التوافر | مُثبت مختبريًا أو مُستنتج |
|---|---|---|---|
| قراءة ملف مضيف عبر مسار مطلق | WorkspaceFileSystem.readFile / RPC projectsReadFile مع ضبط relativePath على مسار مطلق | استطلاع (ملف مضيف) | مُثبت مختبريًا. أعاد الشاهد t3f01w8k2 |
قراءة ملف مضيف عبر ~/ | نفس المصب مع relativePath بقيمة ~/.lab-secret تحت HOME مختبري | استطلاع | مُثبت مختبريًا. نفس الشاهد |
| إنشاء رابط أصل موقّع لمسار وسائط مطلق | assetsCreateUrl media-file | استطلاع | مُستنتج من الشيفرة. ليس أداة التحقق في هذا المختبر |
ضابط سلبي: ../ النسبي | readFile بمسار يخرج من مساحة العمل | لا ينطبق | مُثبت مختبريًا. WorkspacePathOutsideRootError |
| ضابط سلبي: كتابة مطلقة | writeFile بنفس مسار السر المطلق | لا ينطبق | مُثبت مختبريًا. رُفض، والسر لم يتغير |
| ضابط سلبي: MCP للقراءة فقط | mcpClientScopes("read-only") مقابل projectsReadFile | لا ينطبق | مُثبت مختبريًا. رُفض |
يبقى مغلقًا في هذا المتبقي
| المحور | الطريقة / المصب | سبب إغلاقه |
|---|---|---|
| السلامة | كتابات مساحة العمل عبر مسار مطلق | resolveWriteTarget يحصر في الجذر الحقيقي ويرفض .git |
| الاستطلاع | قراءة ../ النسبية | resolveRelativePathWithinRoot |
| الاستطلاع | secretsDir و stateDir/*.sqlite في T3 | isServerInternalPath |
| الاستطلاع | HTTP لمشاركة الضيوف | رموز الضيوف لا تدخل SessionStore أبدًا |
| الاستطلاع | /mcp للقراءة فقط في MCP | لا يوجد filesystem:read |
| السلامة | RPC عبر loopback دون مصادقة | EnvironmentAuthPolicy ليست unsafe-no-auth |
تصف وثائق المنتج (docs/internals/environment-auth.md) filesystem:read كمنح لقراءة المضيف. لا تزال الواجهة ترسل مسارات نسبية إلى مساحة العمل. يقبل الخادم مدخلات لا ينتجها عميل شرعي. يتضمن الاقتران القياسي أيضًا صدفة.
ثبّتت pingdotgg/t3code على 61c3794c. يوسّع resolveReadTarget المسار ~/، ويحل المسار المطلق إلى مساره الحقيقي، ويعيده دون isInsideRealRoot. أما الكتابات فتُجري ذلك الفحص. أغلقت المشكلة العامة #316 cwd غير المقيّد في الكتابات فقط.
مسارات خاطئة: اعتبار MCP للقراءة فقط مستدعيًا لـ projectsReadFile (وهو ليس كذلك)؛ واعتبار هذا متبقيًا دون مصادقة (وهو منح مقترن).
python3 t3code-abspath-host-read-Abraxas-Labs.py
أو:
cd lab
./run.sh
يستنسخ pingdotgg/t3code عند 61c3794c إلى lab/src، ويثبّت باستخدام pnpm، ويضع شاهدًا تحت lab-home/.lab-secret، ويشغّل Vitest. عبر loopback فقط. Node 26 وpnpm 12.
IOC abs-read=1
IOC home-read=1
IOC rel-escape=0
IOC write-abs=refused
IOC mcp-readonly-filesystem=denied
IOC secret-unchanged=1
SUCCESS T3-F01-ABSPATH t3f01w8k2
بعد realpath، اشترط أن يكون الهدف داخل realpath(cwd) بالطريقة التي يفعلها resolveWriteTarget بالفعل. استدعِ knownWorkspaces.assertContains(input.cwd) عند القراءة والبيانات الوصفية. توقّف عن إنشاء عناوين URL من نوع media-file للمسارات المطلقة دون مشروع. وسّع isServerInternalPath ليشمل كامل stateDir.
61c3794c32b0eeebfac09add43e403618c65d2d7WorkspaceFileSystem.resolveReadTargetGNU Affero GPL v3.0. راجع LICENSE. مختبر loopback فقط. دون أي ضمان.
مختبرات أبراكساس [email protected]
يُرجى نسب CVE إلى Abraxas Labs.