آسیبپذیریهایی در کنترلکنندههای GitHub Actions، که هنگام ارسال درخواستهای pull به مخزن بسته Nixpkgs، که در توزیع NixOS و اکوسیستم مدیریت بسته Nix استفاده میشود، به طور خودکار فراخوانی میشوند، افشا شدهاند. این آسیبپذیری به یک کاربر غیرمجاز اجازه میداد تا یک توکن را استخراج کند که دسترسی خواندن و نوشتن به کد منبع تمام بستههای میزبانی شده در Nixpkgs را فراهم میکند. این توکن امکان تغییر مستقیم هر بستهای را از طریق مخزن Git پروژه، با دور زدن فرآیندهای بررسی و تأیید، فراهم میکرد.
توانایی نفوذ به Nixpkgs و تزریق کد سفارشی به هر بستهای، توسط محققان امنیتی در اکتبر گذشته در کنفرانس NixCon نشان داده شد و بلافاصله در زیرساخت پروژه وصله شد. با این حال، جزئیات این حمله تنها یک سال بعد فاش شد. این مشکل مربوط به استفاده از کنترلکنندههای GitHub Actions در مخزن GitHub Nixpkgs بود که به رویداد "pull_request_target" محدود شدهاند و بررسیهای خودکار را بر اساس درخواستهای pull جدید انجام میدهند.
برخلاف رویداد "pull_request"، به گردانندههای "pull_request_target" دسترسی خواندن/نوشتن به محیط ساخت داده میشود که هنگام کار با دادههای ارسالی در یک درخواست pull نیاز به دقت ویژه دارد. یکی از گردانندههای متصل به "pull_request_target" فایل "OWNERS" ارائه شده در درخواست pull را با ساخت و فراخوانی ابزار codeowners-validator اعتبارسنجی کرد: مراحل: — استفاده میکند: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf با: ref: refs/pull/$/merge مسیر: pr — اجرا: nix-build base/ci -A codeownersValidator — اجرا: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
مشکل این بود که اگر فایل OWNERS به اشتباه قالببندی میشد، ابزار اعتبارسنجی codeowners محتوای رشتهی ناقص را در لاگ استاندارد و قابل دسترس عموم نمایش میداد. این حمله شامل قرار دادن یک لینک نمادین به نام OWNERS در درخواست pull بود که به فایل ".credentials" اشاره میکرد، فایلی که اطلاعات احراز هویت را در محیط ساخت ذخیره میکند. در نتیجه، پردازش این فایل منجر به خطا میشد و خط اول، که حاوی توکن دسترسی به مخزن بود، در لاگ عمومی نمایش داده میشد.

علاوه بر این، آسیبپذیری دیگری در هندلری که قوانین editorconfig را بررسی میکند، یافت شد. مراحل: — نام: دریافت لیست فایلهای تغییر یافته از PR اجرا: gh api […] | jq [ … ] > «$HOME/changed_files» — استفاده میکند: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 با: ref: refs/pull/$/merge — نام: بررسی EditorConfig اجرا: cat «$HOME/changed_files» | xargs -r editorconfig-checker
در این مورد، مشکل استفاده از ابزار "xargs" برای اجرای editorconfig-checker با هر فایل در درخواست pull بود. از آنجایی که نام فایلها اعتبارسنجی نشده بودند، یک مهاجم میتوانست فایلی حاوی کاراکترهای خاص را در درخواست pull قرار دهد که هنگام اجرای editorconfig-checker به عنوان آرگومانهای خط فرمان پردازش میشد. به عنوان مثال، هنگام ایجاد یک فایل "--help"، editorconfig-checker راهنمایی در مورد گزینههای موجود نمایش میداد.
منبع: opennet.ru
