وقتی مهاجم استدلال میکند چه چیزی تغییر میکند
تشخیص مبتنی بر امضا فرض میکند که کد مخرب و توالی دستورات به اندازهای پایدار هستند که بهعنوان مصنوع ثبت شوند: هش فایل، الگوهای بایتی، رشتههای دستوری شناختهشده. این فرض زمانی برقرار است که ابزار نفوذ یک اسکریپت ثابت را اجرا کند. زمانی شکست میخورد که ابزار اقدام بعدی خود را در زمان اجرا از میان مجموعهای از مدلها انتخاب کند.
در چنین سیستمی، payload یک مصنوع واحد نیست بلکه یک policy روی اقدامات است. هر اجرا میتواند توالی متفاوتی تولید کند: یک خواندن فایل اینجا، یک فراخوانی API آنجا، یک انتقال کوچک در جایی دیگر. مجموعه مدلها primitives جدیدی اختراع نمیکند؛ بلکه از میان موارد بهظاهر مشروع انتخاب میکند. نتیجه این است که امضاهای ایستا و تطبیق هش بهسرعت فرسوده میشوند، زیرا خروجی قابل مشاهده یک توزیع است نه یک رشته ثابت. گزارشهایی درباره بدافزاری که مدلهای زبانی را برای تطبیق رفتار یکپارچه میکند، جهت حرکت را نشان میدهد [1].
زمان اقامت با تطبیق حلقه با آنچه محیط اجازه میدهد، کاهش مییابد. اگر یک API خاص پایش شود، حلقه میتواند از آن اجتناب کند. اگر مقصدی مسدود باشد، میتواند دیگری را انتخاب کند. نفوذ به یک مسئله جستجو در فضایی از اقدامات مجاز تبدیل میشود، نه یک kill chain ثابت.
تشخیص رفتاری برای ترافیک بهشکل agent
پاسخ دفاعی، خط پایهگذاری رفتار است نه مصنوعات. برای هر هویت — کاربر، حساب سرویس، یا agent — سیگنالهای مرتبط، توالی و fan-out فراخوانیهای ابزار هستند، نه فقط حجم ترافیک.

یک مکانیزم مشخص: ساخت مدل انتقال بهازای هر هویت روی فراخوانیهای ابزار. برای هر هویت، ثبت کنید که کدام فراخوانیهای ابزار پس از کدامها میآیند، با چه پارامترهایی، و با چه نرخی. یک نفوذ مدلمحور توالیهایی تولید میکند که بهصورت محلی محتمل اما بهصورت کلی غیرعادی هستند: خواندن یک فایل پیکربندی و سپس فراخوانی یک endpoint متادیتای ابری، سپس یک خروج کوچک به مقصدی ناآشنا. هیچ گام واحدی مخرب نیست. ترکیب، سیگنال است.
افزایش سطح دسترسی بهطور خاص برای این رویکرد مناسب است زیرا اغلب بهصورت مجموعهای از گامهای بهظاهر بیضرر میآید. یک فرض نقش، یک خواندن policy، یک تبادل توکن، یک نوشتن روی منبعی که قبلاً فقطخواندنی بود. هر گام در چارچوب policy است. توالی نیست. بنابراین تشخیص باید مسیر را ارزیابی کند، نه نقطه را.
ترکیبهای غیرعادی دامنه خواندن و مقصد خروج، سیگنال دیگری با ارزش بالا است. هویتی که معمولاً از یک پایگاه داده واحد میخواند و به یک صف واحد مینویسد، دلیلی ندارد از یک مخزن اسرار بخواند و به دامنهای جدید خروج کند. دامنه خواندن و مقصد بهصورت جداگانه مجاز هستند؛ جفتشدن آنها نیست.
معاوضه صادقانه: خطوط پایه رفتاری به یک دوره گرمشدن نیاز دارند و زمانی که کار مشروع تغییر میکند، مثبتهای کاذب تولید میکنند. یک استقرار جدید، یک مهاجرت، یا یک rollout مشروع agent مانند یک انحراف به نظر میرسد. تیمها باید تصمیم بگیرند که چه مقدار تحمل را مجاز کنند، و آن تحمل دقیقاً فضایی است که یک مهاجم تطبیقپذیر از آن استفاده خواهد کرد. هیچ آستانهای وجود ندارد که هم مثبتهای کاذب و هم فرار را حذف کند؛ تنها انتخابی درباره این وجود دارد که کدام حالت شکست قابل قبول است.
پیامدها برای پلتفرمهای agent
پلتفرمهای agent این مشکل را مستقیماً به ارث میبرند. پروفایل استفاده از ابزار خود agent — توالی خواندن فایل، فراخوانی API، و انتقالهای کوچک — از یک پروفایل بهخطرافتاده قابل تشخیص نیست مگر اینکه هویت و قصد در زمان فراخوانی به هم گره بخورند. پلتفرم نمیتواند تشخیص دهد که یک فراخوانی به این دلیل انجام شده که agent تصمیم گرفته

پیامد اول این است که sandboxing و policy خروج باید توسط runtime اعمال شوند، نه در یک prompt درخواست شوند. یک دستور prompt یک پیشنهاد است؛ یک policy runtime یک محدودیت است. اگر بتوان agent را متقاعد کرد که دستور را نادیده بگیرد، آن دستور هرگز یک کنترل نبوده است. runtime باید آنچه agent مجاز به انجام آن است را اعمال کند، مستقل از آنچه از او خواسته شده است.
پیامد دوم این است که logging باید تصمیم را ثبت کند، نه فقط اقدام را. لاگی که «فایل X خوانده شد» را ثبت میکند کافی نیست. لاگی که ثبت میکند «فایل X خوانده شد زیرا planner اقدام A را با توجه به زمینه C، تحت policy P انتخاب کرد» به بازبین اجازه میدهد بازسازی کند که چرا یک فراخوانی مجاز بوده است. این تفاوت بین یک رد حسابرسی و فهرستی از رویدادها است.
گرهزدن هویت و قصد در زمان فراخوانی، مکانیزمی است که این را ممکن میکند. هر فراخوانی ابزار یک ادعای امضاشده حمل میکند که کدام agent آن را انجام داده، تحت کدام policy، و برای کدام هدف اعلامشده. runtime قبل از اجرا ادعا را تأیید میکند. اگر ادعا گم باشد یا با policy ناسازگار باشد، فراخوانی رد میشود. این از بهخطرافتادن agent جلوگیری نمیکند، اما محدود میکند که یک agent بهخطرافتاده چه کاری میتواند انجام دهد و بهخطرافتادن را در لاگ تصمیم قابل مشاهده میکند.
معاوضه بیشتر: گرهزدن قصد در زمان فراخوانی تأخیر و پیچیدگی اضافه میکند. هر فراخوانی اکنون به یک گام تأیید و یک ارزیابی policy نیاز دارد. برای سیستمهای agent با توان بالا، این میتواند هزینه قابل توجهی باشد. جایگزین — اعتماد به توصیف خود agent از قصدش — ارزانتر است اما هیچ مرز امنیتی فراهم نمیکند. تیمها باید انتخاب کنند که مرز را کجا قرار دهند، و آن انتخاب تعیین میکند که یک مهاجم به چه چیزی میتواند دسترسی پیدا کند.
قدم بعدی چه باید کرد
گامهای عملی غیرجذاب هستند. توالی و fan-out فراخوانیهای ابزار را بهازای هر هویت خط پایهگذاری کنید. ترکیبهای غیرعادی دامنه خواندن و مقصد خروج را بهعنوان سیگنال در نظر بگیرید. sandboxing و policy خروج را در runtime اعمال کنید. تصمیم را ثبت کنید، نه فقط اقدام را. هویت و قصد را در زمان فراخوانی گره بزنید.
هیچیک از این گامها یک دفاع کامل نیست. یک مهاجم تطبیقپذیر مرزها را کاوش میکند و از هر تحملی که اعطا شود استفاده میکند. اما آنها مسئله تشخیص را از مصنوعات، که بهسرعت فرسوده میشوند، به رفتار، که تغییر آن بدون قابل مشاهده شدن دشوارتر است، منتقل میکنند. این تنها موقعیت پایدار است وقتی مهاجم حرکت بعدی خود را انتخاب میکند.
