یک آسیبپذیری با شدت متوسط (Medium) در بخش انتقال SMP-over-console در MCUmgr شناسایی شده است که میتواند منجر به بروز خطای Integer Underflow شود.
تحلیل فنی
در تابع mcumgr_serial_process_frag() (واقع در مسیر subsys/mgmt/mcumgr/transport/src/serial_util.c)، سیستم یک فریم base64 را رمزگشایی کرده و طول بسته (Packet Length) ۱۶ بیتی را از آن میخواند. پس از تایید CRC، کد به صورت غیرمشروط مقدار ۲ واحد را از طول بسته کم میکند (rx_ctxt->nb->len -= 2U).
نقص امنیتی در تابع mcumgr_serial_extract_len() نهفته است؛ این تابع هر طول اعلام شدهای، از جمله ۰ و ۱ را میپذیرد. زمانی که طول بسته ۰ باشد، تست Checksum به دلیل اینکه خروجی crc16_itu_t() برای صفر بایت برابر با مقدار Seed اولیه است، به راحتی تایید شده و از سد امنیتی عبور میکند.