آسیب‌پذیری افشای اطلاعات در پلتفرم ServiceNow

آسیب‌پذیری افشای اطلاعات در پلتفرم ServiceNow

تاریخ ایجاد

این هفته، service now در سایت پشتیبانی‌اش اعلام کرد که پیکربندی نادرست این نرم‌افزار می‌تواند منجر به دسترسی ناخواسته به اطلاعات حساس شود.
این موضوع برای شرکت‌هایی که از service now استفاده می‌کنند، دغدغه بزرگی‌ست چرا که این آسیب‌پذیری ممکن است منجر به نشت اطلاعات عمده‌ای از جمله داده‌های حقوقی آنها شود. Sevice now از آن زمان اقداماتی را برای برطرف کردن این نقص امنیتی آغاز کرده‌است.
ServiceNow یک پلتفرم مبتنی بر ابر است که برای اتوماسیون مدیریت خدمات فناوری اطلاعات، مدیریت عملیات فناوری اطلاعات، و مدیریت کسب و کار فناوری اطلاعات برای خدمات مشتری، و همچنین منابع انسانی، عملیات امنیتی و غیره استفاده می‌شود.
این برنامه SaaS(Software as a Service) به دلیل ماهیت زیرساختی‌اش، توسعه‌پذیری به عنوان پلتفرم توسعه و دسترسی به داده‌های محرمانه و اختصاصی در سراسر سازمان، یکی از برترین برنامه‌های کاربردی برای کسب و کار در نظر گرفته می‌شود.
یکی از بخش‌های مهم این نرم‌افزار، Simple List است که یک ویجت رابط است که داده های ذخیره شده در جداول را جمع آوری کرده و از آنها در داشبورد استفاده می‌کند.
پیکربندی پیش‌فرض SimpleList به کاربران احرازهویت نشده اجازه دسترسی از راه دور به داده‌های درون جدول‌ها را می‌دهد. این جداول اطلاعات حساسی را از جمله محتوای تیکت‌های IT‌، پایگاه‌های اطلاعات طبقه‌بندی‌شده درون‌سازمانی، جزئیات اطلاعات کارکنان و... در بر می‌گیرند.
این پیکربندی‌های نادرست در واقع از زمان معرفی لیست‌های کنترل دسترسی (Access Control) در سال 2015 وجود داشته است  و البته هنوز اتفاقی که از این مشکل برآمده باشد گزارش نشده‌ است.  با این وجود، با توجه به انتشار تحقیقات انجام‌شده در مورد نشت اطلاعات، این مشکل می‌تواند بیش از پیش اطلاعات سازمان‌ها و شرکت‌ها را به خطر بیاندازد.
این نشتی، صرفاً حاصل یکی از پیکربندی‌های پیش‌فرض بود و صدها پیکربندی دیگر موجودند که می‌توانند در معرض حملات کنترل‌دسترسی، نشت اطلاعات، هجمه‌ی بدافزار و دیگر موارد قرار بگیرند و باید ایمن‌سازی شوند.
سازمان‌هایی که از راه‌حل‌های مدیریت وضعیت امنیتی SaaS SSPM(SaaS Security Posture Management solution)  استفاده می‌کنند، راحت‌تر می‌توانند پیکربندی‌های نادرست و خطرناک را تشخیص داده و سازگاری یا عدم‌سازگاری‌ آن‌ها را بررسی کنند.
باید این نکته را مدنظر قرار داد که این مشکل، ناشی از یک آسیب‌پذیری در کد برنامه نیست بلکه از یک پیکربندی داخل نرم‌افزار نتیجه شده ‌است.
این پدیده در کنترل‌های امنیتی در یک ویجت لیست کنترل دسترسی ServiceNow به نام Simple list‌ ریشه دارد که رکورد‌ها را در یک جدول که به سادگی قابل خواندن باشد قرار می‌دهد. این جدول‌ها داده‌ها را از منابع مختلفی مرتب کرده و با تنظیمات پیش‌فرضی که آنها را به صورت عمومی منتشر می‌کنند پیکربندی می‌شوند.
1.    هنگام استفاده از ServiceNow کاربران از لیست‌های کنترل دسترسی(ACL(Access Control Lists)) استفاده می‌کنند که دسترسی به جدول‌ها و ستون‌ها در پلتفرم‌های مختلف را محدود می‌کنند.
2.    تنظیمات ServiceNow به صورت پیش‌فرض بر deny قرار داده شده یعنی هرگونه فقدان ACL در برابر یک منبع یا سلسله‌مراتب بالاتر از آن، منجر به عدم اجازه دسترسی می‌شود.
3.    هریک از ACL‌ها یک Three-part check دارند که هر چک “خالی” به true، معادل اجازه دسترسی تفسیر می‌شوند.
4.    مشتریان می‌توانند یک ACL با چک “خالی” را برای “نقش‌ها”، “شرایط” و “اسکریپت‌ها” تنظیم کنند.
5.    در صورتی که یک ACL به این شکل ساخته شود، سیستم ACL زیربنایی، به هر کاربر از جمله کاربر مهمان، اجازه دسترسی به منبع مورد نظر را می‌دهد.
6.    اگر یک کاربر احراز هویت نشده ‌باشد، نرم‌افزار شدیداً صفحاتی که کاربر می‌تواند بخواند را کنترل می‌کند و یک لیست بسیار محدود از صفحاتی که اجازه رویت آن‌ها به کاربر داده می‌شود ایجاد می‌کند.
7.    شرکت‌هایی که منابعی دارند که از پورتال‌های عمومی پشتیبانی می‌کنند، مثلا ابزارک‌های پورتال خدماتی که فعال هستند و به صورت عمومی تنظیم شده‌اند، یک استثنا از این کنترل هستند. زیرا طبق تنظیمات اولیه طراحی نرم‌افزار، برای کاربران احراز‌هویت نشده نیز قابلیت دسترسی دارند و از این رو مکانیزم‌های کنترلی رو آن‌ها اعمال نمی‌شوند.
8.    از میان پورتال‌هایی که بیان شد، ویجت پورتال ویژه SimpleList‌ در دسته‌ای قرار می‌گیرد که مکانیزم‌های کنترلی بر آن اعمال نمی‌شوند.

