پرش به محتوای اصلی
پرش به محتوای مقاله

آیا درگاه‌های سیاست‌گذاری محلی می‌توانند ریسک نفوذ AI به فایل‌ها را بکاهند؟

·۱۸ مرداد ۱۴۰۵۶ دقیقه مطالعه
مرز سیاست محلی RunOnMine بین عامل‌های هوش مصنوعی و دستگاه شما
مرز سیاست محلی RunOnMine بین عامل‌های هوش مصنوعی و دستگاه شما
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی یک گیت‌وی محلی که برخلاف سندباکس‌ها، بر روی «سیاست تأیید لحظه‌ای» تمرکز دارد و دسترسی را بر اساس هویت کانکتور و هدف منبع تفکیک می‌کند.

تصور کنید یک برنامه‌نویس برای افزایش سرعت کار، دسترسی ترمینال خود را به یک عامل هوش مصنوعی می‌دهد، اما یک خطای کوچک در پرامپت باعث حذف کل پوشه Home او می‌شود. این همان قمار خطرناکی است که RunOnMine برای پایان دادن به آن طراحی شده است. وقتی بهره‌وری مبتنی بر هوش مصنوعی در برابر ریسک از دست دادن کل سیستم‌عامل قرار می‌گیرد، توازن به هم می‌خورد. دادن دسترسی ترمینال به یک عامل، یک ریسک بزرگ است؛ به همین دلیل RunOnMine — یک گیت‌وی (Gateway) امنیتی متن‌باز — مرزی سخت‌گیرانه میان عامل و ماشین ایجاد می‌کند تا بهره‌وری با امنیت سیستم‌عامل معاوضه نشود.

این پروژه که با زبان Rust نوشته شده و تحت لایسنس Apache-2.0 منتشر شده است، در حال حاضر در نسخه بتای عمومی برای سیستم‌های macOS، ویندوز و لینوکس در دسترس است. اکثر عامل‌های هوش مصنوعی فعلی با یک انتخاب دوتایی روبرو هستند: یا در محیط محدود یک جعبه چت (Chat box) محبوس بمانند یا اعتبارنامه‌های گسترده‌ای دریافت کنند که به آن‌ها همان دسترسی‌هایی را می‌دهد که کاربر وارد شده به سیستم دارد. طبق مستندات این پروژه، این وضعیت یک حفره امنیتی عظیم ایجاد می‌کند؛ جایی که یک تزریق پرامپت (Prompt Injection) — شبیه به فریب دادن یک نگهبان برای باز کردن درهای بسته — می‌تواند منجر به حذف دایرکتوری‌های خانگی یا سرقت کلیدهای SSH شود. وقتی به یک مدل دسترسی به فایل‌ها، ترمینال، مرورگر و اتوماسیون دسکتاپ داده می‌شود، جریان کاری مفید می‌شود، اما یک شل (Shell) خام یا اعتبارنامه‌های گسترده می‌تواند کل حساب سیستم‌عامل را به یک مجوز واحد تبدیل کند. RunOnMine با تکیه بر تغییر رویکرد صنعت به سمت پروتکل زمینهٔ مدل (MCP)، لایه‌ای را معرفی می‌کند که مرز دسترسی را نه به عنوان یک ویژگی جانبی، بلکه به عنوان هسته اصلی محصول تعریف می‌کند.

معماری کنترل

این ابزار برخلاف محیط‌های ایزوله یا سندباکس‌های سنتی عمل نمی‌کند. در واقع RunOnMine مانند یک گیت‌وی امنیتی است که هر درخواست را بر اساس مجموعه‌ای از معیارهای محلی، پیش از اجرا، ارزیابی می‌کند. این رویکرد در راستای جابجایی پردازش از ابر به محیط‌های محلی است، مشابه آنچه در سیستم‌عامل HART برای استنتاج توزیع‌شده در دستگاه‌های محلی مشاهده کردیم. مرز محصول در اینجا مجموعه‌ای از ابزارهای MCP نیست که بعداً یک دیالوگ تأیید به آن اضافه شده باشد؛ بلکه خودِ مرز دسترسی، محصول اصلی است.

بر اساس مستندات پروژه، سیستم برای هر اقدام، چندین پرسش را به‌طور همزمان پاسخ می‌دهد:

  • کدام کانکتور درخواست را ارسال کرده است؟
  • چه کسی (کدام درخواست‌کننده) پشت این کانکتور است؟
  • کدام ابزار در حال فراخوانی است؟
  • هدف کدام منبع است؟
  • سیاست محلی مالک ماشین در این مورد چه می‌گوید؟
  • آیا این اقدام دقیقاً نیاز به تأیید دارد؟

