فرار از سندباکس سرویسناو با یک پارامتر ساده
خلاصهٔ کاملتر
تیم تحقیقاتی Searchlight Cyber تو یه پست جدید نوشته که تونسته یه آسیبپذیری اجرای کد از راه دور و بدون احراز هویت توی ServiceNow پیدا کنه؛ باگی که به گفتهٔ نویسنده هم خود نمونهٔ سرویسناو و هم سرورهای پراکسی وصل بهش رو کامل در اختیار مهاجم میذاره. این دومین تحقیق این تیم روی اجرای اسکریپت پیش از احراز هویت تو این پلتفرمه.
سرویسناو برای کوئری زدن به جدولهاش زبان متنی مثل SQL نداره و همهچیز از API ساختاریافتهٔ GlideRecord میگذره. مشکل اینجاست که تو خیلی از صفحههای پلتفرم، ورودی خام کاربر مستقیم میره داخل addQuery — مثلاً پارامترهایی مثل sysparm_category یا sysparm_assessable_type توی صفحههایی که بدون لاگین هم باز میشن.
نویسنده میگه تلاشهای معمول برای تزریق جواب نداده، ولی وقتی رفتن سراغ مستندات فیلترهای کوئری، یه رفتار عجیب پیدا کردن: مقداری که با واژهٔ javascript و یه دونقطه شروع بشه، قبل از اجرای کوئری بهعنوان کد جاوااسکریپت ارزیابی میشه. یعنی همون ورودی سادهٔ کاربر عملاً به اجرای اسکریپت روی سرور تبدیل میشه، اون هم توی کلی نقطهای که احراز هویت لازم نداره.
فقط این وسط یه مانع هست: سرویسناو برای همین ورودیها یه سندباکس اسکریپت جداگانه و سختگیرانه داره. توش شیء gs نسخهٔ محدودشدهست، تعداد خیلی کمی کلاس جاوا در دسترسه، جدولها فقطخواندنی و پشت ACL سفتوسختن، و eval و ساخت تابع هم ممنوعه — چون کدی که با اونها اجرا بشه از قید سندباکس آزاده.
راه فرار از دل خود مکانیزم gs.include درمیاد؛ همون تابعی که کتابخانههای آمادهٔ پلتفرم رو لود میکنه و برخلاف کد داخل سندباکس، لحظهٔ لود اجازهٔ ساخت تابع داره. نویسنده توضیح میده که با بازنویسی یکی از توابع کمکی سراسری که موقع لود شدن این کتابخانهها صدا زده میشه، میشه کاری کرد که خود فرآیند include رشتهٔ دلخواه مهاجم رو به یه تابع تبدیل کنه و بعد همون تابع اجرا بشه — بیرون از سندباکس.
بعد از فرار، عملاً محدودیتی نمیمونه: خوندن هر جدولی، ساختن کاربر ادمین و اجرای دستور روی سرورهای پراکسیای که معمولاً وسط شبکهٔ داخلی شرکتها نشستن. همین ترکیب باعث میشه شدت باگ بحرانی حساب بشه.
به گفتهٔ نویسنده، گزارش اول آوریل ۲۰۲۶ به سرویسناو رفته و شرکت ظرف ۲۴ ساعت یه مهار اضطراری روی همهٔ نمونههای ابری گذاشته و بعد وصلههای اصلی رو منتشر کرده؛ شناسهٔ باگ CVE-2026-6875 هست. بعدش هم قابلیت Guarded Script معرفی شده که توی کانتکست سندباکس فقط یه عبارت ساده رو قبول میکنه: بدون تعریف متغیر، بدون if و حلقه، بدون تعریف تابع و بدون عملگر انتساب.
نکات کلیدی:
- آسیبپذیری بدون احراز هویت با شناسهٔ CVE-2026-6875 که به اجرای کد کامل روی نمونهٔ ServiceNow میرسه
- ریشه: ارزیابی شدن مقدارهایی که با پیشوند اسکریپتی javascript شروع میشن، توی API کوئری GlideRecord
- سندباکس اسکریپت با سوءاستفاده از مکانیزم gs.include دور زده میشه
- تأثیر: خوندن همهٔ جدولها، ساخت کاربر ادمین و اجرای دستور روی سرورهای پراکسی داخلی
- سرویسناو ظرف ۲۴ ساعت مهار داده و با Guarded Script نحو مجاز داخل سندباکس رو خیلی محدود کرده




