Memory exhaustion (DoS) via unbounded file read in `EncodingDiscovery.detect_encoding()`
该报告还没有中文解读。
原文摘录
摘自原文(4742 字符中的一小部分)
`EncodingDiscovery.detect_encoding()` in `translation_finder/discovery/base.py` passes the raw file handle to `charset_normalizer.from_fp()`, which internally does `from_bytes(fp.read())` — the **entire file is loaded into memory**, with no size cap. Every other sniffing path in this codebase is …
原文中的代码
446 for path in chain(*matches): 447 if not isinstance(path, Path): 448 continue 449 with self.finder.open(path, "rb") as handle: 451 detection_result = from_fp(handle).best() # <-- fp.read() whole file
默认不展示报告全文。以上为简短摘录,完整复现过程请阅读原文。版权归研究员与 Weblate 所有。
时间线
- 报告提交
- 公开披露
阅读 HackerOne 原文 ↗作者 @sumit-sabhaya · 版权归作者与 Weblate 所有