
CVE-2022-25845 पर आधारित एक परिदृश्य जो मेटाडेटा आधारित SCA के लिए TP देता है लेकिन यदि callgraph का उपयोग किया जाता है तो FN देता है
प्रोजेक्ट में CVE-2022-25845 के साथ एक fastjson निर्भरता शामिल है।
यह भेद्यता तब उत्पन्न होती है जब JSON में मार्कअप को Java बीन्स के रूप में व्याख्यायित किया जाता है, अर्थात कक्षाएं इंस्टेंटिएट होती हैं और सेटर विधियों को निष्पादित करके गुण सेट किए जाते हैं। यह रिफ्लेक्शन का उपयोग करके किया जाता है। यदि क्लासपाथ में कोई ऐसी क्लास है जहां सेटर कोड निष्पादित करने जैसा व्यवहार ट्रिगर कर सकते हैं (उदाहरण में, यह क्लास Trigger है, संबंधित इनपुट CVE-2022-25845.json है), तो इसका शोषण किया जा सकता है।
दिलचस्प हिस्सा रिफ्लेक्शन का उपयोग है, जैसा कि भेद्यता प्रदर्शित करने के लिए उपयोग किए गए परीक्षण को चलाने से नीचे दिए गए स्टैकट्रेस में दिखाया गया है।
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)
मानक मेटा-डेटा आधारित SCA को भेद्यता की पहचान करने में कोई समस्या नहीं है, यह "सामान्य कार्य" है। हालांकि, कॉलग्राफ आधारित उपकरण इसे चूकने की संभावना रखते हैं क्योंकि कॉलग्राफ निर्माण आमतौर पर रिफ्लेक्टिव कॉल को मॉडल करने में विफल होते हैं। इस अर्थ में, यह उपयोग किए जा रहे विश्लेषणों के आधार पर एक सही सकारात्मक और एक गलत नकारात्मक दोनों है।
ध्यान दें कि भेद्यता प्रदर्शित करने के लिए एक प्रूफ-ऑफ-वल्नरेबिलिटी परीक्षण है, यह परीक्षण (और इसलिए mvn test के साथ बिल्ड) विफल होता है। देखें कि परीक्षण कैसे काम करता है https://github.com/scabench/jsonorg-tp1।
विभिन्न विश्लेषण चलाने के लिए कई sh स्क्रिप्ट हैं, परिणाम रिपोर्ट scan-results में पाई जा सकती हैं।