PostgreSQL وصله‌ای برای CVE-2026-6471 منتشر کرد؛ رفع نقص 12 ساله رمزگشایی منطقی

یک آسیب‌پذیری قدیمی در مکانیزم رمزگشایی منطقی PostgreSQL شناسایی و با وصله‌ای که امتیاز CVSS برابر 7.2 دارد، اصلاح شد. این مشکل با شناسه CVE-2026-6471 ثبت شده و به حساب‌هایی با صفت REPLICATION امکان اجرای کد در سطح کاربر سیستم‌عامل سرور را می‌داد.

نسخه‌های متاثر و پیش‌نیازهای بهره‌برداری

آسیب‌پذیری از زمان معرفی رمزگشایی منطقی در PostgreSQL 9.4 (سال 2014) وجود داشته و نسخه‌های قبل از PostgreSQL 18.6، 17.11، 16.15، 15.19 و 14.24 تحت‌تأثیر قرار می‌گیرند. برای بهره‌برداری لازم است که: یک حساب با صفت REPLICATION وجود داشته باشد و سرور با wal_level = logical تنظیم شده باشد. بسیاری از ابزارهای بکاپ، سرورهای standby، لوله‌های CDC و سامانه‌های مانیتورینگ این شرایط را دارند و در معرض خطر قرار می‌گیرند.

نمایش تنظیمات wal_level و رمزگشایی منطقی در PostgreSQL

روش حمله

مهاجم می‌توانست نام پلاگین خروجی را در فرمان CREATE_REPLICATION_SLOT وارد کند و این رشته مستقیماً به تابع بارگذاری کتابخانه ارسال می‌شد. محدودیت‌های مسیرِ بارگذاری که کاربران غیرسوپر را به دایرکتوری‌های مشخصی محدود می‌کند، در مسیر replication اعمال نمی‌شوند؛ پارسر پروتکل replication تقریباً هر کاراکتری را در نام پلاگین دوتایی-نقل‌قول‌شده می‌پذیرد، بنابراین مسیر کامل فایل‌سیستم یا مسیر شبکه‌ای دقیقاً به بارگذار منتقل می‌شود.

روی ویندوز امکان استفاده از مسیر شبکه‌ای SMB و بارگذاری کتابخانه از ماشینی که مهاجم کنترل می‌کند وجود داشت، بدون نیاز به نوشتن فایل روی هدف. روی لینوکس و macOS دستیابی به همین نتیجه معمولاً مستلزم فعال‌بودن NFS automount است؛ در غیر این صورت مهاجم باید بتواند فایل را روی دیسک سرور بنویسد. کدی که به این صورت بارگذاری می‌شود، در فرایند backend با امتیازات کاربر سیستم‌عامل postgres اجرا شده و امکان ارتقای سطح دسترسی یا ایجاد مکانیزم‌های پایداری را فراهم می‌آورد.

اصلاح و رفتار جدید

وصله منتشرشده در تاریخ 13 اوت پارامتر سروری جدیدی به نام output_plugin_libraries معرفی می‌کند. این پارامتر یک فهرست سفید از کتابخانه‌هایی مشخص می‌کند که به‌عنوان پلاگین‌های خروجی رمزگشایی منطقی قابل بارگذاری هستند. مقدار پیش‌فرض این پارامتر 'pgoutput, test_decoding' است؛ بنابراین نصب‌هایی که از پلاگین‌های دیگر مانند wal2json یا decoderbufs استفاده می‌کنند، پس از به‌روزرسانی تا زمانی که مدیر سیستم آن کتابخانه‌ها را به فهرست اضافه کند و پیکربندی را بارگذاری مجدد نماید، درخواست‌های رمزگشایی منطقی برایشان رد خواهد شد.

در صورت تلاش برای بارگذاری پلاگین غیرمجاز، خطا به‌صورت ERROR: library "..." may not be used as an output plugin در لاگ ثبت می‌شود و راهنمایی برای تنظیم پارامتر نمایش داده خواهد شد. گروه توسعه PostgreSQL این تغییر را در یادداشت‌های انتشار 18.6 تشریح کرده است.

نمونه لاگ خطا در صورت استفاده از پلاگین غیرمجاز

راهنمای اجرایی برای مدیران سیستم

برای کاهش ریسک و آماده‌سازی پیش از به‌روزرسانی موارد زیر را انجام دهید:

  • شناسایی پلاگین‌های فعلی: SELECT DISTINCT plugin FROM pg_replication_slots WHERE plugin IS NOT NULL;
  • ارتقا به یکی از نسخه‌های امن: 18.6، 17.11، 16.15، 15.19 یا 14.24 (یا بسته معادل توزیع مورد استفاده).
  • اضافه‌کردن هر پلاگین غیرپیش‌فرض به output_plugin_libraries و بارگذاری مجدد پیکربندی با pg_ctl reload یا SELECT pg_reload_conf();؛ راه‌اندازی کامل ضرورتی ندارد.
  • در مهاجرت از نسخه 17 یا بالاتر، قبل از اجرای pg_upgrade --check مقدار output_plugin_libraries در خوشه جدید را تنظیم کنید؛ بررسی ممکن است در صورت عدم تطابق فهرست پلاگین‌ها شکست بخورد.

دامنه انتشار و مستندات گزارش

گزارش این مشکل به ولادیمیر توکارف و یو کونپنگ نسبت داده شده و گروه تحقیقاتی Cyera آن را «PostGREShell» نام‌گذاری کرده است. گزارش و تحلیل‌های فنی Cyera جزئیات بهره‌برداری را شرح می‌دهد؛ برای مطالعه می‌توانید به صفحه تحقیقاتی آن‌ها مراجعه کنید: Cyera Research.

بسته‌های اصلاح‌شده برای شاخه‌های پشتیبانی‌شده در Amazon RDS و توزیع‌های Debian، SUSE و Ubuntu منتشر شده‌اند؛ اوبونتو همچنین اعلان امنیتی USN-8653-1 را ارائه کرده است. پشتیبانی رسمی شاخه 14 تا تاریخ 12 نوامبر 2026 ادامه دارد و پس از آن انتشار اصلاحات متوقف خواهد شد.

چشم‌انداز عملیاتی

این رخداد نشان می‌دهد که مشخصه‌های پروتکل و مسیرهای استثنایی می‌توانند محدودیت‌های امنیتی را دور بزنند. بازبینی فهرست پلاگین‌ها، به‌روزرسانی بسته‌ها و تنظیم دقیق output_plugin_libraries براساس نیازهای عملیاتی، هم از سوءاستفاده فعلی جلوگیری می‌کند و هم سطح حمله آتی را کاهش می‌دهد.

برای مراجع فنی بیشتر مستندات رسمی PostgreSQL و بخش مربوط به wal_level را مشاهده کنید.