یک آسیبپذیری امنیتی در نرمافزار LibreOffice شناسایی شده است که در فرآیند تبدیل فونتهای CFF به Type 1 رخ میدهد. این عملیات معمولاً زمانی اتفاق میافتد که کاربر اقدام به Subset کردن یک فونت یا خروجی گرفتن از سند به فرمت PDF میکند.
جزئیات فنی نقص امنیتی
از آنجایی که فونتهای CFF میتوانند در اسناد جاسازی (Embed) شوند، این نقص در مرحله تبدیل اپراتورها فعال میگردد. در نسخههای آسیبپذیر، اپراتورهای تبدیل شده در یک بافر با اندازه ثابت (Fixed size buffer) نوشته میشدند، بدون اینکه بررسی شود آیا حجم دادهها با ظرفیت بافر مطابقت دارد یا خیر.
در نتیجه، اگر یک Glyph حاوی تعداد زیادی اپراتور باشد، منجر به وقوع Stack Buffer Overflow شده و دادهها فراتر از محدوده بافر نوشته میشوند. این وضعیت میتواند منجر به کرش کردن برنامه یا در سناریوهای پیچیدهتر، اجرای کد از راه دور (RCE) شود.
راهکار اصلاحی
در نسخههای بهروزرسانی شده، مکانیزم ردیابی ظرفیت باقیمانده (Remaining capacity) پیادهسازی شده است؛ به گونهای که به محض پر شدن بافر، فرآیند تبدیل متوقف شده و از سرریز شدن حافظه جلوگیری میشود.