یک محقق ۱۶ ساله با نام مستعار Faav، نقص امنیتی در سرویس تحلیل دادههای داخلی مایکروسافت به نام Titan کشف کرد. این آسیبپذیری میتوانست به مهاجم اجازه دهد تا کوئریهای SQL غیرمجاز را در محیطی اجرا کند که طبق متادیتای آن، حدود ۱۷.۳ تریلیون ردیف داده در آن ذخیره شده است.
جزئیات فنی آسیبپذیری
سرویس Titan یک ابزار تحلیل داخلی است که رابط وب آن تنها برای کارکنان مایکروسافت محدود شده بود، اما API آن از طریق یک میزبان Azure Cloud Services قابل دسترسی بود. مشکل اصلی این بود که Titan چندین ادعا (Claim) را در توکنهای احراز هویت بررسی میکرد، اما امضای توکنها (Token Signatures) را تایید نمیکرد. این نقص به مهاجم اجازه میداد تا با جعل هویت کاربر دیگری، به سرویس دسترسی پیدا کند.
مسیر دسترسی به سطح Administrator
این محقق در جریان شرکت در برنامه Bug Bounty مایکروسافت، از ابزاری به نام Antares (یک ابزار پژوهشی مبتنی بر AI) برای بررسی سرویس استفاده کرد. او متوجه شد که نقطه انتهایی /v2/Query کوئریهای SQL را میپذیرد و نیاز به احراز هویت دارد.
- او با تست بررسیهای JSON Web Token (JWT) دریافت که تغییر در ادعاهای توکن، حتی بدون تغییر در امضا، منجر به خطاهای اعتبارسنجی متفاوتی میشود.
- سپس او یک JWT بدون امضا با استفاده از هدر
alg:noneایجاد کرد. - این توکن بدون امضا توانست از بررسیهای Tenant، Audience و Application عبور کند.
- با تغییر ادعای
upnبهadmin، سیستم Titan او را به عنوان کاربر با شناسه ۱ شناسایی کرده و نقش Admin را به او اختصاص داد.
Faav در وبلاگ خود اشاره کرد که Titan محتویات JWT را اعتبارسنجی میکرد اما هرگز امضا را که مهمترین بخش هر بررسی احراز هویت است، تایید نمیکرد.
تاثیر و ابعاد دادهها
این محقق تاکید کرد که دسترسیهای او محدود به متادیتا و نمونههای محدودی از ردیفها برای اثبات نقص بوده و هیچگونه داده مشتری یا اطلاعات شخصی (PII) را لمس نکرده است. با این حال، بررسی متادیتای پایگاه داده نشان داد که ۱۷ تحلیلگر دیتابیس فعال هستند که در مجموع حدود ۱۷.۳ تریلیون ردیف داده را شامل میشوند (که شامل دادههای تاریخی و تکراری نیز هست).
پاسخ مایکروسافت و توصیههای امنیتی
این مورد در تاریخ ۵ سپتامبر به مرکز پاسخ امنیتی مایکروسافت (MSRC) گزارش شد و در ۹ سپتامبر API مربوطه مسدود گردید. مایکروسافت برای این گزارش مبلغ ۵,۰۰۰ دلار پاداش پرداخت کرد.
Ensar Seker، مدیر ارشد امنیت اطلاعات (CISO) در SOCRadar، هشدار داد که این مورد نشان میدهد چگونه نبود بررسی امضا میتواند تمام کنترلهای احراز هویت را بیاثر کند. او توصیه کرد که سازمانها باید:
- تایید رمزنگاری امضاهای JWT را اجباری کنند.
- توکنهای بدون امضا را به طور کامل رد کنند.
- APIهایی که از بیرون قابل دسترسی هستند را حتی در صورت وجود VPN یا کنترلهای دسترسی داخلی، به طور مستقل ارزیابی کنند.