jackson-dataformat-smileに非同期パーサーの脆弱性、サービス妨害のおそれ
概要
jackson-dataformat-smileの非同期Smileパーサーに、サービス妨害(DoS)を引き起こす脆弱性が見つかりました。約10バイトの入力でおよそ2GBのメモリ確保が起きたり、負の長さで例外が発生したりして、処理スレッドが停止するおそれがあります。影響するのは3.0.0以上3.1.8未満と3.2.0以上3.2.4未満で、3.1.8または3.2.4に更新してください。
AI要約
外部の AI が作成した要約です。誤りを含むことがあります。重要な判断の前に、下の原文と参照URLを確認してください。
jackson-dataformat-smileの非同期Smileパーサーに、サービス妨害(DoS)を引き起こす脆弱性が見つかりました。約10バイトの入力でおよそ2GBのメモリ確保が起きたり、負の長さで例外が発生したりして、処理スレッドが停止するおそれがあります。影響するのは3.0.0以上3.1.8未満と3.2.0以上3.2.4未満で、3.1.8または3.2.4に更新してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| FasterXML | jackson-dataformat-smile |
3.0.0 以上 3.1.8 未満 3.2.0 以上 3.2.4 未満 |
3.1.8 3.2.4 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The asynchronous Smile parser (NonBlockingByteArrayParser) uses a raw-binary length prefix taken from untrusted input to allocate a byte[] before the body is read, with no upper bound and no overflow check. On the raw-binary marker 0xFD, _decodeVInt() computes (value << 6) + (i & 0x3F) without the (value >>> 25) != 0 overflow guard present in the blocking SmileParser._readUnsignedVInt, and _startRawBinary then allocates the declared length immediately.
A Smile feed of roughly ten bytes can therefore force an eager allocation of approximately 2 GB, producing an OutOfMemoryError on reactive or asynchronous Smile endpoints. A VInt crafted to overflow int yields a negative length and a NegativeArraySizeException, a RuntimeException that is not a JacksonException and so escapes the parser contract. Either outcome crashes the request or processing thread.
This is the same class of issue as CVE-2020-28491 in the CBOR parser of this library, which was fixed with a LONGEST_NON_CHUNKED_BINARY guard; the asynchronous Smile parser never received the equivalent guard. No privileges or user interaction beyond the ability to submit data for parsing are required.
出典: CVE.org (CVE Program・cvelistV5) NVD
参照URL
- web github.com