#Solarwinds #Platform #Deserializtion #Bugs
همانطور که میدانید یکی از اصلی ترین نرم افزار های SolarWinds محصول مدیریت و نظارت بر شبکه است که طی سالهای اخیر چند آسیب پذیری روز صفر داشته است.

پروتکلی در SolarWinds استفاده میشود با نام RabbitMQ که بر مبنای TCP کار کرده و در تصویر بالا پکت ضبط شده آن را مشاهده میکنید.

این پروتکل بر روی پورت 5671 کار کرده و میتواند پیام های AMQP ارسال نماید، این پیام چند نوع و روش ارسال داده دارد.

که در نوع Content header (2) میتواند نوع داده Serialize ارسال کند و در Properties تصویر دوم مشخص میشود که دریافت کننده مقدار کجاست.

محقق با بررسی دقیق و مهندسی معکوس کد منبع، متوجه شده که در جریان ردیابی کد، هیچ کنترلی بر روی مقادیر Serialize نبوده و مقدار Properties در پیام، ظرفیت Deserialize شدن دارند.

در تصویر بالا تابع HandleBasicDeliver پیام در پروتکل را دریافت میکند و در موقعیت 3 اقدام به برگشت دادن مقدار به تابع میکند.

در تصویر دوم، Consume رو داریم که یک Method از IDisposable است و مقدار پیام دریافتی در Body را Deserialize میکند و عدم کنترل موجب اجرای کد شده است.

@Unk9vvN