جریان ساده‌شده‌ی عملیاتی از یک مسیر سخت‌گیرانه پیروی می‌کند: درخواست هوش مصنوعی $\rightrightarrows$ شناسایی هویت درخواست‌کننده و کانکتور $\rightrightarrows$ بررسی سیاست منبع محلی. از این نقطه به بعد، سیستم یا اجازه اجرای فوری می‌دهد، یا پیش از اجرا/رد کردن، درخواست تأیید محلی می‌کند و یا درخواست را به‌طور کامل متوقف می‌کند. نکته حیاتی این است که این تصمیم روی خودِ ماشینی که کنترل می‌شود گرفته می‌شود. اگرچه احراز هویت از راه دور می‌تواند دامنه اختیارات را محدود کند، اما هرگز نمی‌تواند سیاست‌های محلی را گسترش دهد.

تفکیک قابلیت ابزار از مجوز دسترسی

RunOnMine قابلیت ابزار را از مجوز محلی جدا می‌کند، زیرا نام یک ابزار به معنای تصمیم برای اعطای مجوز نیست. برای مثال، یک درخواست نوشتن در سیستم‌فایل (fs_write) به سیستم می‌گوید که چه کلاسی از عملیات درخواست شده است، اما تعیین نمی‌کند که آیا این درخواست باید پذیرفته شود یا خیر. تصمیم نهایی به مسیر خاص فایل، هویت درخواست‌کننده، کانکتور و اقدام دقیق بستگی دارد.

این منطق در اجرای دستورات شل نیز جاری است. سیستم تضمین می‌کند که اجرای دستور git status در یک مخزن منتخب، با اجرای یک دستور مخرب از طریق یک کانکتور دوردست، در یک سطح دسترسی یکسان قرار نگیرند؛ صرفاً به این دلیل که هر دو از ابزار shell_exec استفاده می‌کنند، نباید به یک مجوز بولی (Boolean) ساده تبدیل شوند.

دسترسی جزئی به منابع

به جای دادن دسترسی به کل سیستم‌فایل در سطح حساب کاربری، RunOnMine از ریشه‌های انتخابی (Selected Roots) استفاده می‌کند. یک عامل کدنویسی معمولاً به کل پوشه Home نیاز ندارد و ممکن است فقط به یک مخزن (Repository) خاص نیاز داشته باشد.

  • انتخاب ریشه: مالک سیستم مسیرهای خاصی از سیستم‌فایل را انتخاب می‌کند و سیستم تمام عملیات فایل را در همان مرزها نگه می‌دارد.
  • پیاده‌سازی: سیستم از عملیات‌های مبتنی بر قابلیت (Capability-oriented) و نسبی با توصیف‌گر (Descriptor-relative) استفاده می‌کند.
  • جلوگیری از فرار: هرگونه تلاش برای استفاده از مسیرهایی که سعی در خروج از مرزهای پیکربندی‌شده دارند، به‌طور فعال رد می‌شود.

این رویکرد سطح شکست (Failure Surface) را تغییر می‌دهد. یک اشتباه در پرامپت یا تزریق پرامپت در یک پروژه نباید به‌طور خودکار باعث دسترسی به مخازن نامرتبط، متریال‌های SSH، وضعیت مرورگر و اسناد شخصی شود، صرفاً به این دلیل که پردازش با همان کاربر سیستم‌عامل اجرا می‌شود. قانون راهنما این است: «پروژه را اعطا کن، نه حساب کاربری را». این تمرکز بر محیط‌های محلی با یافته‌های اخیر همسو است که نشان می‌دهد اپلیکیشن‌های دسکتاپ به دلیل حذف محیط‌های ابری، عملکرد بهتری در کاهش تأخیر اجرای عامل‌ها دارند.

امنیت با حضور انسان

تأیید در RunOnMine به بستر عملیاتی اقدام گره خورده است. امنیت «انسان در حلقه» (Human-in-the-loop) زمانی ضعیف می‌شود که تأیید به معنای «اعتماد ابدی به این ابزار» باشد. اگر یک عامل درخواست اجرای یک دستور خاص را بدهد و کاربر آن را تأیید کند، این تأیید به معنای اعطای مجوز دائمی برای اجرای هر دستور شل نیست. اگر ماهیت اقدام تغییر کند، تأیید قبلی به‌طور خاموش به مجوز برای اقدام جدید تبدیل نمی‌شود.

