امروز، ما در حال راهاندازی پروفایلهای کاربردی (Application Profiles) هستیم، روشی یکپارچه برای اعمال یک خطمشی امنیت ایجابی. با تجزیهوتحلیل ساختار و فرمت درخواستهای HTTP و شناسایی انحرافات، کلادفلر (Cloudflare) میتواند به شما کمک کند تا سطح حمله را به طور قابل توجهی کاهش دهید.
هر مشتری که با او صحبت میکنیم میخواهد بداند چگونه میتوانیم از آنها در برابر حملاتی که از مدلهای هوش مصنوعی مرزی استفاده میکنند محافظت کنیم. این به اولویت شماره یک برای هر کسی که در حوزه امنیت کار میکند تبدیل شده است. مدلهای زبانی بزرگ (LLMs) به افراد غیرفنی اجازه میدهند حتی با یک پرامپت ساده دست به حمله بزنند. مدلهای زبانی بزرگ (LLMs) میتوانند پیلودهای مخرب تولید کنند، تکنیکهای شناخته شده را آزمایش کنند، و با تغییر تاکتیکهای خود بر اساس بازخورد برنامه یا فایروال برنامه وب (WAF)، به طور مستقل به برنامهها نفوذ کنند.
ابزارهای ما تغییر کردهاند تا یک قدم جلوتر از مهاجمان بمانند. قوانین مدیریت شده فایروال برنامه وب (Managed WAF) و تشخیصهای مبتنی بر یادگیری ماشین برای شناسایی تکنیکهایی مانند تزریق SQL، اسکریپتنویسی بینسایتی، اجرای کد از راه دور، و آسیبپذیریهای امنیتی جدید (CVEs) از جمله تغییرات متعدد این حملات، ضروری باقی میمانند. پاسخ نمیتواند صرفاً «سریعتر وصله کنید» باشد: این پایدار نیست و اگر آسیبپذیریهای خود را به طور کامل نقشهبرداری نکرده باشید، کار نمیکند.
چه میشود اگر بتوانید با تجزیهوتحلیل ساختار ترافیک خود یاد بگیرید که درخواستهای خوب چه شکلی هستند؟ به جای جستجوی تنها برای درخواستهایی که شبیه حملات شناخته شده هستند، میتوانیم فقط درخواستهایی را مجاز بدانیم که با آنچه انتظار داریم مطابقت دارند. با انجام این کار، سطح حمله را به شدت کاهش خواهیم داد. برای مثال، اگر فیلد جستجو در پرسوجوی شما انتظار کاراکترهای خاصی را نداشته باشد، ما فقط میتوانیم رشتههای الفبایی-عددی را بپذیریم. این کار از قبل جلوی کتابخانه وسیعی از حملات شناختهشده را میگیرد.
اما ما در اینجا متوقف نمیشویم. هنگامی که ساختار و فرمت درخواستهای HTTP شما را یاد گرفتیم، میتوانیم هدف هر عملیات را استنباط کنیم و سپس بفهمیم که برنامه در نهایت چه کاری انجام میدهد. با این اطلاعات، میتوانیم بحرانیترین و آسیبپذیرترین عملیات و فیلدهایی را که باید ابتدا به آنها رسیدگی کنید، شناسایی و اولویتبندی کنیم.
کلادفلر (Cloudflare) در حال حاضر از امنیت ایجابی برای رابطهای برنامهنویسی کاربردی (APIs) از طریق یادگیری طرحواره (Schema Learning) و اعتبارسنجی طرحواره (Schema Validation) پشتیبانی میکند. ما اکنون در حال گسترش این محافظت به برنامههای وب از طریق پروفایلهای طرحواره کاربردی (Application Schema Profiles) هستیم. شما یک برنامه را وارد میکنید، ما پروفایل آن را یاد میگیریم، و سپس شروع به استقرار یک تشخیص همیشه روشن میکنیم که عدم انطباق را شناسایی میکند. همه اینها توسط تجزیهوتحلیل قدرتمند خودکار و غنی شده است.
ما در حال باز کردن یک نسخه بتای بسته برای مشتریان سازمانی دعوتشده بدون امنیت رابط برنامهنویسی کاربردی (API Security) هستیم؛ مشتریانی که دارای امنیت رابط برنامهنویسی کاربردی (API Security) هستند از قبل دسترسی دارند.
اعتبارسنجی درخواستها بر اساس پروفایلهای یادگرفتهشده
پروفایلهای طرحواره (Schema Profiles) به طور دورهای ساختار درخواست مورد انتظار را از ترافیک مشاهده شده یاد میگیرند. پس از در دسترس قرار گرفتن یک پروفایل، یک لایه اعتبارسنجی همیشه روشن به طور خودکار روی ترافیک زنده مستقر میشود. برای هر درخواست، تشخیص ارزیابی میکند که آیا با پروفایل مطابقت دارد یا خیر، و نتیجه را به عنوان فراداده اضافه میکند و اطلاعاتی را که از قبل با درخواست مرتبط شده است، تقویت میکند. این سیگنال به خودی خود اقدامی انجام نمیدهد: مشتریان میتوانند ترافیک گذشته را در تجزیهوتحلیل امنیت (Security Analytics) تجزیهوتحلیل کنند و تصمیم بگیرند که اجرای کجا مناسب است و قوانین امنیتی (Security Rules) را برای مسدود کردن درخواستهای ناسازگار ایجاد کنند. درخواستهای مربوط به عملیات بدون پروفایل توسط این ویژگی دستهبندی نمیشوند.
برخلاف قوانین مدیریت شده (Managed Rules)، عدم اعتبارسنجی نیازی به تطبیق درخواست با یک امضای حمله شناخته شده ندارد. یک مقدار خارج از محدوده مورد انتظار، یک مقدار شمارشی ناشناخته (enum)، یک شناسه منحصربهفرد جهانی نامعتبر (UUID)، یا کاراکترهای غیرمنتظره — همه میتوانند شناسایی شوند زیرا با پروفایل یادگرفتهشده تفاوت دارند.
برای مثال، عملیات زیر را در نظر بگیرید:
www.example.com/shop/2dbda2e7-cfc9-448d-9465-799d2e6ff363/inventory?product_id=938062541
در ادامه فرآیند یادگیری را شرح میدهیم که فقط ساختار و فرمت درخواست را ارزیابی میکند. هنگامی که ترافیک کافی مشاهده شد، یاد میگیریم که مسیر انتظار یک متغیر UUID را دارد و product_id یک عدد صحیح است و مرزهای آن چیست. هنگامی که product_id حاوی یک رشته باشد، به عنوان یک تخلف پرچمگذاری میشود. به طور مشابه، کلادفلر (Cloudflare) میتواند مقادیر نامعتبر UUID را شناسایی کند و زمانی که مشتری اجرای آن را فعال میکند، از رسیدن ورودیهای غیر UUID به کنترلکننده مربوطه جلوگیری کند. این فیلترهای ساده محدوده ورودیهایی را که یک مهاجم میتواند ارسال کند کاهش میدهد و از اکثریت قریب به اتفاق بردارهای حمله معمولی مانند تزریق SQL، اسکریپتنویسی بینسایتی، اجرای کد از راه دور و موارد دیگر جلوگیری میکند.
ناسازگار همیشه به معنای مخرب بودن نیست. انتشار یک برنامه، یک کلاینت جدید، یا یک درخواست غیرمعمول اما معتبر نیز ممکن است تفاوتی ایجاد کند. ما توصیه میکنیم در حالت مشاهده شروع کنید، تا مشتریان بتوانند تأثیر پروفایل را قبل از اجرا بررسی کنند.
ساختار مورد انتظار درخواستها را یاد بگیرید
برای تعیین ساختار درخواست پیشبینیشده برای یک برنامه وب یا رابط برنامهنویسی کاربردی (API)، پروفایلهای طرحواره (Schema Profiles) به طور معمول ترافیک مشاهده شده را تجزیهوتحلیل میکنند. هر پروفایل ممکن است شامل موارد زیر باشد، بستگی به ترافیک برنامه دارد:
- متغیرهای مسیر
- پارامترهای پرسوجو (Query parameters)
- هدرها و کوکیها
- ساختار بدنه (بدنه JSON یا با رمزگذاری فرم)
برای هر فیلد، سیستم نوع داده آن (عدد صحیح، رشته، بولین، آرایهها، UUID یا enum) و محدودیتهایی مانند بازههای عددی، شمارشهای کوتاه، طول رشتهها، و کلاسهای کاراکتر را یاد میگیرد.
یادگیری برای عملیاتی اعمال میشود که مشتریان برای پروفایلسازی انتخاب میکنند. در داراییهای وب (Web Assets)، یک عملیات اصطلاح کلادفلر (Cloudflare) برای یک عملیات است که با روش HTTP، الگوی نام میزبان، و الگوی مسیر آن شناخته میشود. داراییهای وب (Web Assets) به طور مداوم عملیات را کشف میکنند و آنها را در بخش Web Assets > Operations فهرست میکنند. مشتریان همچنین میتوانند عملیات را به صورت دستی اضافه کنند. پروفایلسازی به طور خودکار برای عملیات کشفشده شروع نمیشود، در حالی که عملیات ایجاد شده دستی هنگام ایجاد، پروفایلسازی را فعال میکنند. برای عملیات کشفشده، مشتری باید به طور عمدی گزینه Learn profile را از منوی سرریز عملیات انتخاب کند.
پس از فعال شدن پروفایلسازی، کلادفلر (Cloudflare) ترافیک واجد شرایط را جمعآوری میکند و یادگیری را به طور خودکار یک بار در هفته برای هر منطقه، با استفاده از موفقترین ترافیک اخیر اجرا میکند. یک عملیات به حداقل ۱۰۰۰ درخواست نیاز دارد که پاسخ 2xx را در هفت روز گذشته برای یادگیری فیلدها دریافت کرده باشند، و حداقل ۱۰۰۰۰ درخواست برای یادگیری مرزهای داده نیاز دارد. درخواستهای موفق میتوانند شامل رباتها و اسکنرها باشند، بنابراین مشتریان باید قبل از اجرای یک پروفایل یادگرفتهشده، آن را بررسی کنند. نقشه راه ما شامل اجازه دادن به مشتریان برای راهاندازی یادگیری در صورت تقاضا و حذف ترافیک خودکار است.
پس از یادگیری، پروفایلها را میتوان با انتخاب View details مربوط به عملیات و یافتن طرحواره یادگرفتهشده در پنل Security overview بررسی کرد. اگر یک طرحواره یادگرفتهشده نشان داده نشود، کلادفلر (Cloudflare) همچنان در حال جمعآوری دادهها برای پروفایل است. مشتریان همچنین میتوانند پروفایل را به عنوان یک فایل طرحواره OpenAPI v3 صادر کنند.
پروفایلهای یادگرفتهشده هر هفته با تغییر ترافیک برنامه بهروز میشوند. فیلدهای جدید اضافه میشوند و فیلدهایی که دیگر مشاهده نمیشوند حذف میشوند، بنابراین اعتبارسنجی ردیابی میکند که چگونه برنامه تغییر میکند. مشتریان میتوانند طرحواره یادگرفتهشده را با دانلود آن و بارگذاری آن در اعتبارسنجی طرحواره (Schema Validation) پین و ذخیره کنند.
قبل از مسدود کردن بررسی کنید
تجزیهوتحلیل امنیت (Security Analytics) اکنون شامل یک تب جدید Profile Analysis است. مشتریان میتوانند یک پروفایل اعتبارسنجی را انتخاب کنند و روندهای ترافیک، از جمله اینکه چه تعداد درخواست در طول هفت روز گذشته با پروفایل یادگرفتهشده مطابقت نداشته است را مشاهده کنند.
مشتریان میتوانند ترافیک سازگار و ناسازگار را بررسی کنند. آنها میتوانند وارد تخلفات شوند و گزارشهای نمونهبرداری شده را بررسی کنند تا ببینند تخلف در کجا رخ داده است، کدام فیلد تحت تأثیر قرار گرفته است، و چرا اعتبارسنجی با شکست مواجه شده است. تخلفات به ده دلیل دستهبندی میشوند، از جمله عدم تطابق نوع، مقادیر خارج از محدوده یادگرفتهشده، و فرمتهای نامعتبر.
هنگامی که یک تیم تأثیر را درک کرد، میتواند از قوانین امنیتی (Security Rules) برای واکنش به سیگنال استفاده کند. یک قانون میتواند کل یک برنامه را پوشش دهد یا به مسیرها، عملیات یا فیلدهای انتخاب شده محدود شود. تیمها کنترل میکنند که کجا نظارت کنند و کجا مسدود کنند.
امنیت ایجابی برای ترافیک وب و رابط برنامهنویسی کاربردی (API)
حالتهای یادگیری سنتی فایروال برنامه وب (WAF) میتوانند خطمشیهای امنیتی ایجابی دقیقی بسازند، اما اغلب از اپراتورها میخواهند پیشنهادات را بررسی کنند، تغییرات را مرحلهبندی کنند، و موجودیتهای خطمشی را حفظ کنند. پروفایلهای طرحواره کلادفلر (Cloudflare) اعتبارسنجی را به عنوان یک فیلد درخواست به نام cf.schema_validation.learned.violated آشکار میکنند و به مشتریان اجازه میدهند آن را با ویژگیهای درخواست، امتیاز ربات (Bot Score)، امتیاز حمله (Attack Score)، و سایر سیگنالها در یک قانون امنیتی واحد ترکیب کنند. با ایجاد قوانین ساده، تیمها میتوانند تشخیصها را ترکیب کنند و به دقت تعریف کنند که چه زمانی کلادفلر (Cloudflare) باید اقدام کند.
دو دسته دیگر از فیلدها برای ایجاد قوانین هدفمندتر در دسترس هستند. ابتدا فیلدهایی وجود دارند که محل وقوع تخلف را جمعآوری میکنند. برای مثال، بر اساس مثال اولیه ما، اگر مقدار پارامتر پرسوجوی product_id با پروفایل مطابقت نداشته باشد، فیلد زیر پر خواهد شد: cf.schema_validation.uploaded.query.violated_parameters = ["product_id"]. این به مشتریان اجازه میدهد قوانینی ایجاد کنند که امنیت ایجابی را فقط روی فیلدهای خاصی اعمال کنند یا آنها را از اجرا مستثنی کنند.
دسته دوم فیلد، پارامترهای جدیدی را که در پروفایل وجود ندارند، جمعآوری میکند. این زمانی مفید است که میخواهید درخواستهایی با پارامترهای جدید را مدیریت کنید (مثلاً هنگام استقرار نسخه جدیدی از برنامه خود)، یا با مسدود کردن هر پارامتر شناسایینشده یا تعریفنشده در گذشته، وضعیت خود را حتی بیشتر محدود کنید.
مورد استفاده | فیلد | مقادیر مکان | مثال |
|---|---|---|---|
شناسایی محل وقوع تخلف در درخواست |
|
|
|
شناسایی اینکه آیا یک پارامتر اعلامنشده در درخواست دیده میشود |
|
|
|
در راه است: تجزیهوتحلیل فیلدهای حیاتی، چگونه به شما در راهاندازی امنیت ایجابی کمک میکنیم
حتی با وجود طراحی اجرایی انعطافپذیر، مشتریان به ما میگویند که استقرار یک خطمشی امنیت ایجابی از نظر عملیاتی پیچیده است. یک برنامه بزرگ میتواند هزاران عملیات با دهها هزار فیلد داشته باشد. اما همه عملیات و فیلدها ریسک یکسانی ندارند. محتواسزی (Contextualization) و اولویتبندی به تیمهای امنیتی کمک میکند تا امنیت ایجابی را به روشی کنترلشده و مطمئن راهاندازی کنند.
مدلهای زبانی بزرگ (LLMs) میتوانند به محواسزی پروفایلهای یادگرفتهشده برای ارائه بینشهای اضافی کمک کنند. برای برنامههای وب، مسیرها و نام فیلدها معمولاً خودتوضیح هستند، بنابراین معنایی دارند. برای مثال، ما اجرای یک مدل میزبانی شده روی Workers AI را در سراسر پروفایلهای یادگرفتهشده چهار برنامه تصادفی آزمایش کردیم. این مدل با موفقیت پیوند بین clientId و account_number را در دو برنامه از یک سیستم، و همچنین وابستگی رایج استفاده از رمز عبور یکبار مصرف (OTP) برای احراز هویت پیشرفته شناسایی کرد. برجسته کردن این زمینه تیمهای امنیتی را قادر میسازد تا اقداماتی مانند پیکربندی قوانین محدودیت نرخ (Rate Limiting Rules) را برای دفاع در برابر حملات بروت فورس متمرکز بر حساب کاربری اولویتبندی کنند.
این بینشهای مبتنی بر مدل زبانی بزرگ (LLM) مستقیماً در داشبورد در کنار هر عملیات در Web Assets قابل دسترسی خواهند بود. پیش از اجرای استقرار با یک کلیک، تیمها میتوانند توصیههای قانونی طراحی شده برای ایمنسازی این فیلدهای کلیدی را ارزیابی کنند، که با شبیهسازی کاهش با استفاده از ترافیک گذشته پشتیبانی میشود تا اعتماد به دست آورید.
فراتر از محواسزی عملیات با بینشهای معنایی و شاخصهای ریسک، ما در حال توسعه معیارهای اضافی برای مرتبسازی عملیات با استفاده از روندهای درخواست تاریخی و سیگنالها هستیم. این امر تیمهای امنیتی را قادر میسازد تا تلاشهای کاهش را ابتدا روی عملیات با بالاترین اولویت متمرکز کنند، از جمله:
- از دست دادن دادهها: روند صعودی افزایش غیرمعمول انتقال داده
- فعالیت شناسایی: تعداد بالای پارامترهای ناشناخته
- اهمیت تجاری: حجم کل ترافیک همبستگی با شناسههای منحصربهفرد session IDs ارائه شده
چه چیزی امروز در دسترس است
مشتریانی که دارای امنیت رابط برنامهنویسی کاربردی (API Security) هستند از قبل دسترسی دارند، با توجه به اینکه این یک پسوند از یادگیری طرحواره و اعتبارسنجی طرحواره است. ما در حال باز کردن یک نسخه بتای بسته برای مشتریانی بدون امنیت رابط برنامهنویسی کاربردی (API Security) هستیم که میتوانند پروفایلهای طرحواره را روی ترافیک برنامه وب تولیدی آزمایش کنند، با تیم محصول ملاقات کنند، و بازخورد مفصلی در مورد دقت پروفایل، تجزیهوتحلیل، و کنترلهای اجرایی ارائه دهند. دسترسی با دعوت است و به معنای دسترسی به برنامه در آینده نیست. اگر شما یک مشتری امنیت رابط برنامهنویسی کاربردی (API Security) نیستید و میخواهید دسترسی پیدا کنید، با تیم حساب خود تماس بگیرید.
این ویژگی از مسیرها، پارامترهای پرسوجو، هدرها، کوکیها، بدنههای درخواست JSON، و بدنههای درخواست رمزگذاری شده با فرم پشتیبانی میکند. پروفایلها میتوانند اعداد صحیح، رشتهها، UUIDها، آرایهها، و enumهای حاوی حداکثر سه مقدار را اعتبارسنجی کنند. فرمهای چندبخشی (Multipart)، گرافکیوال (GraphQL)، و XML در حال حاضر پشتیبانی نمیشوند.
پروفایلهای طرحواره هر مقدار را زمانی که یک نام پارامتر تکرار میشود اعتبارسنجی میکنند، اما آنها یکتایی پارامتر را اجرا نمیکنند. آنها همچنین پارامترهای مورد نیاز را یاد نمیگیرند و اجرا نمیکنند و یک درخواست را صرفاً به این دلیل که شامل یک پارامتر جدید است مسدود نمیکنند.
جلوتر از آسیبپذیریهای روز صفرم باشید
ایده ما برای پروفایلهای کاربردی (Application Profiles) به اعتبارسنجی ساختار درخواست ختم نمیشود. همان گردش کار میتواند ویژگیهای دیگر انتظارات یک برنامه (مانند ASNها یا JA4ها) را یاد بگیرد، زمانی که ترافیک از آنها منحرف میشود را توضیح دهد، و به تیمهای امنیتی در تعریف اینکه «خوب» چه شکلی است اطمینان دهد. با یک گردش کار امنیتی پیشگیرانه (Proactive Security)، ما به تیمهای امنیتی کمک میکنیم تا جلوتر از آسیبپذیریهای روز صفرم (zero-days) باشند!
منبع: blog.cloudflare.com
