TL, DR
PyPI багцуудын бөөгнөрөл нь нэрийг зээлсэн uv, хэт ягаан туяаны туслагчийн дүрд тоглоход зориулагдсан хурдан бөгөөд маш алдартай Rust дээр суурилсан Python багц менежер. Тэд бараг ямар ч бодит функцийг агуулдаггүй. Үүний оронд тэд Windows-ийн ачааллыг авч явдаг. Баталгаажуулалтыг унтраасан JupyterLab сервер мөн дараагийн хувилбаруудад үүнийг урвуу хонгилоор дамжуулан олон нийтийн интернетэд нийтэлдэг.
Энэ бол бүхэл бүтэн түүхийг нэг мөрт багтаасан явдал юм: итгэмжлэгдсэн хэрэгслийн нэрийг өгөөш, харин JupyterLab-ийг алсын код гүйцэтгэх хөдөлгүүр гэж нэрлэдэг. Jupyter сервер нь таны бичсэн ямар ч кодыг not руу ажиллуулдаг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 cell нь дурын кодыг дизайны дагуу гүйцэтгэдэг. Ингэж тохируулсан бөгөөд холбогдсон 0.0.0.0, энэ нь IDE байхаа больж, хост дээрх баталгаажаагүй алсын бүрхүүл болж хувирдаг - өөрчлөн тохируулсан хортой програмын хоёртын файл шаардлагагүй, зүгээр л гол хэрэгсэл буруу чиглэлд зааж өгдөг.
Хоёр тулгуур хэсэг нь үүнийг хүрч болохуйц, давтаж болохуйц болгодог:
- Чимээгүй суулгалтын триггер. Эхний хувилбарууд нь PowerShell-г дараахтай ажиллуулдаг -Гүйцэтгэлийн бодлогыг тойрч гарах -аас шууд setup.py on пип суулгах, алдаанууд дарагдсан тул ард нь байна PIP хэвийн харагдаж байна. Дараагийн хувилбарууд нь ижил командыг а руу шилжүүлдэг пип-ув команд мөрийн хэрэгсэл — мөн суулгах хугацааны автомат горимыг бүрмөсөн хаяна.
- Олон нийтийн урвуу хонгил. Сервер асаалттай байна 0.0.0.0 зөвхөн машин руу чиглүүлж чадах хостууд л хандах боломжтой хэвээр байна. Багцлагдсан модуль нь [Pinggy]() файлыг нээдэг.https://pinggy.io/) Орон нутгийн Jupyter портыг олон нийтийн хаяг руу дамжуулдаг SSH урвуу туннель нь уг хязгаарлалтыг арилгадаг. Тээвэрлэсэн скрипт нь мөн Cloudflare-г ашиглан өөр замыг агуулдаг - тайлбартайгаар бичсэн байдаг. үүлэн гэрэлтсэн болон netsh port-proxy нь Linode IP руу, өөр өөр дэд бүтцээр дамжуулан ижил зорилгыг баримтжуулдаг.
Нэгтгэх: багцыг суулгана, тэгвэл Windows хост нь нууц үггүй JupyterLab ажиллуулж, нээлттэй интернетэд нийтэлнэ.
FauxUV хэрхэн хөгжсөн
FauxUV-ийн хувилбарууд дараалан хурдан хүргэгдсэн бөгөөд ачааны гох цэг нь тэдгээрийн дээгүүр хөдөлсөн нь нэг тэмдэглэгдсэн хувилбар нь багцын бүхэл бүтэн түүхийг ховор өгүүлдэг болохыг сануулж байна.
| Тайзны | Хувилбарууд | Trigger | Энэ юу нэмдэг вэ |
|---|---|---|---|
| Суурилуулах дэгээ | moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 | setup.py pip суулгалт дээр | хэт ягаан туяаны суулгалт + PATH урьдчилсан тохируулга |
| CLI-ажиллах хугацаа | moon-uv 0.0.5-0.0.13 | pip-uv Тушаал | нууц үггүй JupyterLab эхлүүлэгч |
| Туннель | moon-uv 0.0.14-0.0.16 | pip-uv Тушаал | идэвхтэй Пингги урвуу туннель |
Суулгах хугацааны автоматаар ажилладаг нь анхаарал татаж байна арилгасан дараа нь илүү чадварлаг хувилбаруудад - тиймээс сканнер зөвхөн амьдралын мөчлөг дээр л түлхүүртэй байсан 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 пип суулгах тэр нь үрждэг powershell -ExecutionPolicy тойрч гарахямар ч Юпитер хөөргөлтийг нэгтгэх токен =” хамтран –ip=0.0.0.0болон гадагш чиглэсэн SSH руу *.pinggy.io хөгжүүлэгч эсвэл CI машинаас.
Ажиглагдсан зан байдал ба гарал үүсэл
Хоёр багц нь зохиогч болон аргыг хуваалцдаг: итгэмжлэгдсэн хэрэгслийн нэр, зөвхөн Windows-д зориулсан хаалт, алдаа дарагдсан дэвсгэр гүйцэтгэл, мөн нэр хүндтэй хэрэгслүүдэд найдах тул хурдан харахад зөвхөн нэр хүндтэй URL хаягууд харагдана. Эх сурвалж нь аюулгүй байдалтай холбоотой тугуудыг тодорхой тайлбарласан хятад хэл дээрх тайлбаруудыг агуулдаг; бид эдгээрийг файлд ажиглагдахуйц мэдэгдэл болгон мэдээлдэг бөгөөд сэдлийн талаарх мэдэгдэл биш юм. allow_origin үнэ цэнэ ба хамтлаг.бат filename нь Google Colab-д эргэлддэг албан бус "миний орон нутгийн ажиллах хугацааг хуваалцах" ажлын урсгалыг echo юм. Гарал үүсэл нь ямар ч байсан багцалсан үр дүн нь ижил байна.
Хамгаалагчдад үзүүлэх нөлөөлөл ба удирдамж
Faux UV-д хэн өртдөг вэ? Windows хөгжүүлэгчид болон CI ажиллуулагчид пип суулгах эдгээр багцуудын нэг. Нууц үггүй JupyterLab дээр 0.0.0.0 нь порт руу хүрч чадах хүн бүрт зориулсан алсаас код гүйцэтгэх явдал юм; туннель нь "хэн хүрч чадах вэ" гэсэн хязгаарыг арилгана. Сервер нь суулгаж буй хэрэглэгчийн хувиар ажиллаж, тухайн хэрэглэгчийн файл, жетон болон үүлэн мэдээллийн итгэмжлэлийг өвлөн авдаг.
Яагаад алдах амархан байдаг вэ. Сүлжээний мөр бүр нь нэр хүндтэй хост руу чиглүүлдэг - Astral, JupyterLab, үүлэн гэрэлтсэн, Pinggy, Colab. Хэш хийх хортой хоёртын файл байхгүй бөгөөд декодлох бүдэг бадаг blob байхгүй. Нэр хүнд болон гарын үсэг дээр суурилсан сканнердах нь үүнийг дутуу үнэлдэг тул зан төлөвийн асуулт гарч ирдэг - Энэ багцыг суулгах нь машиныг юу хийдэг вэ — үүнийг барьж авдаг хүн.
Удирдамж:
- Суулгах хугацааг эмчилнэ үү powershell -ExecutionPolicy тойрч гарах бүтээх дохио болгон, ямар ч URL-г авчирсан бай.
- Сэрэмжлүүлэг асаалттай Юпитер хоосон токеноор эхлүүлсэн ба –ip=0.0.0.0; энэ хослол нь ажлын станц эсвэл ажиллуулагч дээр хэзээ ч гарч ирэх ёсгүй.
- SSH-ээс туннел рүү чиглэсэн гаралтын үйлчилгээ үзүүлэгчдийг хянах (*.pinggy.io, *.trycloudflare.com) хөгжүүлэгч болон CI орчноос.
- Суулгах uv [албан ёсны эх сурвалжаас](https://docs.astral.sh/uv/) мөн суулгахад аль хэдийн амархан болсон хэрэгслийг ороодог гуравдагч талын "туслах" багцуудад эргэлзэж байгаарай.
- Шинэчлэлт дээрх хамаарлуудыг зүүж, дахин хянана уу — багцын мөр нь хувилбар дээгүүр шинэ боломжуудыг нэмэгдүүлж болно.



