Skip to content

Deserializer tampering in Apache Dubbo

Critical severity GitHub Reviewed Published Mar 18, 2022 to the GitHub Advisory Database • Updated Feb 1, 2023

Package

maven com.alibaba:dubbo (Maven)

Affected versions

>= 2.5.0, < 2.6.9

Patched versions

2.6.9
maven org.apache.dubbo:dubbo (Maven)
>= 2.5.0, < 2.7.8
2.7.8

Description

Each Apache Dubbo server will set a serialization id to tell the clients which serialization protocol it is working on. But for Dubbo versions before 2.7.8 or 2.6.9, an attacker can choose which serialization id the Provider will use by tampering with the byte preamble flags, aka, not following the server's instruction. This means that if a weak deserializer such as the Kryo and FST are somehow in code scope (e.g. if Kryo is somehow a part of a dependency), a remote unauthenticated attacker can tell the Provider to use the weak deserializer, and then proceed to exploit it.

References

Published by the National Vulnerability Database Jun 1, 2021
Reviewed Jun 2, 2021
Published to the GitHub Advisory Database Mar 18, 2022
Last updated Feb 1, 2023

Severity

Critical
9.8
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Weaknesses

CVE ID

CVE-2021-25641

GHSA ID

GHSA-v2rg-8cwr-75g8

Source code

No known source code
Checking history
See something to contribute? Suggest improvements for this vulnerability.