
un escenario basado en CVE-2022-25845 que produce un TP para SCA basado en metadatos pero un FN si se utiliza el callgraph
El proyecto contiene una dependencia fastjson con CVE-2022-25845.
La vulnerabilidad ocurre cuando el marcado en JSON se interpreta como Java beans, es decir, las clases se instancian y las propiedades se
establecen mediante la ejecución de métodos setter. Esto se hace mediante reflexión. Si una clase está en el classpath donde los setters
pueden desencadenar comportamientos como la ejecución de código (en el ejemplo, esta clase es Trigger, la entrada correspondiente es CVE-2022-25845.json), entonces esto puede ser explotado.
setName:11, Trigger
invoke0:-1, NativeMethodAccessorImpl (jdk.internal.reflect)
invoke:62, NativeMethodAccessorImpl (jdk.internal.reflect) [2]
invoke:43, DelegatingMethodAccessorImpl (jdk.internal.reflect)
invoke:566, Method (java.lang.reflect)
setValue:167, FieldDeserializer (com.alibaba.fastjson.parser.deserializer)
deserialze:155, ThrowableDeserializer (com.alibaba.fastjson.parser.deserializer)
parseObject:405, DefaultJSONParser (com.alibaba.fastjson.parser)
parse:1430, DefaultJSONParser (com.alibaba.fastjson.parser)
parse:1390, DefaultJSONParser (com.alibaba.fastjson.parser)
parse:181, JSON (com.alibaba.fastjson)
parse:191, JSON (com.alibaba.fastjson)
parse:147, JSON (com.alibaba.fastjson)
main:18, CheckJSON (scabench)
confirmCVE202225845:39, ConfirmVulnerabilitiesTests (scabench)
Las herramientas SCA estándar basadas en metadatos no tienen problema para identificar la vulnerabilidad; esto es "algo habitual". Sin embargo, es probable que las herramientas basadas en grafos de llamadas no la detecten, ya que la construcción de grafos de llamadas generalmente no modela las llamadas reflectivas. En este sentido, esto es tanto un verdadero positivo como un falso negativo, dependiendo de los análisis que se utilicen.
Tenga en cuenta que existe una prueba de demostración de vulnerabilidad; esta prueba (y por lo tanto la compilación con mvn test)
falla. Consulte https://github.com/scabench/jsonorg-tp1 para ver cómo funciona la prueba.
Hay varios scripts sh para ejecutar diferentes análisis; los informes de resultados se pueden encontrar en scan-results.