خانه » CVE-2025-9642

CVE-2025-9642

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') in GitLab

توسط Vulnerbyte Alerts
180 بازدید
هشدار سایبری CVE-2025-9642

چکیده

آسیب‌پذیری Cross-site Scripting (XSS) مربوط به بخش ناوبری کد (Code Navigation) در GitLab CE/EE است که به دلیل خنثی‌سازی نادرست ورودی‌ها ایجاد می‌شود. این آسیب‌پذیری به مهاجمان دارای دسترسی کاربری اجازه می‌دهد تا محتوای HTML یا اسکریپت‌های مخرب را تزریق کرده و در نهایت منجر به تصاحب حساب (ATO) شوند.

توضیحات

آسیب‌پذیری CVE-2025-9642 در GitLab CE/EE مربوط به بخش ناوبری کد (Code Navigation) است؛ بخشی که وظیفه ارائه قابلیت‌های جستجو و تعامل با کد منبع را در رابط وب GitLab بر عهده دارد. این آسیب پذیری به دلیل خنثی‌سازی نادرست ورودی‌ها در هنگام تولید صفحات HTML رخ می‌دهد و در دسته Cross‑Site Scripting (XSS) طبق CWE‑79 طبقه‌بندی می‌شود. مشکل اصلی به پچ قبلی #3247096 مربوط می‌شود که از تنظیمات پیش‌فرض DOMPurify (کتابخانه جاوااسکریپت برای پاک‌سازی HTML و جلوگیری از حملات XSS) استفاده می‌کند؛ تنظیماتی که به‌راحتی قابل دور زدن هستند.

این آسیب پذیری زمانی رخ می‌دهد که محتوای متنی (textContent) از یک المنت DOM استخراج می‌شود. در این فرآیند، HTML entities (موجودیت‌های HTML که به کاراکترهای خاص در HTML تبدیل می‌شوند) به صورت خودکار به کاراکترهای واقعی HTML واقعی تبدیل می‌شوند. سپس این محتوای متنی بدون هیچ‌گونه خنثی‌سازی مناسب به عنوان innerHTML در المنت دیگری قرار می‌گیرد. این عملکرد منجر به HTML Injection می‌شود و در نتیجه مهاجم می‌تواند محتوای مخرب خود را تزریق کرده و آن را به یک XSS قابل بهره‌برداری تبدیل کند. اگر در همان مرحله اول از elm.innerHTML استفاده می‌شد، موجودیت‌های HTML بدون تبدیل شدن حفظ می‌شدند؛ بنابراین مسیر تزریق HTML و اجرای کد مخرب کاملاً مسدود می‌گردید.

در مسیر بهره برداری، مهاجم می‌تواند با دسترسی به حساب کاربری با سطح دسترسی پایین و تنها با تعامل کاربر، این آسیب‌پذیری را از راه دور مورد سوءاستفاده قرار دهد. حمله از طریق پروتکل HTTPS (پروتکل امن انتقال ابرمتن، استاندارد ارتباطات وب GitLab) در رابط وب انجام می‌شود. مهاجم داده‌های LSIF (Language Server Index Format) را دستکاری می‌کند تا اطلاعات مربوط به hover یا definition path را با گجت‌های اسکریپت آلوده کند. زمانی که قربانی روی این اطلاعات کلیک می‌کند، یک صفحه مانند workitem.html باز می‌شود و پس از تأخیر 10 تا 15 ثانیه‌ای به طور خودکار بسته می‌شود. این عمل باعث تصاحب حساب کاربری (ATO) مانند اضافه کردن ایمیل مخرب به پروفایل کاربری می‌شود.

پیامدهای این ضعف شامل تصاحب کامل حساب کاربری، افشای اطلاعات حساس، نقض حریم خصوصی و امکان انجام حملات ثانویه مانند تزریق کد به Base Code یا سرقت داده‌های CI/CD است. این موارد تهدید جدی برای محرمانگی، یکپارچگی و امنیت پروژه‌ها ایجاد می‌کنند.کد اثبات مفهومی (PoC) توسط HackerOne منتشر شده است که نشان می‌دهد چگونه گجت‌ها می‌توانند بدون نیاز به لغو کامل تنظیمات پیش‌فرض (Override کامل در DevTools) مورد سوءاستفاده قرار گیرند.

