NixOS дистрибутивінде және Nix бума менеджерінің экожүйесінде пайдаланылатын Nixpkgs бума репозиторийіне тарту сұрауларын жіберу кезінде автоматты түрде шақырылатын GitHub Actions өңдегіштеріндегі осалдықтар ашылды. Осалдық рұқсат етілмеген пайдаланушыға Nixpkgs жүйесінде орналасқан барлық пакеттердің бастапқы кодына оқуға және жазуға рұқсат беретін таңбалауышты шығаруға мүмкіндік берді. Бұл таңбалауыш жобаның Git репозиторийі арқылы кез келген буманы қарау және бекіту процестерін айналып өтіп, тікелей өзгертуге мүмкіндік берді.
Nixpkgs-ті бұзу және кез келген пакетке теңшелетін кодты енгізу мүмкіндігін қауіпсіздік зерттеушілері өткен қазан айында NixCon конференциясында көрсетті және жобаның инфрақұрылымында бірден түзетілді. Алайда шабуылдың егжей-тегжейлері бір жылдан кейін ғана жарияланды. Мәселе "pull_request_target" оқиғасына байланысты және жаңа тарту сұраулары бойынша автоматтандырылған тексерулерді орындайтын Nixpkgs GitHub репозиторийіндегі GitHub Actions өңдеушілерін пайдаланумен байланысты болды.
«pull_request» оқиғасынан айырмашылығы, «pull_request_target» өңдеушілеріне құрастыру ортасына оқу/жазу рұқсаты беріледі, бұл тарту сұрауында жіберілген деректермен жұмыс істеу кезінде ерекше күтімді қажет етеді. "pull_request_target" параметріне байланысты өңдегіштердің бірі код иелері-тексеруші утилитасын құру және шақыру арқылы тарту сұрауында берілген "OWNERS" файлын тексерді: қадамдар: — мынаны пайдаланады: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf: ref: refs/-runbuld/ base/ci -A codeownersValidator — іске қосу: нәтиже/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
Мәселе мынада: OWNERS файлы қате пішімделсе, codeowners-validator утилитасы дұрыс емес пішімделген жолдың мазмұнын стандартты, жалпыға қолжетімді журналға шығарады. Шабуыл құрастыру ортасында тіркелгі деректерін сақтайтын ".credentials" файлын көрсететін тарту сұрауында OWNERS деп аталатын символдық сілтемені орналастырудан тұрды. Демек, бұл файлды өңдеу қатеге әкелді және репозиторийге кіру таңбалауышын қамтитын бірінші жол жалпы журналға шығарылды.

Сонымен қатар, өңдегіште editorconfig ережелерін тексеретін басқа осалдық табылды. қадамдар: — атауы: PR жұмысынан өзгертілген файлдар тізімін алу: gh api […] | jq [ … ] > «$HOME/changed_files» — мынаны пайдаланады: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871: ref: refs/pull/$/merge — атауы: EditorConfig іске қосылуын тексеру: cat «_HOME/changed» xargs -r editorconfig-тексерушісі
Бұл жағдайда мәселе тарту сұрауындағы әрбір файлмен editorconfig-тексергішін іске қосу үшін «xargs» утилитасын пайдалану болды. Файл атаулары тексерілмегендіктен, шабуылдаушы тарту сұрауында editorconfig-checker іске қосылған кезде пәрмен жолы дәлелдері ретінде өңделетін арнайы таңбаларды қамтитын файлды қамтуы мүмкін. Мысалы, "--help" файлын жасау кезінде editorconfig-тексергіші қолжетімді опциялар туралы кеңесті көрсетеді.
Ақпарат көзі: opennet.ru
