افشای آسیبپذیری روز صفر در ژئوسرور و آغاز تلاشهای اکسپلویت
این آسیبپذیری روز صفر در تاریخ 12 آگوست 2026، برای نخستین بار توسط پژوهشگری با نام کاربری @q1uf3ng در شبکه اجتماعی X افشا شد. این پژوهشگر اعلام کرد که تابع jsonArrayContains در ژئوسرور امکان تزریق SQL غیرمجاز (Unauthorized SQL Injection) را فراهم میکند و در صورت استفاده از پایگاه داده با سطح دسترسی ادمین سیستم، دستیابی به اجرای کد از راه دور (RCE) امکانپذیر خواهد بود.
پلتفرم هوش تهدید (Threat Intelligence) و مدیریت سطح مواجهه با تهدیدات watchTowr اعلام کرد که تنها چند ساعت پس از انتشار عمومی جزئیات این ضعف امنیتی، نخستین تلاشهای اکسپلویت را مشاهده کرده است. این شرکت تاکنون صدها تلاش برای اکسپلویت را شناسایی کرده که منشأ آنها تنها تعداد محدودی آدرس IP بوده است.
مهاجمان در حال شناسایی سامانههای آسیبپذیر هستند
به گفته پژوهشگران شرکت watchTowr، مهاجمان در حال بررسی سامانههای مختلف در سراسر اینترنت برای شناسایی نمونههای آسیبپذیر هستند. مهاجمان با ارسال درخواستهای آزمایشی، واکنش سامانهها را میسنجند؛ این درخواستها در بیشتر موارد باعث ایجاد خطا میشوند، اما مهاجمان پس از آن اقدام بیشتری برای اکسپلویت سامانه انجام نمیدهند.
با این حال، پژوهشگران هشدار میدهند که این وضعیت احتمالاً مدت زیادی ادامه نخواهد داشت. آسیبپذیری روز صفر جدید در شرایطی مطرح شده که ژئوسرور پیشتر نیز بارها هدف حملات قرار گرفته و آسیبپذیریهای آن در حملات واقعی مورد سوءاستفاده قرار گرفتهاند. همچنین چندین آسیبپذیری این پلتفرم پیشتر در فهرست KEV سازمان CISA ثبت شده است.
مهمتر از همه اینکه این ضعف امنیتی در برخی پیکربندیها میتواند در نهایت منجر به اجرای کد از راه دور (RCE) شود؛ موضوعی که احتمال تبدیل فعالیتهای شناسایی فعلی به حملات واقعی را افزایش میدهد.
توصیههای امنیتی تا زمان انتشار پچ
تا زمان انتشار پچ، سازمانهایی که از ژئوسرور استفاده میکنند باید نمونههای قابل دسترسی از طریق اینترنت را شناسایی کرده، دسترسی عمومی به آنها را محدود کنند و همزمان، انتشار پچ رسمی را نیز پیگیری نمایند.
سابقه ژئوسرور نشان میدهد که این اقدامات اهمیت زیادی دارند. در سال 2024، یک آسیبپذیری بحرانی در کامپوننت GeoTools ژئوسرور با شناسه CVE-2024-36401 و امتیاز CVSS 9.8 شناسایی شد که مهاجمان بهطور فعال از آن سوءاستفاده کردند. مهاجمان با نفوذ به سیستمهای آسیبپذیر، از آنها برای ایجاد باتنتهای حملات انکار سرویس توزیعشده (DDoS)، استخراج رمزارز و راهاندازی پروکسیهای خانگی (Residential Proxies) استفاده کردند.
انتشار پچ و مشخص شدن جزئیات فنی آسیبپذیری روز صفر
پروژه ژئوسرور با انتشار نسخههای 3.0.1، 2.28.5 و 2.27.6، پچ این آسیبپذیری بحرانی تزریق SQL را منتشر کرده است. این آسیبپذیری روز صفر اکنون با شناسه امنیتی GHSA-mqjf-5f49-2fjh در گیتهاب ثبت شده و امتیاز 9.8 از 10 در سیستم CVSS را دریافت کرده است.
توسعهدهندگان ژئوسرور در اطلاعیه امنیتی خود اعلام کردند که این ضعف هنگام اجرای فیلترهای OGC دیتاستور مبتنی بر PostGIS و در تابع jsonArrayContains ایجاد میشود. این آسیبپذیری زمانی رخ میدهد که PostGIS نسخه 12 یا بالاتر مورد استفاده قرار گیرد و پایگاه داده نیز دارای یک فیلد از نوع رشتهای یا JSON باشد.
در نسخههای 12 و بالاتر PostGIS، تابع jsonArrayContains(<column>, <pointer>, <value>) مقدار <value> را هنگام تولید دستور SQL، بدون ایمنسازی ورودی مستقیماً در عبارت SQL قرار میدهد. در نتیجه، ورودی مهاجم میتواند وارد ساختار دستور SQL شود و میتواند زمینه را برای تزریق SQL فراهم کند.
نسخههای آسیبپذیر پکیج GeoTools
این آسیبپذیری نسخههای زیر از پکیج Maven با نام org.geotools:gt-jdbc-postgis را تحت تأثیر قرار میدهد:
- نسخه 35.0: پچ شده در نسخه 35.1
- نسخههای 34.0 و بالاتر: پچ شده در نسخه 34.5
- نسخههای 33.1 و بالاتر: پچ شده در نسخه 33.6
مسیر تبدیل تزریق SQL به اجرای کد از راه دور
توسعهدهندگان اعلام کردند که آسیبپذیری فعلی، در واقع بازگشت آسیبپذیری پچشده CVE-2023-25158 است که بار دیگر در GeoTools ظاهر شده است. CVE-2023-25158 یک آسیبپذیری بحرانی تزریق SQL با امتیاز CVSS 9.8 بود که در فوریه 2023، همزمان با CVE-2023-25157 پچ شد.
به گفته پژوهشگران GeoCat، این آسیبپذیری پیشتر بهعنوان یک ضعف شناختهشده در کتابخانه GeoTools مطرح شده بود و با انتشار سه نسخه جدید ژئوسرور، پچ آن نیز در دسترس قرار گرفت.
پژوهشگران Hadrian در بررسی فنی خود اعلام کردند که منشأ آسیبپذیری روز صفر در بخشی از کد GeoTools قرار دارد؛ بخشی که فیلترهای زبان کوئری مشترک یا متنی (CQL) را برای دیتاستورهای مبتنی بر PostGIS به دستورات SQL تبدیل میکند.
در این بخش، مقداری که تحت کنترل مهاجم است، مستقیماً و بدون ایمنسازی ورودی در عبارت PostgreSQL jsonb_path_exists() قرار میگیرد. تابع آسیبپذیر مقدار ارسالشده توسط کاربر را که از طریق یک درخواست HTTP دریافت میشود، بدون پاکسازی ورودی و ایمنسازی مناسب، داخل یک عبارتSQL قرار میدهد. در نتیجه، ورودی مهاجم میتواند بخشی از دستور SQL تلقی شود و زمینه را برای تزریق SQL فراهم کند.
این تزریق SQL در شرایط خاص میتواند منجر به اجرای کد از راه دور (RCE) شود. مهاجم با استفاده از سرویس وب برای دسترسی به دادههای مکانی (Web Feature Service یا WFS) نسخه 1.0 میتواند شرایطی ایجاد کند که یک دستور دوم PostgreSQL در سطح اصلی کوئری اجرا شود.
در صورتی که ژئوسرور برای اتصال به PostgreSQL از حساب Superuser یا نقشی با مجوز pg_execute_server_program استفاده کند، این مسیر میتواند از تزریق SQL فراتر رفته و منجر به اجرای دستورات سیستمعامل روی میزبان پایگاه داده شود.
با این حال، برای سوءاستفاده از تزریق SQL نیازی به دسترسیهای سطحبالای PostgreSQL نیست. مهاجم حتی بدون چنین مجوزهایی نیز میتواند از این آسیبپذیری برای دسترسی به دادههایی استفاده کند که کاربر پایگاه داده مجاز به مشاهده آنهاست.

















