
Arduino_Core_STM32 में स्टैक-आधारित use-after-return भेद्यता का खुलासा, जिसमें तकनीकी मूल कारण, प्रभावित संस्करण और समाधान का विवरण, सुरक्षा प्रभाव विश्लेषण के साथ शामिल है।
Arduino_Core_STM32 के पुराने संस्करणों में, संस्करण 1.7.0 से पहले, एक स्टैक-आधारित use-after-return भेद्यता मौजूद है।
यह समस्या pwm_start() कार्यान्वयन में स्थित है, जहाँ एक TIM_HandleTypeDef ऑब्जेक्ट को स्टैक पर आवंटित किया जाता है और उसका पता HAL इनिशियलाइज़ेशन लॉजिक में पारित किया जाता है। वह पॉइंटर बाद में वैश्विक टाइमर हैंडल रजिस्ट्री में बनाए रखा जा सकता है और मूल स्टैक फ्रेम के लौटने के बाद इंटरप्ट सर्विस रूटीन द्वारा अतुल्यकालिक रूप से डीरेफ़रेंस किया जा सकता है।
इस भेद्यता को MITRE द्वारा CVE-2026-26399 निर्दिष्ट किया गया है।
Arduino_Core_STM32stm32duino / STMicroelectronics पारिस्थितिकी तंत्रv0.1.0 से v1.6.1v1.7.0pwm_start() के पुराने कार्यान्वयन में, एक TIM_HandleTypeDef संरचना को स्थानीय स्टैक चर के रूप में बनाया जाता है:
void pwm_start(...) {
TIM_HandleTypeDef timHandle = {};
HAL_TIM_PWM_Init(&timHandle);
...
}
इस स्थानीय ऑब्जेक्ट का पता HAL समर्थन लॉजिक में पारित किया जाता है और इसे वैश्विक टाइमर-प्रबंधन स्थिति में संग्रहीत किया जा सकता है, जैसे कि वैश्विक टाइमर हैंडल रजिस्ट्री।
pwm_start() लौटने के बाद, स्टैक ऑब्जेक्ट अब मान्य नहीं है। हालाँकि, बाद के अतुल्यकालिक टाइमर इंटरप्ट हैंडलर अभी भी पुराने पॉइंटर को डीरेफ़रेंस कर सकते हैं, जिससे मेमोरी भ्रष्टाचार और अपरिभाषित व्यवहार हो सकता है।
संभावित सुरक्षा प्रभाव में शामिल हैं:
चूँकि यह एक लाइब्रेरी-स्तरीय समस्या है, वास्तविक शोषण क्षमता इस बात पर निर्भर करती है कि कमजोर लाइब्रेरी को फर्मवेयर में कैसे एकीकृत किया गया है और हमलावर-नियंत्रित इनपुट स्टैक पुन: उपयोग और इंटरप्ट समय को कैसे प्रभावित कर सकता है।
cores/arduino/stm32/analog.cpwm_start()TIM_HandleTypeDeftimer_handles)यह समस्या संस्करण 1.7.0 में एक रीफैक्टरिंग के दौरान अप्रत्यक्ष रूप से हल की गई प्रतीत होती है, जिसने पिछले स्टैक-आधारित हैंडलिंग पथ को एक अलग टाइमर-प्रबंधन डिज़ाइन से बदल दिया। पुरानी भेद्यता के लिए कोई समर्पित सुरक्षा सलाह जारी नहीं की गई प्रतीत होती है।
यह समस्या फर्मवेयर सुरक्षा अनुसंधान के दौरान पहचानी गई थी, जिसमें Arduino_Core_STM32 पर निर्मित पुराने STM32-आधारित फर्मवेयर का फ़ज़िंग और रूट-कॉज़ विश्लेषण शामिल था।
विक्रेता PSIRT से संपर्क किया गया था। प्रतिक्रिया ने संकेत दिया कि वर्तमान संस्करण प्रभावित नहीं हैं क्योंकि यह समस्या संस्करण 1.7.0 में पहले ही ठीक कर दी गई थी, लेकिन उस समय विक्रेता द्वारा कोई समर्पित CVE का अनुरोध नहीं किया गया प्रतीत होता है।
जिन चांग द्वारा खोजा गया।
CVE-2026-26399