Атака Π½Π° инфраструктуру PyTorch, ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ Ρ€Π΅Π»ΠΈΠ·Ρ‹

Раскрыты Π΄Π΅Ρ‚Π°Π»ΠΈ Π°Ρ‚Π°ΠΊΠΈ Π½Π° инфраструктуру, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° машинного обучСния PyTorch, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ²ΡˆΡƒΡŽ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ доступа, достаточныС для размСщСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² GitHub ΠΈ AWS, Π° Ρ‚Π°ΠΊΠΆΠ΅ для подстановки ΠΊΠΎΠ΄Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ рСпозитория ΠΈ добавлСния бэкдора Ρ‡Π΅Ρ€Π΅Π· зависимости. ПодмСна Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² PyTorch ΠΌΠΎΠ³Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для осущСствлСния Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Google, Meta, Boeing ΠΈ Lockheed Martin, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ PyTorch Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Bug Bounty компания Meta Π²Ρ‹ΠΏΠ»Π°Ρ‚ΠΈΠ»Π° исслСдоватСлям $16250 Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

Π‘ΡƒΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ Π² возмоТности выполнСния своСго ΠΊΠΎΠ΄Π° Π½Π° сСрвСрах Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… пСрСсборку ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ для тСстирования Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, отправляСмых Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнныС внСшниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ «Self-Hosted Runner» с GitHub Actions. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… GitHub Actions ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Self-Hosted Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π΅ Π² инфраструктурС GitHub, Π° Π½Π° своих сСрвСрах ΠΈΠ»ΠΈ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сборочных Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π° своих сСрвСрах позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ запуск ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ сканированиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти прСдприятия, поиск Π² локальной Π€Π‘ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² доступа, Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ обращСния ΠΊ внСшним Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°ΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌ сСрвисам. ΠŸΡ€ΠΈ отсутствии Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ изоляции сборочного окруТСния Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΌ Π²ΠΎΠ²Π½Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ внСшним API. Для опрСдСлСния примСнСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ «Self-Hosted Runner» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструмСнтарий Gato, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ общСдоступныС workflow-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π»ΠΎΠ³ΠΈ запуска CI-Π·Π°Π΄Π°Π½ΠΈΠΉ.

Π’ PyTorch ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… «Self-Hosted Runner», запуск сборочных Π·Π°Π΄Π°Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, измСнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΈΡΡŒ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НаличиС статуса «contributor» ΠΏΡ€ΠΈ использовании Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ настроСк ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ GitHub Actions ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ pull-запросов ΠΈ, соотвСтствСнно, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² любом ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ GitHub Actions Runner, привязанном ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ»ΠΈ ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΡƒ ΠΊ статусу «contributor» оказалось Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ — достаточно ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ принятия Π² ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ, послС Ρ‡Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ автоматичСски ΠΏΠΎΠ»ΡƒΡ‡Π°Π» статус Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ участника, pull-запросы ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² CI-инфраструктурС Π±Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Для получСния статуса Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π² Ρ…ΠΎΠ΄Π΅ экспСримСнта использовались Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ космСтичСскиС измСнСния, связанныС с устранСниСм ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Для получСния доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Ρƒ Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² PyTorch Π² Ρ…ΠΎΠ΄Π΅ Π°Ρ‚Π°ΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² «Self-Hosted Runner» Π±Ρ‹Π» осущСствлён ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Ρ‚ΠΎΠΊΠ΅Π½Π° GitHub, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ²ΡˆΠ΅Π³ΠΎΡΡ для доступа ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ· сборочных процСссов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ AWS, задСйствованных для сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ спСцифична для PyTorch ΠΈ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для «Self-Hosted Runner» Π² GitHub Actions. НапримСр, упомянуто осущСствлСниС ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π°Ρ‚Π°ΠΊ для подстановки бэкдора Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ кошСльки ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚ ΠΈ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄Π½ΠΎΠΉ ΠΊΠ°ΠΏΠΈΡ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ€Π΅Π»ΠΈΠ·Ρ‹ Microsoft Deepspeed ΠΈ TensorFlow, ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ CloudFlare, Π° Ρ‚Π°ΠΊΠΆΠ΅ выполнСния ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π² сСти Microsoft. Π”Π΅Ρ‚Π°Π»ΠΈ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Bug Bounty исслСдоватСли ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ 20 заявок для получСния Π²ΠΎΠ·Π½Π°Π³Ρ€Π°ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° сумму нСсколько сотСн тысяч Π΄ΠΎΠ»Π»Π°Ρ€ΠΎΠ².

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