نقطه کور در تلمتری امنیت ایجنت
بیشتر تلمتری امنیت ایجنت حول محتوا ساخته شده است. پرامپتها برای رشتههای تزریق اسکن میشوند، آرگومانهای ابزار برای اسرار بازرسی میشوند، پاسخهای مدل برای نقض سیاست فیلتر میشوند. این کار مفیدی است، و همچنین به شکلی ناقص است که بهراحتی از نظر پنهان میماند: یک درخواست میتواند در محموله کاملاً بیضرر و در مقصد و زمانبندی خصمانه باشد. محموله میگوید GET /. مقصد میگوید این ایجنت هرگز قبلاً با آن میزبان صحبت نکرده است، و این چهاردهمین میزبان جدید در دقیقه گذشته است.
لیستهای مجاز بهازای هر فراخوانی توالی را ثبت نمیکنند. اگر یک ایجنت مجاز باشد به میزبان A، میزبان B و میزبان C دسترسی داشته باشد، آنگاه هر فراخوانی بهتنهایی مجاز است. اکسپلویت هیچ فراخوانی واحدی نیست. اکسپلویت A است، سپس B، سپس C، به همان ترتیب، در یک بازه کوتاه، جایی که A توکنی برمیگرداند که B میپذیرد و B مکاننمایی برمیگرداند که C آن را resolve میکند. هر گام مجاز است. این پیمایش مجاز نیست. بازرسی محتوا نمیتواند این را ببیند چون محتوا سالم است. شکل ترافیک حمله است.
این همان شکافی است که دفتر خروجی برای بستن آن طراحی شده است.
دفتر خروجی چه چیزی ثبت میکند
دفتر خروجی یک رکورد فقط-افزودنی از هر رویداد شبکه خروجی است که یک ایجنت تولید میکند، و در نقطهای نوشته میشود که اتصال واقعاً برقرار میشود. واحد ثبت، مقصد است، نه پیام.
برای هر رویداد، دفتر باید حداقل موارد زیر را ثبت کند:

- هویت مقصد: نام میزبان، مقدار SNI، یا شناسهای که کلاینت واقعاً برای آدرسدهی به همتا استفاده کرده است
- آدرس resolveشده: IPای که نام در آن لحظه به آن resolve شد، که اهمیت دارد چون DNS یک صفحه کنترل است که میتوان ایجنت را از طریق آن هدایت کرد
- پروتکل و پورت: HTTPS، DNS، SMTP، TCP خام، و پورتی که واقعاً استفاده شده است
- مهر زمانی اولین مشاهده در هر اجرا: نه فقط اینکه این رویداد چه زمانی رخ داد، بلکه اینکه آیا این مقصد قبلاً در این اجرا ظاهر شده است یا نه
- هویت اجرا و ایجنت: کدام ایجنت، کدام اجرا، کدام تسک والد آن را ایجاد کرده است
دفتر بهازای هر اجرا است، و اجرا دامنه مهم است. مقصدی که برای یک کارگر بلندمدت ingestion عادی است، برای یک ایجنت برنامهریز کوتاهمدت تازه است. کاردینالیتی و تازگی فقط در برابر اجرایی که به آن تعلق دارند معنا دارند.
دو سیگنال مشتقشده تقریباً بهرایگان از این رکورد بیرون میآید:
- کاردینالیتی مقصد بهازای هر اجرا. این اجرا چند مقصد متمایز را لمس کرد؟ یک ایجنت برنامهریز که بهطور عادی به سه سرویس داخلی دسترسی دارد و ناگهان به چهل سرویس دسترسی پیدا میکند لزوماً بهخطر نیفتاده، اما دیگر مثل یک برنامهریز رفتار نمیکند.
- تازگی در برابر یک خط پایه. چند مورد از آن مقصدها نسبت به آنچه این ایجنت، در این محیط، بهطور تاریخی به آن دسترسی داشته، جدید هستند؟ تازگی سیگنال تیزتری است چون کراندار و در بین اجراها قابل مقایسه است.
تلاشهای ردشده باید نگه داشته شوند، نه حذف. یک اتصال مسدودشده باارزشترین خط در دفتر است: این یک ایجنت است که صراحتاً تلاش میکند به جایی برود که سیاست ممنوع کرده، و نیت را به شما میگوید حتی وقتی اجرای سیاست دوام آورده است. حذف ردها برای تمیز نگه داشتن لاگ، دقیقاً همان شواهدی را که یک بازرس نیاز دارد از بین میبرد.
نقاط اجرای سیاست
یک دفتر تنها به اندازه نقطهای که در آن نوشته میشود قابل اعتماد است. اگر فریمورک ایجنت لاگ خروجی خودش را بنویسد، آن لاگ ادعایی از سوی ایجنت درباره رفتار خودش است. این برای دیباگ خوب است و برای امنیت بیفایده.
خروجی باید در پروکسیای پایان یابد که ایجنت نتواند با اعتبارنامههای خودش آن را دور بزند. در عمل این یعنی رانتایم ایجنت هیچ مسیری به بیرون ندارد مگر از طریق یک forward proxy یا یک دروازه خروجی، و اعتبارنامههایی که ایجنت در اختیار دارد فقط در آن دروازه معتبرند. اگر ایجنت بتواند مستقیماً به شبکه دسترس

با این توپولوژی، سه ویژگی حاصل میشود:
- نوشتن دفتر در پروکسی رخ میدهد، نه در فریمورک ایجنت. پروکسی اتصال را میبیند چون خودش اتصال است. هیچ مسیر کدی در ایجنت وجود ندارد که بتواند رکورد را دور بزند.
- سیاست توالی و کاردینالیتی را ارزیابی میکند، نه فقط عضویت نام میزبان را. قاعدهای که میگوید «میزبان A مجاز است» یک آزمون عضویت است. قاعدهای که میگوید «میزبان A مجاز است، اما فقط قبل از میزبان B، و هرگز بیش از N مقصد متمایز در یک بازه پنجدقیقهای» یک آزمون توالی است. دومی همان چیزی است که حرکت جانبی را میگیرد.
- DNS داخل محیط امنیتی است. Resolution یک رویداد خروجی است. ایجنتی که نمیتواند اتصال TCP به میزبانی تحت کنترل مهاجم باز کند، هنوز میتواند از طریق یک کوئری DNS دادهها را بیرون بکشد اگر resolution پروکسی و لاگ نشود.
یک مکانیزم مشخص که کار میکند: پروکسی یک مجموعه مقصد بهازای هر اجرا در حافظه نگه میدارد، کلیدش شناسه اجرا است. در هر اتصال، عضویت را بررسی میکند، سپس کاردینالیتی را در برابر یک آستانه بررسی میکند، سپس گذار را در برابر یک ماشین حالت کوچک از مقصدهای پیشین مجاز بررسی میکند. اگر هر بررسی شکست بخورد، اتصال رد میشود و یک رویداد رد با زمینه کامل نوشته میشود. ماشین حالت کوچک است چون نیازی ندارد همه کارهایی که ایجنت ممکن است انجام دهد را مدل کند؛ باید همان چند گذاری را مدل کند که نشاندهنده پیمایش باشد.
بدهبستانهای عملیاتی
آستانههای تازگی به خطوط پایه بهازای هر محیط نیاز دارند وگرنه مدام هشدار میدهند. یک محیط staging که ایجنتها روزانه دوباره مستقر میشوند، اگر خط پایه بهصورت سراسری محاسبه شود، تقریباً در هر اجرا تازگی تولید میکند. خطوط پایه باید بهازای هر محیط، هر نقش ایجنت، و ایدهآل بهازای هر نسل استقرار دامنهبندی شوند، و باید با تغییر سیستم دوباره محاسبه شوند. آستانهای که در production درست است در staging نویز خواهد بود و برعکس. عدد واحدی وجود ندارد؛ یک تعهد نگهداری وجود دارد.
لاگ کردن مقصدها ارزانتر از لاگ کردن محمولهها است و از رمزنگاری جان سالم به در میبرد. یک رکورد مقصد کوچک است: یک نام، یک آدرس، یک پورت، یک مهر زمانی، یک نتیجه. با اندازه پاسخ رشد نمیکند، به رهگیری TLS نیاز ندارد، و وقتی محموله سرتاسر رمزنگاری شده باشد همچنان معنادار میماند. این استدلال عملی برای دفتر است: به شما یک سیگنال امنیتی در همان بخشی از ترافیک میدهد که همیشه میتوانید مشاهده کنید، بدون هزینه و ریسک حقوقی بازرسی محتوا.
محدودیت صادقانه این است که دفتر به شما میگوید یک ایجنت به کجا رفت و نه اینکه آنجا چه چیزی به دست آورد. یک مقصد کاملاً مجاز هنوز میتواند جایی باشد که دادهها از آن خارج میشوند. دفتر جستجو را باریک میکند؛ جایگزین بازرسی محتوا نمیشود، و جایگزین قضاوت انسانی در تصمیمگیری درباره اینکه کدام مقصدهای تازه مشروع هستند نمیشود. کاری که میکند این است که پیمایش را قابل مشاهده میکند، که همان بخشی است که بازرسی محتوا هرگز قرار نبود ببیند.
برای تیمهایی که سیستمهای ایجنت میسازند، ترتیب عملی این است: خروجی را پشت پروکسیای قرار دهید که ایجنت نتواند دور بزند، دفتر را در پروکسی بنویسید، ردها را نگه دارید، و توالی و کاردینالیتی را ارزیابی کنید نه فقط عضویت را. ابزارگذاری کوچک است. شکاف پوششی که میبندد کوچک نیست.