این آسیب‌پذیری در نسخه‌های 18.2.7، 18.3.3 و 18.4.1 پچ شده است. در این نسخه‌ها، DOMPurify با پیکربندی سفارشی استفاده می‌شود تا innerHTML به شکل ایمن پردازش شده و HTML entities به‌درستی حفظ شوند؛ این کار مانع هر نوع HTML Injection و تبدیل آن به XSS می‌شود.

CVSS

Score Severity Version Vector String
8.7 HIGH 3.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N

لیست محصولات آسیب پذیر

Versions Product
affected from 14.10 before 18.2.7

affected from 18.3 before 18.3.3

affected from 18.4 before 18.4.1

GitLab

لیست محصولات بروز شده

Versions Product
Upgrade to version 18.2.7, 18.3.3 or 18.4.1 or above. GitLab

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که GitLab را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google

(Total Pages)

Search Query (Dork) Product
592,000 site:.ir “GitLab” GitLab

نتیجه گیری

این آسیب‌پذیری با شدت بالا در GitLab CE/EE امکان تزریق HTML و Cross‑Site Scripting (XSS) در بخش ناوبری کد (Code Navigation) را فراهم می‌کند و می‌تواند منجر به تصاحب کامل حساب کاربری و نقض امنیت پروژه‌ها شود. با توجه به وجود PoC و انتشار پچ رسمی، اجرای اقدامات زیر برای جلوگیری از بهره‌برداری و کاهش ریسک ضروری است:

  • به‌روزرسانی فوری: GitLab CE/EE را به نسخه‌های پچ‌شده 18.2.7، 18.3.3 و 18.4.1 به روزرسانی کنید. این اقدام، مؤثرترین و قطعی‌ترین راهکار برای رفع آسیب‌پذیری است و باید در اولویت قرار گیرد. سایر اقدامات نقش مکمل را دارند و می‌توانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
  • تقویت پاک‌سازی ورودی‌ها: سیاست امنیتی محتوا (CSP) را سفارشی‌سازی کنید.DOMPurify را به صورت سخت‌گیرانه پیکربندی نمایید تا گجت‌های اسکریپتی (script gadgets) و داده‌های مخرب مسدود شوند.
  • نظارت و ثبت لاگ: لاگ‌های GitLab را با سطح SECURITY یا DEBUG فعال کنید و از ابزارهایی مانند ELK Stack یا سیستم مدیریت رویدادهای امنیتی (SIEM) برای ردیابی تغییرات LSIF، کلیک‌های مشکوک در ناوبری کد یا دسترسی‌های غیرعادی به پروفایل استفاده نمایید. علاوه براین، هشدارهای خودکار برای تزریق HTML تنظیم کنید.
  • کنترل دسترسی: از اصل حداقل دسترسی پیروی کنید و نقش‌های کاربری را برای ناوبری کد محدود سازید. احراز هویت چندعاملی (MFA) را برای تمام حساب‌ها الزامی کنید تا حتی در صورت تصاحب حساب، لایه ثانویه امنیت (مانند OTP) فعال شود و سرقت حساب را پیچیده نماید.
  • ایزوله‌سازی محیط: نمونه ‌های GitLab را در کانتینرهای ایزوله مانند Docker یا Kubernetes مستقر کنید، ترافیک HTTPS را با فایروال اپلیکیشن وب (WAF) فیلتر نمایید و درخواست‌های مشکوک حاوی HTML یا جاوااسکریپت را در اندپوینت‌های LSIF یا hover مسدود یا قرنطینه نمایید.
  • تست امنیتی منظم: رابط GitLab را با ابزارهای اسکن XSS مانند OWASP ZAP یا Burp Suite بررسی کنید و از Fuzzing برای شبیه‌سازی بازنویسی عملکردهای LSIF (override) و گجت‌های ویژگی‌های داده‌ای (data attributes) استفاده نمایید. PoC ارائه‌شده در HackerOne را در محیط آزمایشی بازتولید کرده و سناریوهای تصاحب حساب (ATO) را ارزیابی کنید.
  • آموزش و بهترین شیوه‌ها: تیم‌های توسعه، مدیران و کاربران را در مورد ریسک‌های XSS در GitLab (مانند اجتناب از کلیک روی المنت های ناشناخته در ناوبری کد) آموزش دهید.

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

امکان استفاده در تاکتیک های Mitre Attack

Initial Access (TA0001)