از آنجایی که این جداول SimpleList هسته ServiceNow هستند، مشکل در فقط یک تنظیمات خاص نبود که بتوان به‌راحتی آن را برطرف کرد. باید در موقعیت‌های مختلفی درون نرم‌افزار و با حفظ ترکیبی که با ویجت رابط کاربری داشتند و در مورد تمام حساب‌های کاربری اصلاح می‌شد. آنچه که این پدیده را حتی پیچیده‌تر می‌کرد، این بود که تغییر یک تنظیمات خاص به تنهایی می‌توانست تمام جریانات کاری(workflow) متصل به simple list‌ را برهم بزند که منجر به تخریب شدید پردازه‌های فعلی می‌شد.
 

توصیه‌های امنیتی
مطابق آنچه ServiceNow در مقاله‌ای در مورد این آسیب‌پذیری منتشر کرد، ارزیابی قرارگیری در معرض و اقدامات اصلاحی شامل موارد ذیل می‌شوند:

  •    بررسی لیست‌های کنترل دسترسی‌ای که یا خالی و یا حاوی نقش “عمومی(public)” هستند.
  •     بازبینی ویجت‌های عمومی و تغییر وضعیت نقش “عمومی” در موقعیت‌هایی که با موارد استفاده‌ آنها مطابقت ندارد.
  •     به کارگیری اقدامات کنترل دسترسی سخت‌گیرانه‌تر با استفاده از کنترل‌های داخلی ارائه شده توسط ServiceNow، مانند کنترل دسترسی آدرس IP یا تأیید اعتبار تطبیقی.
  •     نصب افزونه ServiceNow Explicit Roles. ServiceNow بیان می‌کند که این افزونه از دسترسی کاربران خارجی به داده‌های داخلی جلوگیری می‌کند و نمونه‌هایی که از این افزونه استفاده می‌کنند تحت تأثیر این مشکل قرار نمی‌گیرند. (این افزونه تضمین می‌کند که هر ACL (لیست کنترل دسترسی) حداقل نیاز به یک نقش را اعلام می‌کند.)

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

جلوگیری خودکار از نشت داده:
سازمان‌ها و شرکت‌هایی که از راه‌حلSSPM  استفاده می‌کنند، مانند نرم‌افزار Adaptive Shield، می‌توانند پیکربندی ServiceNow و هر نرم‌افزار SaaS‌ دیگری را ببیند و آسیب ناشی از هر نقصی را کاهش دهند.

Adaptive Shield‌

داشبورد Adaptive Shield‌ با فریم‌ورک سازگاری: پیکربندی نادرست ویجت فهرست عمومی ServiceNow KB1553688

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

منبع خبر:
 

[1] https://thehackernews.com/2023/10/servicenow-data-exposure-wake-up-call.html?m=1