در ابزار مدیریت مالی شخصی Actual، یک نقص امنیتی در بخش CORS proxy شناسایی شده است که میتواند منجر به افشای اطلاعات حساس شود. این آسیبپذیری در نسخههای پیش از 26.7.0 وجود دارد و به دلیل نقص در مکانیزم اعتبارسنجی لیستهای مجاز (Allowlist) رخ داده است.
جزئیات فنی آسیبپذیری
سرور همگامسازی Actual (Actual Sync Server) از یک پروکسی CORS برای اجازه دادن به کاربران احراز هویت شده جهت دریافت منابع از مخازن (Repositories) خاص در GitHub استفاده میکند. در صورتی که متغیر ACTUAL_GITHUB_TOKEN پیکربندی شده باشد، این پروکسی بهطور خودکار توکن GitHub سرور را به درخواستها اضافه میکند.
مشکل اصلی در نحوه بررسی لیست مجاز API گیتهاب نهفته است. سیستم برای تایید درخواستها از متد startsWith() برای بررسی پیشوند /repos/{owner}/{repo} استفاده میکند. از آنجایی که این تست، مرز مسیر (Path Boundary) را پس از نام مخزن بررسی نمیکند، مهاجمان میتوانند با استفاده از تکنیکهای دستکاری مسیر، محدودیتها را دور زده و به منابعی دسترسی پیدا کنند که در لیست مجاز نیستند.
تاثیرات امنیتی
- افشای توکن: احتمال دسترسی غیرمجاز به توکنهای GitHub سرور.
- دور زدن محدودیتها: امکان ارسال درخواستهای غیرمجاز به API گیتهاب از طریق پروکسی سرور.
کاربران و مدیرانی که از این ابزار استفاده میکنند، باید در سریعترین زمان ممکن سیستم خود را به آخرین نسخه بهروزرسانی کنند تا این حفره امنیتی بسته شود.