شرکت VMware آسیبپذیری CVE-2021-22005 را بررسی کرده است و مشخص کرده که امکان اکسپلویت کردن این آسیبپذیری با انجام اقداماتی که در بخش راهکارها بیان شده است، از بین میرود.
این راهکار، درواقع یک راهکار موقت است تا وقتی که بهروزرسانیهای ثبت شده در VMSA-2021-0020 قابلیت اجرا شدن پیدا کنند.
سیستمهای VCSA که نسخهی ۷.0U2c با build ۱۸۳۵۶۳۱۴ را اجرا میکنند که در ۲۴ اوت منتشر شده و سیستمهای VCSA که نسخهی ۶.۷U3o با build ۱۸۴۸۵۱۶۶ را اجرا میکنند که در ۲۱ سپتامبر منتشر شده است، نسبت به این مسئله آسیبپذیر نیستند و نیازی نیست که این راهکار روی تجهیزهایی که این نسخهها را اجرا میکنند، اعمال گردد.
تمام نسخههای قبلی ۶.۷ و ۷.۰ آسیبپذیر هستند.
این راهکار همچنین به VCSAهایی اعمال میشود که بهعنوان PSCهای خارجی در یک محیط vCenter 6.7 اجرا میگردند.
نسخههای vCenter 6.5 در معرض این CVE نیستند و این راهکار بر روی هیچ ۶.۵ VCSA اعمال نمیشود.
برای مشتریانی که VCF را اجرا میکنند، لازم است که این راهکار بر روی تمام سیستمهای vCenter که در محیط اجرا میگردند، در هر دو حوزه مدیریت و بار کاری،. اعمال شود.
تأثیر و ریسک راهکارهای رفع آسیبپذیری VMware
وقتی که راهکار بر روی یک سیستم vCenter که ۶.۷ را اجرا میکند اعمال شود، هیچ تأثیری روی عملکرد ایجاد نخواهد شد.
روی سیستمهایی که ۷.۰ را اجرا میکنند یک تأثیر خیلی جزئی ایجاد میشود و کاربر در زمان کلیک روی «Sample Data» در قسمت «Administration – Customer Experience Improvement Program»، با پیام «JSON Deserialization Failed» مواجه میشود.
این گزینه فقط وقتی قابلدسترسی است که CEIP غیرفعال شده باشد.
پیادهسازی این راهکار هیچ تأثیری روی هیچ عملکردی که نیازمند فعال بودن CEIP داشته باشد ندارد، مثلاً:
- Skyline Health برای vSphere
- Skyline Health برای vSAN
همچنین هیچ تأثیری روی VMware Skyline Advisor وجود ندارد.
تصویر زیر خطای دریافت شده در پست ۷.۰ vCenterها را که این راهکار را اعمال کردهاند نشان میدهد.
نادیده گرفتن این خطا هیچ خطری ندارد.
راهکارهایی برای جلوگیری از آسیبپذیری
جهت پیادهسازی راهکار برای CVE-2021-22005 روی تجهیزهای مجازی مبتنی بر لینوکس (vCSA)، باید اقدامات زیر را انجام دهید:
vCenterهای ۶.۷ که روی ویندوز اجرا میشوند، تحت تأثیر CVE-2021-22005 قرار نمیگیرند.
هیچ الزامی برای اعمال این راهکار روی سیستمهای ۶.۷ Windows VC وجود ندارد.
این راهکار همچنین روی VCSAهایی اعمال میشوند که بهعنوان PSCهای خارجی در محیط vCenter 6.7 اجرا میگردند.
این راهکار نیازمند یک بروزرسانی به فایل «/etc/vmware-analytics/ph-web.xml» و ریاستارت سرویس VMware-Analytics است.
بروزرسانی فایل شامل «comment out» کردن تعدادی از ورودیها در فایل با استفاده از Tagهای «<!–» و «–>» است.
تغییرات لازم به نسخهی VMware vCenter بستگی دارند.
برای ۶.۷ U1b (Build ۱۱۷۲۶۸۸۸) و نسخههای قدیمیتر، یک Endpoint به نام «phTelemetryServlet» وجود دارد که باید Comment شود.
برای۶.۷ U2 (Build ۱۳۰۱۰۶۳۱) و نسخههای بعد از آن و تمام نسخههای ۷.۰، سه عدد Endpoint تحت تأثیر وجود دارد، یعنی Endpointهای «phTelemetryServlet»، «phPhApiServlet»، «phPhStgApiServlet».
گزینه ۱ – پیادهسازی راهکار از طریق اسکریپت VMSA-2021-0020
این اسکریپت فراهم شده است تا به مشتریان کمک کند راهکار ثبت شده را در زمان مناسب و بهطور خودکار اعمال کنند.
این اسکریپت تنها باید روی تجهیزهای vCenter و PSC آسیبپذیر اجرا گردد.
اگر سیستمها Patch شده یا به نسخههای اصلاحشدهی ۶.۷U3o یا ۷۰U2d بروزرسانی شده باشند، نباید این اسکریپت را اجرا کرد. Endpointها در این نسخهها بروزرسانی شدهاند و وقتی که دستور Curl که در انتهای مراحل دستورالعمل ثبت شده، اجرا شود، وضعیت « HTTP/1.1 400» را نشان میدهند.
(ویرایش: آخرین نسخه از اسکریپت ضمیمه نشده است. درصورتیکه روی یک سیستم Patchشده اجرا گردد، پیام «Environment is already patched for VMSA-2021-0020» را نمایش میدهد.)
برای استفاده از این رویکرد، باید فایل VMSA-2021-0020.py دانلود شود. سپس از یک ابزار جابهجایی فایل (مثلاً WinSCP) استفاده گردد تا فایل به تجهیزی کپی شود که میخواهید فایل را روی آن اجرا کنید.
اسکریپت فایل ph-web.xml را بروزرسانی میکند که روی تمام نسخههای ۶.۷ و ۷.۰ تحت تأثیر لازم است.
برای اهداف این سند، اسکریپت Python به دایرکتوری «/var/tmp» روی VCSA کپی شده است.
میتوان از هر دایرکتوری استفاده کرد، اما مکان فایل باید در دستورات زیر بروزرسانی گردد.
مراحل
- متصل شدن به vCSA با استفاده از SSH Session و اطلاعات اعتباری Root
- فهرست کردن محتوای دایرکتوری که فایل را در آن کپی کردهاید، برای اینکه اطمینان حاصل شود که فایل با موفقیت کپی شده است. در این مورد، فایل «/var/tmp» است. دستور را اجرا کنید و اطمینان حاصل کنید که فایل فهرست شده است.
ls -al /var/tmp/
- اجرای اسکریپت با اجرا کردن دستور زیر
تغییر مسیر رو به فایل بهصورت مناسب
نسخهی Python که باید مورداستفاده قرار گیرد به نسخهی دقیق vCenter بستگی دارد.
اسکریپت میتواند با Python، Python 3.5 یا Python 3.7 اجرا گردد.
python /var/tmp/VMSA-2021-0020.py
or
python3.5 /var/tmp/VMSA-2021-0020.py
or
python3.7 /var/tmp/VMSA-2021-0020.py
اسکریپت اجرا میشود و
- یک پشتیبانگیری از مسیر اصلاحنشدهی ph-web.xml ایجاد میکند
- فایل ph-web.xml را بروزرسانی میکند
- یک پشتیبانگیری از ph-web.xml بروزرسانیشده ایجاد میکند
- سرویس تجزیهوتحلیل را ریاستارت مینماید
- تائید میکند که تجهیز دیگر آسیبپذیر نیست
خروجی در تصویر زیر نمایش داده شده است (در این مثال اسکریپت با Python 3.5 اجرا شده)
بدین شکل «راهکار اسکریپتشده» تمام میشود
گزینهی ۲ – بهکارگیری راهکار از طریق مراحل دستی
- متصل شدن به vCSA با استفاده از یک SSH Session و اطلاعات اعتباری Root.
- پشتیبانگیری از فایل /etc/vmware-analytics/ph-web.xml:
cp /etc/vmware-analytics/ph-web.xml /etc/vmware-analytics/ph-web.xml.backup
- باز کردن فایل /etc/vmware-analytics/ph-web.xml در ویراستار متن
vi /etc/vmware-analytics/ph-web.xml
- محتوای این فایل مثل تصویر زیر است:
- فشار دادن کلید «I» روی کیبورد برای ورود به حالت «Insert»
- بررسی فهرستی که در شکل زیر نمایش داده شده است
- فشار دادن Enter
- تایپ کردن «<!—» همانطور که پایین نشان داده شده است:
- رفتن به خط «</bean>» درست پس از خط «<property name=”servlet” ref=”phPhStgApiServlet”/>»
در نسخههای قدیمیتر ۶.۷ (u1b یا قبلتر)، باید به خط «</bean>» درست بعد از خط «<property name=”servlet” ref=”phTelemetryServlet”/>» بروید.
- فشار دادن Enter و تایپ کردن «–>»
- فشار دادن کلید «Esc» روی کیبورد برای خروج از حالت Insert
- ذخیره کردن و خروج از فایل با تایپ کردن «:wq» و فشار دادن Enter
- ریاستارت کردن سرویس vmware-analytics با تایپ
service-control –restart vmware-analytics
- برای تائید اینکه راهکار مؤثر واقع شده است، میتوان با اجرای دستور زیر، تستی را انجام داد
curl -X POST “http://localhost:15080/analytics/telemetry/ph/api/hyper/send?_c&_i=test” -d “Test_Workaround” –H
“Content-Type: application/json” -v 2>&1 | grep HTTP
این کار باید خطای ۴۰۴ را نشان دهد
اطلاعات مرتبط
اگر دستور Curl که بالاتر ثبت شد روی یک نسخهی اصلاح شده یا بروزرسانیشده (۶.۷U3o/7.0U2d و جدیدتر) اجرا شود، باید یک پیام « HTTP/1.1 400» نمایش داده شود.
VCSA که ۷.0U2d build 18455184 را اجرا میکند
VCSA که ۶.۷U3o build 18485185 را اجرا میکند