علاوه بر این، تأییدات فقط محلی هستند. هیچ ابزاری در MCP به نام approve_my_request وجود ندارد که یک عامل دوردست بتواند پس از درخواست چیزی خطرناک، آن را فراخوانی کند. نگه داشتن اختیار تأیید کاملاً خارج از سطح ابزارهای دوردست، یک الزام بنیادی در طراحی است.

مرزهای ترمینال و مرورگر

RunOnMine صراحتاً اعلام کرده است که یک گیت‌وی امنیتی و سیستم تأیید است، نه یک سندباکس. اگر یک دستور شل تأیید شود، با اختیارات حساب سیستم‌عامل RunOnMine اجرا می‌شود. اگرچه سیستم نمی‌تواند یک دستور مجاز دلخواه را به کدی بی‌ضرر تبدیل کند، اما چندین لایه کاهش ریسک را فراهم می‌کند:

  • محدودسازی (Scoping): می‌تواند دایرکتوری کاری را محدود کند.
  • اتصال (Binding): تصمیم را به درخواست‌کننده خاص گره می‌زند.
  • کنترل: الزام به تأیید، محدود کردن خروجی‌های ذخیره‌شده و قطع درخت‌های پردازشی در صورت اتمام زمان (Timeout).

یک Helper دارای امتیاز (Privileged Helper) اختیاری به عنوان یک مرز نصب جداگانه وجود دارد. این بخش در نصب معمولی نصب نمی‌شود و کانکتورهای دوردست از طریق پروفایل‌های سیاست استاندارد، دسترسی اجرای Administrator دریافت نمی‌کنند.

برای اتوماسیون وب، این ابزار یک مسیر مرورگر محافظت‌شده را پیاده می‌کند. استفاده از یک پروفایل مرورگر مجزا مفید است، اما مشکل مرز شبکه را حل نمی‌کند. اگر یک مرورگر که از راه دور هدایت می‌شود بتواند آزادانه به localhost یا شبکه‌های خصوصی دسترسی داشته باشد، به پلی برای دسترسی به سرویس‌هایی تبدیل می‌شود که درخواست‌کننده خارجی در حالت عادی به آن‌ها دسترسی ندارد. RunOnMine دسترسی به مقصد را بخشی از مرز سیاست‌ها می‌داند و از یک پروفایل ایزوله و یک مسیر پروکسی کنترل‌شده برای اتوماسیون محافظت‌شده استفاده می‌کند. به همین دلیل است که اتصال به یک مرورگر موجود دلخواه از طریق CDP به عنوان یک تصمیم اعتمادی متفاوت تلقی می‌شود؛ زیرا حفاظت‌های زمان اجرا (Launch-time) را نمی‌توان به‌طور عطف به retroactive بر روی پردازشی که خارج از آن مرز شروع شده است، اعمال کرد. در بحث مدیریت حافظه و ایزولاسیون، مقایسه V8 Isolate با سندباکس‌های لینوکسی نشان می‌دهد که انتخاب لایه ایزولاسیون تأثیر مستقیمی بر سرعت و امنیت عامل‌ها دارد.

اتصال و بازیابی اضطراری

برای جلوگیری از قرار گرفتن ماشین در معرض اینترنت عمومی، شنونده HTTP MCP در حالت loopback باقی می‌ماند. دسترسی‌های دوردست به جای متصل کردن سرور MCP به 0.0.0.0 از طریق مدل‌های کانکتور/تونل پشتیبانی شده مدیریت می‌شوند. نسخه‌ی بتا در حال حاضر از موارد زیر پشتیبانی می‌کند:

  • stdio محلی
  • HTTP loopback احراز هویت شده (Opt-in)
  • حالت‌های کانکتور Cloudflare
  • یکپارچگی با OpenAI Secure MCP Tunnel

فراخوان‌های دوردست همچنان تابع سیاست‌های محلی هستند. اقدامات خطرناک دوردست نمی‌توانند خودشان را تأیید کنند و اجرای Administrator از راه دور توسط سقف ایمنی (Safety Ceiling) رد می‌شود.

برای شکست‌های بحرانی، سیستم شامل یک «قفل اضطراری» (Emergency Lock) است. این یک عملیات زمان اجراست — متمایز از جریان حذف نصب — که به مالک اجازه می‌دهد بدون حذف پیکربندی‌ها بگوید «همین الان متوقف شو». این قابلیت فوراً تمام عامل‌ها و کانکتورهای فعال را متوقف می‌کند، تأییدهای در انتظار را رد می‌کند، مجوزهای موقت را حذف می‌کند، وضعیت OAuth مربوطه را باطل کرده و اعتبارنامه‌های موقت استفاده شده در مسیرهای کانکتور را نامعتبر می‌سازد.

