یک #آسیبپذیری بحرانی در تجهیزات Citrix Application Delivery Controller با نام سابق NetScaler ADC و Citrix Gateway با نام سابق NetScaler Gateway وجود دارد که میتواند منجر به اجرای کد از راه دور توسط مهاجم احراز هویت نشده، گردد. طبق تحلیل شرکت Positive Technologies این آسیبپذیری دارای امتیاز 10 در مقیاس CVSS 3.0 است و آسیبپذیری با این میزان حساسیت ممکن است هر 5 تا 10 سال یک بار در محصولات شرکتهای نرمافزاری بزرگ رخ دهد.
این آسیبپذیری تمام نسخههای پشتیبانی شده محصولات را تحت تأثیر قرار میدهد و هنوز وصلهای برای آن منتشر نشده است. با این وجود به علت حساسیت مسئله، Citrix راهکاری برای کاهش خطر این آسیبپذیری منتشر کرده است که در ادامه به آن خواهیم پرداخت. توصیه میشود از طریق لینک زیر برای دریافت اخبار بهروزرسانیهای Citrix ثبت نام کنید و به محض عرضه بهروزرسانی آن را اعمال کنید.
https://support.citrix.com/user/alerts
همچنین استفاده از دیوار آتش وب (WAF) و نرمافزارهای تحلیل ترافیک میتواند مانع حملات شود.
نحوه کاهش خطر آسیبپذیری
سیستم مستقل
دستورات زیر را از طریق رابط خط فرمان تجهیز اجرا کنید تا یک سیاست و اقدام واکنشی تعریف شود:
enable ns feature responder add responder action respondwith403 respondwith "\"HTTP/1.1 403 Forbidden\r\n\r\n\"" add responder policy ctx267027 "HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))" respondwith403 bind responder global ctx267027 1 END -type REQ_OVERRIDE save config
اطمینان حاصل کنید که تغییرات به رابطهای مدیریتی نیز اِعمال میشوند. دستورات زیر را از طریق رابط خط فرمان اجرا کنید.
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
در پیکربندی High Availability (HA)
روی تجهیز اصلی
enable ns feature responder add responder action respondwith403 respondwith "\"HTTP/1.1 403 Forbidden\r\n\r\n\"" add responder policy ctx267027 "HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))" respondwith403 bind responder global ctx267027 1 END -type REQ_OVERRIDE save config shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
بعد از بالا آمدن تجهیز اصلی، روی تجهیز ثانویه دستور زیر را اجرا کنید:
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
در پیکربندی خوشهای
روی CLIP
enable ns feature responder add responder action respondwith403 respondwith "\"HTTP/1.1 403 Forbidden\r\n\r\n\"" add responder policy ctx267027 "HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))" respondwith403 bind responder global ctx267027 1 END -type REQ_OVERRIDE save config shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
روی هر گره خوشه
shell nsapimgr_wr.sh -ysskip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
پارتیشن ادمین
switch ns partition default enable ns feature responder add responder action respondwith403 respondwith "\"HTTP/1.1 403 Forbidden\r\n\r\n\"" add responder policy ctx267027 "HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))" respondwith403 bind responder global ctx267027 1 END -type REQ_OVERRIDE save config shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0 shell "echo 'nsapimgr_wr.sh -ys skip_systemaccess_policyeval=0' >> /nsconfig/rc.netscaler" reboot
نحوه برگرداندن تغییرات (Standalone,CLIP, HA Primary)
unbind responder global ctx267027 rm responder policy ctx267027 rm responder action respondwith403 save config
دستور nsapi را از rc.netscaler حذف کنید (دستور زیر، فایل مذکور را به دنبال الگوی مربوط جستجو میکند و خطی را که اضافه شده بود پاک میکند).
shell nsapimgr_wr.sh -ys skip_systemaccess_policyeval=1 shell "sed -i '' '/skip_systemaccess_policyeval=0/d' /nsconfig/rc.netscaler" reboot
برای اعمال سیاست در هیچ کدام از حالات فوق نیازی به راهاندازی مجدد نیست. اما برای احتیاط بهتر است این کار انجام شود. زیرا ممکن است نشستهایی وجود داشته باشند که قبل از اعمال سیاست و از طریق آسیبپذیری ایجاد شده باشند که با راهاندازی مجدد حذف میشوند.
سایر نکات
تناقض اولویتها: اولویت داده شده به سیاست واکنشی فوق برابر است با 1. اگر سیاستهای دیگری با این اولویت وجود داشته باشند، ممکن است انتساب این سیاست دچار مشکل شود. بنابراین بهتر است اولویت سایر سیاستها را به طور مناسب تغییر دهید و اولویت این سیاست را روی مقدار 1 نگه دارید.
پرچم ‘skip_systemaccess_policyeval’: این پرچم اطمینان حاصل میکند که سیاستها روی ترافیک پورتال ادمین اجرا شوند. اگر IP پورتال ادمین در یک محیط امنسازی شده قرار داشته باشد، نیازی به این پرچم نیست. فعال کردن این پرچم ممکن است باعث مسدود شدن بعضی صفحات ادمین شود. در این صورت، پرچم را در هنگام عملیات نگهداری غیرفعال کرده و پس از اتمام کار خود آن را به مقدار 1 برگردانید.
گرههایی که از یک خوشه حذف شوند، آسیبپذیر اند: وقتی یک گره از خوشه حذف شود، سیاستهای فوق و در نتیجه تأثیر حفاظتی آن از بین میرود. در نتیجه گره حذف شده تحت حفاظت نخواهد بود.
دانلود لینک از رابط کاربری ادمین: رابط کاربری ادمین فعلی، لینکی برای دانلود افزونهها دارد. درون این لینک عبارت “vpns” وجود دارد و بنابراین پس از اعمالِ تغییرات فوق، در دسترس نخواهد بود.
/vpns/ در لینکهای backend: اگر در مسیر هر منبع وب سرورِ backend، عبارتِ /vpns/ وجود داشته باشد، آن منبع مسدود خواهد شد.
منابع: Citrix و Positive Technologies
- 17