Miggo Logo

CVE-2022-1471:
SnakeYaml Constructor Deserialization Remote Code Execution

8.3

CVSS Score

Basic Information

EPSS Score
-
Published
12/12/2022
Updated
2/6/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
Package NameEcosystemVulnerable VersionsFirst Patched Version
org.yaml:snakeyamlmaven<= 1.332.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerable functions are identified based on the stack trace provided in the description of the vulnerability. The functions are part of the deserialization process in SnakeYaml and are related to the Constructor class, which is known to be vulnerable to remote code execution due to the lack of type checks during deserialization.

Vulnerable functions

org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep
Constructor.java
This method is part of the deserialization process and is vulnerable to remote code execution due to the lack of type checks during deserialization.
org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck
BaseConstructor.java
This method is involved in the deserialization process and could be related to the vulnerability.
org.yaml.snakeyaml.constructor.BaseConstructor.constructObject
BaseConstructor.java
This method is part of the deserialization process and is potentially related to the vulnerability.
org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument
BaseConstructor.java
This method is involved in the deserialization process and could be related to the vulnerability.
org.yaml.snakeyaml.Yaml.loadFromReader
Yaml.java
This method is part of the deserialization process and is potentially related to the vulnerability.
org.yaml.snakeyaml.Yaml.load
Yaml.java
This method is the entry point for the deserialization process and is potentially related to the vulnerability.

WAF Protection Rules

WAF Rule

### Summ*ry Sn*k*Y*ml's `*onstru*tor` *l*ss, w*i** in**rits *rom `S****onstru*tor`, *llows *ny typ* ** **s*ri*liz** *iv*n t** *ollowin* lin*: n*w Y*ml(n*w *onstru*tor(T*st**t**l*ss.*l*ss)).lo**(y*ml*ont*nt); Typ*s *o not **v* to m*t** t** typ*s o*

Reasoning

T** vuln*r**l* *un*tions *r* i**nti*i** **s** on t** st**k tr*** provi*** in t** **s*ription o* t** vuln*r**ility. T** *un*tions *r* p*rt o* t** **s*ri*liz*tion pro**ss in Sn*k*Y*ml *n* *r* r*l*t** to t** *onstru*tor *l*ss, w*i** is known to ** vuln*