ncursesمجموعه‌ای از نقص‌های تخریب حافظه در کتابخانه برنامه‌نویسی [۱]ncurses (مخفف new curses[2]) کشف شده است که می‌تواند توسط عوامل تهدید برای اجرای کدهای مخرب در سیستم‌های آسیب‌پذیر لینوکس و macOS مورد بهره‌برداری قرار گیرد.

Jonathan Bar Or، Emanuele Cozzi و Michael Pearse، محققین Microsoft Threat Intelligence، در گزارشی فنی که در تاریخ ۱۴ سپتامبر ۲۰۲۳ منتشر شد، گفتند[۳]: با استفاده از environment variable poisoning، مهاجمان می‌توانند این آسیب‌پذیری‌ها را برای افزایش امتیازات و اجرای کد در زمینه برنامه هدف یا اجرای سایر اقدامات مخرب زنجیر‌ کنند.

این آسیب‌پذیری‌ها، که مجموعاً به‌عنوان [۴]CVE-2023-29491 (امتیاز ۸/۷ در مقیاس CVSS) ردیابی می‌شوند، از آوریل ۲۰۲۳ برطرف شده‌اند[۵]. مایکروسافت اعلام کرد که با اپل برای رفع[۶] مشکلات[۷] مخصوص [۸]macOS مربوط به این نقص‌ها نیز همکاری کرده است.

متغیرهای محیطی مقادیر تعریف شده توسط کاربر هستند که می‌توانند توسط چندین برنامه در یک سیستم استفاده شوند و می‌توانند بر نحوه رفتار آنها در سیستم تأثیر بگذارند. دست‌کاری متغیرها می‌تواند باعث شود برنامه‌ها عملیات غیرمجاز دیگری را انجام دهند.

ممیزی کد مایکروسافت و fuzzing نشان داد که کتابخانه ncurses چندین متغیر محیطی، از جمله TERMINFO را جستجو می‌کند که می‌تواند مسموم شود و با نقص‌های شناسایی شده برای دستیابی به افزایش امتیاز ترکیب شود. [۹]Terminfo پایگاه‌داده‌ای[۱۰] است که برنامه‌ها را قادر می‌سازد تا از پایانه‌های نمایشگر به شیوه‌ای مستقل از دستگاه استفاده کنند.

این نقص‌ها شامل نشت اطلاعات stack، سردرگمی نوع رشته پارامتری، خطای off-by-one، stack خارج از محدوده در طول تجزیه فایل پایگاه‌داده terminfo، و DoS با رشته‌های لغو شده است.

محققان می‌گویند: «آسیب‌پذیری‌های کشف‌شده می‌تواند توسط مهاجمان برای افزایش امتیازات و اجرای کد در چارچوب یک برنامه هدف مورد بهره‌برداری قرار گیرد. بااین‌وجود، به‌دست‌آوردن کنترل یک برنامه از طریق بهره‌برداری از آسیب‌پذیری‌های تخریب حافظه مستلزم یک حمله چندمرحله‌ای است.»

این آسیب‌پذیری‌ها ممکن است برای بالابردن امتیازات، مانند بهره‌برداری از نشت اطلاعات stack برای به‌دست‌آوردن موارد اولیه خواندن دلخواه همراه با بهره‌برداری از سرریز stack برای به‌دست‌آوردن یک نوشتن اولیه، نیاز به زنجیرشدن به یکدیگر داشته باشند.

 

منابع

[۱] https://invisible-island.net/ncurses/

[۲] https://man7.org/linux/man-pages/man3/ncurses.3x.html

[۳] https://www.microsoft.com/en-us/security/blog/2023/09/14/uncursing-the-ncurses-memory-corruption-vulnerabilities-found-in-library/

[۴] https://nvd.nist.gov/vuln/detail/CVE-2023-29491

[۵] https://invisible-island.net/ncurses/NEWS.html#t20230408

[۶] https://support.apple.com/en-us/HT213845

[۷] https://support.apple.com/en-us/HT213844

[۸] https://support.apple.com/en-us/HT213843

[۹] https://man7.org/linux/man-pages/man5/terminfo.5.html

[۱۰] https://invisible-island.net/ncurses/terminfo.src.html

[۱۱] https://thehackernews.com/2023/09/microsoft-uncovers-flaws-in-ncurses.html