Уязвимост Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° GitHub Actions, която позволявашС ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² Nixpkgs.

Π Π°Π·ΠΊΡ€ΠΈΡ‚ΠΈ са Π΄Π°Π½Π½ΠΈ Π·Π° уязвимости Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° 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: steps: β€” uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr β€” run: nix-build base/ci -A codeownersValidator β€” run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС, Ρ‡Π΅ Π² случай Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° OWNERS, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° codeowners-validator извСТдашС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ форматирания Ρ€Π΅Π΄ Π² стандартния Π»ΠΎΠ³, Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ. Атаката сС свСТдашС Π΄ΠΎ поставянС Π² pull-заявката Π½Π° символна Π²Ρ€ΡŠΠ·ΠΊΠ° с ΠΈΠΌΠ΅ OWNERS, която сочи към Ρ„Π°ΠΉΠ»Π° β€ž.credentialsβ€œ, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π² строитСлната срСда сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π² публичния Π»ΠΎΠ³ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ Ρ‚ΠΎΠΊena Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

Уязвимост Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° GitHub Actions, която позволявашС ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² Nixpkgs.

ОсвСн Ρ‚ΠΎΠ²Π° бСшС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΎΡ‰Π΅ Π΅Π΄Π½Π° уязвимост Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° editorconfig. ΡΡ‚ΡŠΠΏΠΊΠΈ: β€” ΠΈΠΌΠ΅: Π’Π·Π΅ΠΌΠ΅Ρ‚Π΅ списък с ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ‚ PR run: gh api […] | jq [ … ] > Β«$HOME/changed_filesΒ» β€” uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 с: ref: refs/pull/$/merge β€” ΠΈΠΌΠ΅: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° EditorConfig run: cat Β«$HOME/changed_filesΒ» | xargs -r editorconfig-checker

Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ бСшС Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° Β«xargsΒ» Π·Π° стартиранС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° editorconfig-checker с всСки Ρ„Π°ΠΉΠ» ΠΎΡ‚ pull-запроса. Въй ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π½Π΅ сС провСряваха Π·Π° корСктност, нападатСлят моТСшС Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ Π² pull-запроса Ρ„Π°ΠΉΠ» със спСциални символи, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° Π±ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΏΡ€ΠΈ стартиранС Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° editorconfig-checker ΠΊΠ°Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° командния Ρ€Π΅Π΄. НапримСр, ΠΏΡ€ΠΈ създаванС Π½Π° Ρ„Π°ΠΉΠ» Β«β€”helpΒ», ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° editorconfig-checker Π±ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° подсказка Π·Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster