GHSA-rr87-p3f8-qhxj:
Python 취약성 분석 및 완화
Summary
memtomem's shared credential detector (privacy.py, DEFAULT_PATTERNS) contains a JWT rule whose cost is quadratic in the length of a run of base64url characters:
\beyJ[A-Za-z0-9_-]{8,}.[A-Za-z0-9_-]{8,}.[A-Za-z0-9_-]{8,}\b
A match can be attempted after every - inside such a run, and each attempt scans to the end of the run. privacy.scan() scans the whole input with no length cap, and it runs on the write path (mem_add and indexing) and in session-tracing redaction, so a crafted text holds that path until the scan finishes.
Severity: High (availability). No data is exposed. No CVSS vector or CVE is asserted yet.
Measured (main 2f9eae64, Python 3.13, privacy.scan)
| input | time |
|---|---|
eyJ- repeated, 64 KB | 0.51 s |
eyJ- repeated, 128 KB | 1.97 s |
eyJ- repeated, 256 KB | 7.75 s |
Related
memtomem-stm carries the same rule byte-for-byte in its CREDENTIAL_PATTERNS (GHSA-3v6c-9qpg-gf63, draft). The two advisories are published together.
Fix
The rule is replaced with the linear-time form memtomem-stm adopted, which gives the same yes/no answer, match count and match ends:
\beyJ(?=[A-Za-z0-9_-]{8})[A-Za-z0-9_]+(?:-(?!eyJ[A-Za-z0-9_-]{8})[A-Za-z0-9_]+)*+.[A-Za-z0-9_-]{8,}.[A-Za-z0-9_-]{8,}\b
memtomem also uses match starts (redaction in session tracing, the span_start reported by the privacy audit commands), so scan() restores each JWT match's start to where the old rule began it. The browser-side pattern list keeps the old rule, unchanged.
근원: 네비디(NVD)
관련 Python 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."