ورود اولیه در این سناریو از طریق ارسال ورودی آلوده در متادیتای LSIF مانند hover یا definition path انجام می‌شود که در لایه وب GitLab پردازش می‌شود. این ورودی به‌صورت معتبر از سمت کاربر کم‌دسترسی ثبت می‌شود و چون پردازش‌گر کد ناوبری خنثی‌سازی مؤثر ندارد، مهاجم بدون نیاز به دسترسی بالا، محتوای مخرب را در مسیر نمایش UI تزریق می‌کند.

Execution (TA0002)

زمانی که کاربر مشروع روی المان آلوده در UI مانند hover tooltip یا صفحه workitem.html تعامل می‌کند، اسکریپت تزریق‌شده با سطح دسترسی مرورگر قربانی اجرا می‌شود. این اجرا در context جلسه کاربر انجام شده و قابلیت تغییر تنظیمات پروفایل، سرقت توکن‌ها یا اجرای درخواست‌های API را با همان مجوز فراهم می‌کند.

Credential Access (TA0006)

اسکریپت اجرا شده قادر است  CSRF-style API call، تغییر ایمیل حساب، استخراج  API tokenها، یا ایجاد session hijack  را انجام دهد. این رفتار عملاً استخراج اعتبارنامه در سطح کاربر هدف را ممکن می‌کند و زمینه کامل برای سرقت حساب کاربری را فراهم می‌سازد.

Discovery (TA0007)

کد تزریق‌شده می‌تواند داده‌های محیط کاربر مانند پروژه‌های در حال مشاهده، مسیرهای فعال، یا context API را بررسی کرده و سطح دسترسی قربانی را برای حملات بعدی ارزیابی کند.

Privilege Escalation (TA0004)

اگر حساب قربانی دارای نقش Maintainer یا Owner باشد، اسکریپت می‌تواند تغییرات مدیریتی روی پروژه‌ها یا اعضا اعمال کند. این افزایش سطح دسترسی ناشی از اجرای کد در context قربانی است و به مهاجم امکان تصاحب سطح دسترسی بالاتر را می‌دهد.

Defense Evasion (TA0005)

تزریق از طریق  payloadهای LSIF و استفاده از تأخیر ۱۰–۱۵ ثانیه پس از باز شدن صفحه جهت بستن خودکار پنجره، الگوی رفتاری حمله را پنهان می‌کند. اجرای اسکریپت در UI قانونی GitLab انجام می‌شود و در لاگ‌ها به‌عنوان تعامل معتبر کاربر ثبت می‌گردد.

Lateral Movement (TA0008)

پس از تصاحب حساب، مهاجم می‌تواند به پروژه‌های مشترک، گروه‌ها و CI/CD مرتبط با قربانی دسترسی بگیرد. این حرکت جانبی از طریق API رسمی GitLab و با اعتبارنامه ربوده‌شده انجام می‌شود.

Collection (TA0009)

داده‌هایی مانند محتوای مخازن، رمزهای CI/CD، متغیرهای محیطی و  Issueهای خصوصی قابل استخراج هستند. اسکریپت می‌تواند درخواست‌های API را مستقیم از مرورگر قربانی ارسال کرده و داده‌های حساس را جمع‌آوری کند.

Exfiltration (TA0010)

مهاجم می‌تواند داده‌های استخراج‌شده را به یک سرور کنترل خارج از محیط منتقل کند. ارسال درخواست‌های HTTP خروجی از داخل مرورگر کاربر مشروع انجام می‌شود و معمولاً توسط سامانه‌های امنیتی قابل شناسایی نیست.

Impact (TA0040)

اجرای XSS در context کاربر منجر به تصاحب حساب (ATO)، تغییر ایمیل حساب، دستکاری تنظیمات پروژه، انتشار کد مخرب در مخازن، تخریب داده، و اختلال در Pipelineهای CI/CD می‌شود. پیامد نهایی می‌تواند کنترل کامل پروژه‌ها یا حتی زیرساخت DevOps باشد.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2025-9642
  2. https://www.cvedetails.com/cve/CVE-2025-9642/
  3. https://gitlab.com/gitlab-org/gitlab/-/issues/566505
  4. https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-9642
  5. https://vuldb.com/?id.326074
  6. https://hackerone.com/reports/3297413
  7. https://nvd.nist.gov/vuln/detail/CVE-2025-9642
  8. https://cwe.mitre.org/data/definitions/79.html

همچنین ممکن است دوست داشته باشید

پیام بگذارید