شفافیت در بازرسی و انتشار

برای جلوگیری از تبدیل شدن لاگ‌های سیستم به یک مخزن دوم برای اسرار، RunOnMine از تشخیص‌های سانسورشده (Redacted Diagnostics) استفاده می‌کند. ثبت ساده‌لوحانه همه چیز می‌تواند مشکل امنیتی جدیدی ایجاد کند که در آن محموله‌های خام دستورات، اعتبارنامه‌ها، URLها و مسیرهای ماشین به‌صورت متن ساده ذخیره شوند. RunOnMine یک زنجیره حسابرسی مقاوم در برابر دستکاری (Tamper-evident) را حفظ می‌کند در حالی که از ذخیره‌سازی اسرار خام اجتناب می‌کند. مطالب پشتیبانی از تشخیص‌های محدود ساخته شده‌اند، نه از کپی کورکورانه وضعیت داخلی.

برای انتشار نسخه v0.1.0-beta.1 توسعه‌دهنده چک‌سام‌های SHA-256 و SBOMهای CycloneDX مخصوص هر هدف را ارائه کرده است تا شواهد بتای منتشر شده قابل بازرسی باشد. مخزن پروژه، کاندیدای منبع منجمد شده و گیت‌های انتشار را در فایل‌های ماشین‌خوان ثبت می‌کند و شواهد پذیرش پلتفرم، بازبینی منبع و هش‌های آرتیفکت را نام‌گذاری می‌کند.

محدودیت‌های نسخه بتا

RunOnMine یک نرم‌افزار پیش‌انتشار با محدودیت‌های عمدتاً مشهود است. توسعه‌دهنده این شکاف‌ها را مستند کرده است زیرا یک ابزار امنیتی نباید محدودیت‌های اعتماد در توزیع خود را پنهان کند:

  • نسخه macOS دارای امضای ad-hoc است (نه امضای Developer ID یا notarized).
  • نصاب ویندوز امضای Authenticode ندارد.
  • بازبینی امنیتی مستقل خارجی هنوز در جریان است.

این تغییر در رویکرد نشان می‌دهد که آینده هوش مصنوعی عامل‌محور، نه در ساخت سندباکس‌های بزرگ‌تر، بلکه در ایجاد گیت‌وی‌های هوشمندتر است. با جداسازی قابلیت ابزار از مجوز محلی، RunOnMine صنعت را به سمت فلسفه «پروژه را اعطا کن، نه حساب کاربری را» سوق می‌دهد.

برای کسانی که عامل‌های MCP را مستقر می‌کنند، گام بعدی ارزیابی این است که کدام اقدامات ماشین می‌توانند خودکار شوند و کدام یک باید پشت یک گیت تأیید محلی باقی بمانند. شما می‌توانید پیاده‌سازی این پروژه را در مخزن گیت‌هاب در https://github.com/ademisler/RunOnMine بررسی کنید یا از وب‌سایت https://runonmine.github.io/ بازدید نمایید.

گام بعدی شما

  • اگر از عامل‌های مبتنی بر MCP استفاده می‌کنید، لیست عملیات‌های ترمینال خود را بررسی کنید و موارد حساس را به لایه تأیید محلی منتقل کنید.
  • مخزن گیت‌هاب پروژه را برای بررسی نحوه تعریف سیاست‌های دسترسی (Policy) مطالعه کنید.
  • در صورت استقرار در محیط‌های حساس، از قابلیت Emergency Lock برای مدیریت بحران استفاده کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با تکیه بر تخصص در امنیت سیستم‌عامل، ریسک اجرای کد توسط هوش مصنوعی را از سطح کل سیستم به سطح یک پروژه محدود می‌کند. این تغییر برای سازمان‌هایی که قصد استقرار عامل‌های خودکار در محیط‌های عملیاتی را دارند، حیاتی است.

تأثیر برای ایران

برنامه‌نویسان ایرانی که از ابزارهای Agentic برای اتوماسیون کدنویسی استفاده می‌کنند، می‌توانند با نصب این ابزار متن‌باز، ریسک حذف اتفاقی داده‌ها یا نشت کلیدهای SSH را به شدت کاهش دهند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی مفهوم «دسترسی حساب» با «دسترسی پروژه» یک چرخش بنیادین در معماری امنیت عامل‌هاست. این رویکرد نشان می‌دهد که اعتماد به مدل‌های زبانی، حتی با وجود زنجیره تفکر، برای عملیات سیستمی هرگز کافی نیست و لایه تأیید باید کاملاً از دسترس مدل خارج و در اختیار کاربر باشد.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.