نقص بحرانی در Gitea اجازه دسترسی ناشناس به فایل‌های سرویس را می‌داد

یک نقص امنیتی بحرانی در Gitea نسخه‌های 1.22.1 تا 1.27.0 به مهاجمان بدون احراز هویت امکان می‌داد هر فایلی را که حساب سرویس مجوز خواندن آن را دارد استخراج کنند. کافی بود درخواست رندرینگ نشانه‌گذاری Org-mode به همراه یک مخزن عمومی ارسال شود. این مشکل در نسخه 1.27.1 برطرف شده است.

مشخصات آسیب‌پذیری

  • شناسه: CVE-2026-59774
  • شدت: Critical — امتیاز CVSS: 9.8
  • مسیر سوءاستفاده: نقطه‌انتهایی رندرینگ نشانه‌گذاری (POST /{owner}/{repo}/markup) با استفاده از سازوکار Org-mode
  • نسخه‌های متاثر: 1.22.1 — 1.27.0
  • رفع‌شده در: Gitea v1.27.1

چگونگی بهره‌برداری

رندرکننده Org-mode در Gitea با کتابخانه go-org مقداردهی شده بود اما کال‌بک پیش‌فرض ReadFile بازنویسی نشده بود. دستور #+INCLUDE در Org-mode مسیرهای مطلق را می‌پذیرد؛ بنابراین مهاجم می‌تواند نشانه‌گذاری حاوی #+INCLUDE ارسال کند، حالت file را انتخاب کند و محتوای هر فایلی را که حساب سرویس قادر به خواندن آن است دریافت کند.

خطر تبدیل به اجرای کد

به‌خودی‌خود این آسیب‌پذیری اجرای کد را مستقیماً فراهم نمی‌کند، اما مجموعه‌ای از گام‌ها می‌تواند به اجرای فرمان منجر شود: خواندن فایل app.ini، استخراج INTERNAL_TOKEN، نوشتن یک Git hook از طریق لاگر داخلی و سپس تحریک آن هوک از طریق یک کلون ناشناس. این سناریو در اعلان رسمی Gitea توضیح داده شده است؛ تا کنون بهره‌برداری مستقل از آن منتشر نشده است.

اقدامات فوری برای مدیران

ارتقا به نسخه 1.27.1 ضروری است. نمونه‌های ابری طبق اعلام Gitea ممکن است در پنجره نگهداری به‌صورت خودکار به‌روزرسانی شوند. برای نمونه‌های خودمیزبان، اقدامات زیر را اجرا کنید:

  • فوراً به Gitea v1.27.1 ارتقا دهید: بسته رسمی را از صفحه انتشار دریافت و نصب کنید. (Release v1.27.1)
  • در صورت احتمال نفوذ فرض کنید اعتبارنامه‌های قابل‌خواندن توسط حساب سرویس افشا شده‌اند و بلافاصله گردش کنید: INTERNAL_TOKEN، اطلاعات OAuth، کلیدهای امضای JWT و اطلاعات اتصال به پایگاه‌داده.
  • لاگ‌ها را بازبینی کنید؛ به‌ویژه درخواست‌های POST /{owner}/{repo}/markup ناشناس که Mode را روی Org-mode یا file قرار داده‌اند یا شامل مسیرهای مطلق هستند.
  • پوشه‌های hooks مخازن را برای فایل‌های اجرایی غیرمنتظره و تغییرات اخیر بررسی کنید.

شاخص‌های محتمل نفوذ (IoC)

  1. لاگ‌هایی با مسیر درخواست /<owner>/<repo>/markup و پارامتر Mode=org یا Mode=file.
  2. درخواست‌هایی که در محتوای ارسالی #+INCLUDE با مسیرهای مطلق سیستم فایل دارند.
  3. فایل‌های اجرایی جدید یا تغییر یافته در دایرکتوری hooks مخازن.
  4. سوابق کلون ناشناس حساس که ممکن است هوک تزریق‌شده را فعال کرده باشند.

جزئیات فنی اصلاح

اصلاح اصلی در PR #38642 انجام شد و سپس در PR #38645 پس‌بک شد. اکنون Gitea کال‌بک ReadFile را بازنویسی می‌کند تا مسیرهای #+INCLUDE به‌جای خواندن مستقیم از سیستم فایل، محتوای رندرشده بازگردند و برای این رفتار تست‌های بازگشتی اضافه شده است.

منابع

خلاصه و توصیه‌ها

این آسیب‌پذیری نشان‌دهنده خطرات رندرینگ محتوای کاربر در بسترهای توسعه است. ارتقای فوری به نسخه 1.27.1 ضروری است. در صورت هر گونه نشانه‌ای از دسترسی غیرمجاز، گردش کلیدها و بررسی کامل لاگ‌ها و hooks ضروری است تا اطمینان حاصل شود سامانه پاک‌سازی شده و حمله‌های زنجیره‌ای محتمل نیز خنثی شده‌اند.