یک مهاجم ناشناس ۱۷ ماه است اطلاعات پورتالهای Salesforce و ServiceNow را میخواند
یک کمپین سایبری به نام City-Forum با سوءاستفاده از دسترسی کاربران مهمان، پورتالهای Salesforce و ServiceNow را در سراسر جهان بررسی میکند. جزئیات این حمله و راههای مقابله.
محققان امنیت سایبری کمپینی را شناسایی کردهاند که بدون استفاده از آسیبپذیری یا سرقت اطلاعات ورود، بهعنوان کاربر مهمان وارد پورتالهای Salesforce و ServiceNow شده و دادههای قابل دسترس را بررسی و استخراج میکند.
بیشتر گزارشهای امنیت سایبری با یک نقص یا نرمافزار آسیبپذیر آغاز میشوند؛ اما داستان این حمله متفاوت است. در این مورد، همهچیز ظاهراً مطابق طراحی سرویسها کار میکرده است؛ مشکل اصلی، سطح دسترسی بیش از حد کاربران مهمان بوده است.
محققان شرکت Reco مدتی است کمپینی با نام City-Forum را زیر نظر دارند. نام این کمپین از دامنهای گرفته شده که در سال ۲۰۰۲ ثبت شده، بعدها رها شده و اکنون به یک سرور اجارهای عمومی از یک ارائهدهنده میزبانی آلمانی متصل است.
از طریق همین زیرساخت، مهاجمان در سراسر جهان درخواستهایی را به پورتالهای Salesforce و ServiceNow ارسال کردهاند و توانستهاند اطلاعات قابل دسترس برای کاربران مهمان را دریافت کنند.
این فعالیت همچنان ادامه دارد و حجم آن نیز افزایش یافته است. طبق بررسی Reco، تمام درخواستهایی که از این آدرس مشاهده شدهاند، بهصورت Guest یا کاربر مهمان ارسال شدهاند.
اهداف این کمپین طیف گستردهای از سازمانها را شامل میشوند؛ از اپراتورهای مخابراتی و بانکها و شرکتهای خدمات مالی گرفته تا شرکتهای نرمافزاری سازمانی، شرکتهای حوزه امنیت و حریم خصوصی داده و همچنین پورتالهای بخش دولتی.
هیچ آسیبپذیریای هک نشده است
یکی از مهمترین نکات این کمپین آن است که مهاجمان برای دسترسی به اطلاعات نیازی به سوءاستفاده از یک آسیبپذیری نرمافزاری یا سرقت رمز عبور نداشتند.
آنها صرفاً بهعنوان یک بازدیدکننده ناشناس وارد پورتالهای عمومی مشتریان شده و به شکل مکرر از سیستمها درخواست اطلاعات کردهاند؛ سیستمهایی که بر اساس تنظیمات خود، این اطلاعات را در اختیار کاربران مهمان قرار میدادند.
بررسی Passive DNS نشان میدهد دامنه مورد استفاده مهاجمان حداقل از مارس ۲۰۲۵ به این آدرس متصل بوده است. بنابراین زیرساخت حمله برای مدت قابلتوجهی فعال بوده، هرچند زمان دقیق آغاز اسکنها مشخص نیست.
به بیان ساده، مشکل اصلی این نیست که مهاجم توانسته یک درِ قفلشده را باز کند؛ مشکل این است که برخی از درها اساساً برای افراد ناشناس باز گذاشته شده بودند.
کاربر مهمان؛ درِ ورودی فراموششده
در Salesforce، هر سایت Experience Cloud یک حساب کاربری دائمی با عنوان Guest User دارد. ServiceNow نیز برای هر نمونه خود یک کاربر مهمان دارد.
این کاربر یک حساب واقعی با پروفایل و مجوزهای مشخص است. هنگامی که یک فرد بدون ورود به حساب کاربری، پورتال پشتیبانی یا پایگاه دانش یک سازمان را باز میکند، سیستم او را عملاً بهعنوان همین کاربر مهمان در نظر میگیرد.
کاربر مهمان قابل حذف نیست و همراه سرویس ارائه میشود؛ اما سطح دسترسی آن توسط تنظیمات سازمان تعیین میشود.
بنابراین هر دادهای که از این پورتالها خارج شده، از نظر فنی دادهای بوده که تنظیمات سیستم اجازه دسترسی به آن را داده است.
نایتای باخراخ، پژوهشگر امنیتی Reco، مشکل اصلی را اینگونه توضیح میدهد: تفاوت مهمی میان «آنچه عمومی است» و «آنچه باید عمومی باشد» وجود دارد و مهاجم دقیقاً از همین شکاف استفاده کرده است.
چرا این کمپین با حملات قبلی متفاوت است؟
سوءاستفاده از کاربران مهمان دارای دسترسی بیش از حد در Salesforce موضوع جدیدی نیست و حتی ابزارهای آمادهای برای چنین حملاتی وجود دارد.
اما مهاجم این کمپین از ابزارهای عمومی موجود استفاده نکرده است.
در عوض، ابزارهای اختصاصی خود را توسعه داده است.
بخش قابلتوجهی از فعالیت مهاجم همچنان روی چارچوب قدیمیتر Aura در Salesforce متمرکز بوده است؛ چارچوبی که پیشتر نیز به دلیل امکان سوءاستفاده از حساب مهمان مورد توجه مهاجمان قرار گرفته بود.
Reco در یکی از اهداف شناساییشده بیش از ۵۶۰ هزار رویداد از یک آدرس IP را در طول دوره کمپین مشاهده کرده که تقریباً تمام آنها مربوط به بررسی و شناسایی منابع Aura بودهاند.
اما بخش جالبتر ماجرا، ابزارهایی است که مهاجم برای دو حوزه کمتر بررسیشده توسعه داده است.
تمرکز روی چارچوب جدید Salesforce
یکی از این موارد، لایه داده مربوط به چارچوب جدیدتر سایتهای Salesforce است؛ بخشی که ابزارهای حمله موجود معمولاً آن را نادیده میگیرند.
Reco این وضعیت را نوعی نقطه کور در ابزارهای تهاجمی توصیف میکند.
مهاجم با توسعه ابزار اختصاصی توانسته این بخش را نیز بررسی کند؛ موضوعی که نشان میدهد حملهکننده صرفاً از یک اسکنر عمومی استفاده نکرده و زمان قابلتوجهی را برای شناخت معماری سرویسها صرف کرده است.
ServiceNow نیز هدف قرار گرفته است
بخش دیگر این کمپین به ServiceNow مربوط میشود.
محققان Reco یک endpoint جستوجوی پورتال در ServiceNow را شناسایی کردند که مستندات عمومی مشخصی برای آن وجود ندارد.
آنها با بررسی کد مربوط به بخش جستوجو در یک پورتال استاندارد، نحوه عملکرد این endpoint را کشف کردند.
خطر اصلی این endpoint صرفاً به دلیل مستند نبودن آن نیست؛ بلکه به این دلیل است که عمومی بودن آن کاملاً عمدی است و میزان اطلاعاتی که بازمیگرداند به تنظیمات منابع پشت آن بستگی دارد.
دو منبع رایج که بهصورت پیشفرض در پلتفرم ارائه میشوند رفتار متفاوتی دارند. یکی از آنها پیش از دسترسی به داده بررسی میکند که کاربر وارد حساب شده باشد، اما دیگری چنین بررسیای ندارد و صرفاً به مجوزهای خواندن تعریفشده برای هر پایگاه دانش متکی است.
در نتیجه، امنیت نهایی به پیکربندی سازمان بستگی دارد.
مشکل اصلی: مجوز بیش از حد کاربران مهمان
Reco میگوید مهمترین وجه مشترک در دو پلتفرم اعطای دسترسی بیش از حد به کاربران مهمان یا ناشناس بوده است.
به گفته باخراخ، این مورد پرتکرارترین پیکربندی نادرست در هر دو پلتفرم بوده و ریشه اصلی مشکل محسوب میشود.
البته پرتکرارترین مشکل لزوماً همان موردی نیست که بیشترین اثر امنیتی را دارد.
در Salesforce، قوانین اشتراکگذاری برای کاربران مهمان (Guest Sharing Rules) از مهمترین نقاطی هستند که باید اصلاح شوند، اما بررسی امنیت نباید تنها به همین مورد محدود شود.
آیا میتوان فهمید چه اطلاعاتی سرقت شده است؟
یکی از نگرانکنندهترین بخشهای این حمله، محدودیت لاگهای امنیتی است.
اگر سازمانی این فعالیت را در لاگهای خود پیدا کند، الزاماً نمیتواند مشخص کند مهاجم دقیقاً چه اطلاعاتی را مشاهده یا دریافت کرده است.
در ServiceNow، لاگ تراکنش نشان میدهد که یک جستوجو انجام شده و تقریباً چه میزان داده بازگردانده شده است، اما عبارت جستوجوشده را ثبت نمیکند.
Salesforce اطلاعات بیشتری درباره نوع درخواستها ارائه میدهد، اما حتی در اینجا نیز لاگها لزوماً مشخص نمیکنند که چه رکوردها یا فیلدهایی در اختیار مهاجم قرار گرفتهاند.
در نتیجه، لاگها بیشتر نشان میدهند مهاجم چه کاری انجام داده است، نه دقیقاً چه دادهای را با خود برده است.
برای مشخص شدن این موضوع، سازمان باید درخواستهای مشابه را در محیط خودش شبیهسازی کرده و پاسخ سیستم را بررسی کند.
به عبارت دیگر، برای فهمیدن اینکه یک کاربر ناشناس چه چیزهایی میتواند ببیند، تیم امنیتی باید خودش با همان سطح دسترسی ناشناس وارد سیستم شود.
ServiceNow چگونه اطلاعات قابل دسترسی را شناسایی میکند؟
در ServiceNow، یک نکته جالب وجود دارد.
endpoint جستوجوی پورتال در پاسخ به یک درخواست ناشناس، چه اطلاعاتی برای ارائه داشته باشد و چه نداشته باشد، میتواند همان کد HTTP 201 را برگرداند.
بنابراین صرف مشاهده پاسخ موفق، نشان نمیدهد که دادهای در اختیار کاربر قرار گرفته است.
تفاوت اصلی در محتوای بدنه پاسخ است.
مهاجم نیز از همین ویژگی استفاده کرده و با آزمایش عبارتهای مختلف جستوجو، پورتالها را بررسی کرده است. هر عبارتی که پاسخی حاوی اطلاعات ایجاد میکرد، میتوانست سرنخی درباره محتوای قابل دسترس آن پورتال ارائه دهد.
اگر این ترافیک را در سازمان خود پیدا کردیم چه کنیم؟
محققان Reco چند اقدام فوری برای بررسی این فعالیت پیشنهاد میکنند.
در Salesforce
لاگهای Event Monitoring مربوط به AuraRequest و Sites را بررسی کنید و به دنبال درخواستهایی باشید که:
- با نوع کاربر Guest انجام شدهاند.
- حجم بالایی از درخواستهای
getItemsوgetConfigDataدارند. - شامل بررسی نسخههای مختلف GraphQL در مسیرهای
/webruntime/.../vNN.0/graphqlهستند. - به مسیرهای
/SiteRegisterو/CommunitiesSelfRegدسترسی داشتهاند.
وجود حجم بالایی از چنین درخواستهایی میتواند نشانهای از اسکن یا شناسایی خودکار پورتال باشد.
در ServiceNow
در لاگ syslog_transaction به دنبال درخواستهای /api/now/sp/search باشید که با کاربر مهمان انجام شدهاند.
سپس این درخواستها را بر اساس طول خروجی مرتب کنید.
پاسخ یک جستوجوی خالی معمولاً اندازهای کوچک و نسبتاً ثابت دارد؛ بنابراین پاسخهایی که حجم بسیار بیشتری دارند، میتوانند نشاندهنده بازگشت رکوردها و دادههای واقعی باشند.
چگونه امنیت Salesforce را افزایش دهیم؟
برای کاهش سطح دسترسی کاربران مهمان در Salesforce، اقدامات زیر پیشنهاد میشود:
- قوانین Guest Sharing را محدود و بازبینی کنید.
- مجوزهای مربوط به اشیا و فیلدها را از کاربران مهمان حذف یا محدود کنید.
- گزینههای Access Activities و API Enabled را برای کاربر مهمان غیرفعال کنید.
- اگر قابلیت ثبتنام خودکار مورد نیاز نیست، آن را غیرفعال کنید.
- دسترسی کاربران مهمان به فایلها و مشاهده اعضا را محدود کنید.
- در سایتهای LWR، در صورت غیرضروری بودن، گزینه Allow guest users to access public APIs را غیرفعال کنید.
جمعبندی
کمپین City-Forum نشان میدهد که برای نفوذ به یک سازمان همیشه به یک آسیبپذیری پیچیده یا رمز عبور سرقتشده نیاز نیست.
گاهی اوقات، یک حساب مهمان با دسترسی بیش از حد میتواند همان نقطه ورود مورد نیاز مهاجم باشد.
مهاجمان این کمپین حداقل از مارس ۲۰۲۵ از یک زیرساخت ثابت برای بررسی پورتالهای Salesforce و ServiceNow استفاده کردهاند و در بسیاری از موارد صرفاً با ارسال درخواستهای ناشناس توانستهاند اطلاعاتی را دریافت کنند که تنظیمات سازمانی برای کاربران عمومی قابل دسترس کرده بود.
این اتفاق یک هشدار مهم برای سازمانهایی است که از پورتالهای مشتری، پایگاههای دانش و سرویسهای ابری استفاده میکنند: «عمومی بودن» یک داده با «مناسب بودن برای انتشار عمومی» یکسان نیست.
بازبینی دورهای مجوزهای Guest، اعمال اصل حداقل دسترسی، محدود کردن APIهای عمومی و بررسی دقیق لاگهای دسترسی میتواند از تبدیل یک پیکربندی ساده به یک مسیر نشت گسترده اطلاعات جلوگیری کند.