یک آسیبپذیری امنیتی با شدت High در سیستم نشر ReactPress شناسایی شده است که به مهاجمان اجازه میدهد بدون نیاز به احراز هویت، حملات تزریق کد SQL (SQL Injection) را اجرا کنند.
جزئیات فنی آسیبپذیری
در نسخههای پیش از 3.7.0، نقاط انتهایی (Endpoints) مربوط به لیست API در ReactPress، شرایط QueryBuilder در TypeORM را با استفاده از پارامترهای ارسالی در HTTP Query که پاکسازی نشده بودند، ایجاد میکردند. این پارامترها به عنوان شناسههای ستون SQL (مانند article.${key}) مورد استفاده قرار میگرفتند.
اگرچه TypeORM مقادیر (Values) را پارامتری میکند، اما نام ستونها را پارامتری نمیسازد. این نقص باعث میشود عوامل تهدید بتوانند از طریق کلیدهای دستکاری شده در Query String، کدهای SQL مخرب را تزریق کرده و به دادههای حساس دسترسی پیدا کنند.
راهکارهای مقابله و رفع مشکل
- بهروزرسانی: توصیه میشود تمامی کاربران سریعاً به نسخه 3.7.0 یا نسخههای جدیدتر ارتقا دهند تا این نقص امنیتی برطرف شود.
- راهکار موقت (Workaround): در صورتی که بهروزرسانی فوری امکانپذیر نیست، باید یک لیست سفید (Allowlist) از نام ستونهای مجاز برای فیلترها تعریف شود تا پیش از جایگذاری در کوئری، اعتبار آنها بررسی گردد.