- شناسه CVE-2025-57052 :CVE
- CWE-129, CWE-125 :CWE
- yes :Advisory
- منتشر شده: سپتامبر 3, 2025
- به روز شده: سپتامبر 3, 2025
- امتیاز: 9.8
- نوع حمله: Out-of-Bounds Access
- اثر گذاری: Denial of Service (Dos)
- حوزه: برنامه نویسی
- برند: cJSON
- محصول: cJSON library
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch نشده
چکیده
آسیبپذیری بحرانی در کتابخانه cJSON نسخههای 1.5.0 تا 1.7.18 به دلیل اعتبارسنجی ناکافی در تابع decode_array_index_from_pointer فایل cJSON_Utils.c است که امکان دسترسی خارج از محدوده به حافظه را از طریق رشتههای اشارهگر JSON مخرب فراهم میکند. این ضعف امنیتی میتواند منجر به خرابی برنامه، افشای اطلاعات حساس یا افزایش سطح دسترسی شود.
توضیحات
آسیبپذیری CVE-2025-57052 در کتابخانه cJSON، که بهطور گسترده برای تجزیهی JSON در برنامههای وب، دستگاههای IoT و نرمافزارهای دسکتاپ یا سرور استفاده میشود، ناشی از اعتبارسنجی ناکافی در تابع decode_array_index_from_pointer فایل cJSON_Utils.c است (مطابق با CWE-129 و CWE-125).
این ضعف در نسخههای 1.5.0 تا 1.7.18 وجود دارد و به مهاجمان از راه دور اجازه میدهد با استفاده از رشتههای JSON Pointer مخرب حاوی کاراکترهای الفبایی و عددی (مانند “0A”) بررسیهای محدودهی آرایه (Array Bounds) را دور زده و به دادههای خارج از محدوده دسترسی پیدا کنند.
علت اصلی ضعف، حلقهی پردازش اندیسها است که به جای بررسی کاراکتر جاری (pointer[position])، به اشتباه فقط pointer[0] را بررسی میکند و باعث میشود کاراکترهای غیرعددی نیز به عنوان بخشی از اندیس پردازش شوند. در این آسیب پذیری الگوریتم کتابخانه به اشتباه کاراکترهای غیرعددی را پردازش میکند و اندیس خارج از محدوده تولید میشود. برای مثال، ورودی “0A” به عنوان اندیس 10 تفسیر میشود (0*10 + (‘A’-‘0’) = 10) در حالی که آرایه فقط 3 المنت دارد و نتیجهی سوءاستفاده میتواند شامل دسترسی غیرمجاز به حافظه، خرابی برنامه (Segmentation Fault) یا انکار سرویس (DoS) باشد.
این آسیبپذیری با شدت بحرانی ارزیابی شده، از طریق شبکه قابل بهرهبرداری است و نیازی به احراز هویت یا تعامل کاربر ندارد. کد اثبات مفهوم (PoC) منتشرشده نشان میدهد که با ارسال اشارهگر JSON مخرب، دسترسی خارج از محدوده ایجاد شده و برنامه در آزمایشها منجر به کرش شده است.
تاکنون هیچ پچ امنیتی برای این ضعف منتشر نشده، اما اصلاح پیشنهادی شامل تغییر شرط لوپ (حلقه) به (pointer[position] >= ‘0’) && (pointer[position] <= ‘9’) است تا اطمینان حاصل شود که تنها کاراکترهای عددی معتبر پردازش میشوند. تا زمان انتشار پچ رسمی، توسعهدهندگان باید این اصلاح را به صورت دستی اعمال کنند یا از کتابخانههای جایگزین امن برای پردازش JSON استفاده نمایند تا ریسک سوءاستفاده از این آسیبپذیری کاهش یابد.
CVSS
Score | Severity | Version | Vector String |
9.8 | CRITICAL | 3.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
لیست محصولات آسیب پذیر
Versions | Product |
1.5.0 through 1.7.18 | cJSON library |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که cJSON را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
Approx. Usage in .ir Domain via Google
(Total Pages) |
Product |
310 | cJSON |
نتیجه گیری
با توجه به ماهیت بحرانی این آسیبپذیری در کتابخانه cJSON که امکان دسترسی خارج از محدوده حافظه و بروز خرابی برنامه یا انکار سرویس را فراهم میکند، اقدامات زیر برای کاهش ریسک پیشنهاد میشود:
- اعمال اصلاح دستی یا بهروزرسانی کتابخانه: تا زمان انتشار پچ رسمی، شرط حلقه (loop) در تابع decode_array_index_from_pointer باید به (position = 0; (pointer[position] >= ‘0’) && (pointer[position] <= ‘9’); position++) تغییر یابد تا تنها کاراکترهای عددی پردازش شوند یا از کتابخانه جایگزین استفاده گردد.
- اعتبارسنجی و پاکسازی ورودیها: تمام رشتههای JSON که توسط برنامه دریافت میشوند باید قبل از پردازش به دقت اعتبارسنجی و پاکسازی شوند تا از ارسال دادههای مخرب جلوگیری شود.
- ایجاد محدودیتهای سطح برنامه: اگر کتابخانه cJSON در APIهای شبکه یا دستگاههای IoT استفاده میشود، محدودیتهایی برای جلوگیری از ارسال دادههای مخرب توسط کاربران یا دستگاههای خارجی اعمال شود.
- مانیتورینگ و لاگگیری: لاگگیری دقیق از ورودیهای JSON و عملکردهای غیرعادی میتواند به شناسایی تلاشهای سوءاستفاده کمک کند.
- آموزش توسعهدهندگان: توسعهدهندگان باید با ریسکهای ناشی از پردازش ورودیهای غیرایمن و اهمیت اعتبارسنجی آرایهها آشنا باشند.
اجرای این اقدامات میتواند ریسک سوءاستفاده از آسیبپذیری را به حداقل برساند، امنیت برنامهها و دستگاههای تحت تاثیر را بهبود بخشد و از بروز خرابیهای ناخواسته یا نقض دادهها جلوگیری کند.
امکان استفاده در تاکتیک های Mitre attack
- Initial Access (TA0001)
مهاجم میتواند با ارسال رشته JSON مخرب به برنامه یا API آسیبپذیر که از cJSON استفاده میکند، دسترسی اولیه به آسیبپذیری را ایجاد کند. این بهرهبرداری از راه دور و بدون نیاز به احراز هویت انجام میشود. - Discovery (TA0007)
مهاجم میتواند با بهرهبرداری، اطلاعاتی از ساختار حافظه یا وضعیت آرایهها به دست آورد که ممکن است برای حملات بعدی مفید باشد. - Impact (TA0040)
پیامد اصلی شامل خرابی برنامه، توقف عملیات (DoS) و احتمال افشای اطلاعات حافظه است که امنیت و در دسترس بودن برنامه را تحت تأثیر قرار میدهد.
منابع
- https://www.cve.org/CVERecord?id=CVE-2025-57052
- https://www.cvedetails.com/cve/CVE-2025-57052/
- https://x-0r.com/posts/cJSON-Array-Index-Parsing-Vulnerability
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2025-57052
- https://vuldb.com/?id.322398
- https://nvd.nist.gov/vuln/detail/CVE-2025-57052
- https://cwe.mitre.org/data/definitions/129.html
- https://cwe.mitre.org/data/definitions/125.html