آسیب پذیری های روز صفر در نرم افزار SolarWinds و پروتکل RabbitMQ

5 خرداد 1404 - خواندن 3 دقیقه - 23 بازدید

 آسیب پذیری های روز صفر در نرم افزار SolarWinds و پروتکل RabbitMQ

مقدمه

یکی از اصلی ترین نرم افزارهای مدیریت و نظارت بر شبکه، SolarWinds است که در سال های اخیر به دلیل وجود چندین آسیب پذیری روز صفر، توجه زیادی را به خود جلب کرده است. این آسیب پذیری ها می توانند به سوءاستفاده های جدی منجر شوند و امنیت سیستم های تحت پوشش این نرم افزار را به خطر بیندازند. در این یادداشت، به بررسی یکی از پروتکل های کلیدی استفاده شده در SolarWinds، یعنی RabbitMQ، و آسیب پذیری های مرتبط با آن می پردازیم.

پروتکل RabbitMQ

RabbitMQ یک پروتکل پیام رسانی است که بر مبنای TCP کار می کند و به طور خاص بر روی پورت 5671 فعالیت می کند. این پروتکل امکان ارسال پیام های AMQP (Advanced Message Queuing Protocol) را فراهم می آورد. پیام های AMQP می توانند انواع مختلفی داشته باشند و روش های متفاوتی برای ارسال داده ها ارائه می دهند.

نوع پیام ها و هدرها

یکی از ویژگی های مهم RabbitMQ، نوع Content header است که می تواند نوع داده های Serialize را ارسال کند. در Properties پیام، اطلاعات مربوط به مکان دریافت کننده و نحوه پردازش داده ها مشخص می شود. این اطلاعات می توانند به نوعی به کنترل فرآیند پردازش پیام کمک کنند، اما در برخی موارد، عدم کنترل مناسب بر روی مقادیر Serialize می تواند به بروز آسیب پذیری های جدی منجر شود.

آسیب پذیری های شناسایی شده

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

تابع HandleBasicDeliver

در تصویر موجود، تابع HandleBasicDeliver پیام را دریافت کرده و در موقعیت 3 اقدام به بازگرداندن مقدار به تابع می کند. این عمل می تواند به پردازش نادرست پیام ها و بروز آسیب پذیری های امنیتی منجر شود.

تابع Consume

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

نتیجه گیری

آسیب پذیری های روز صفر در نرم افزار SolarWinds و پروتکل RabbitMQ، چالش های جدی برای امنیت شبکه ها و سیستم های تحت پوشش این نرم افزار ایجاد کرده است. با توجه به عدم کنترل بر روی مقادیر Serialize و نحوه پردازش پیام ها، ضرورت دارد که توسعه دهندگان و مدیران سیستم ها اقدامات لازم را برای شناسایی و رفع این آسیب پذیری ها انجام دهند.

این یادداشت به عنوان یک هشدار به جامعه امنیت سایبری و توسعه دهندگان نرم افزارها ارائه می شود تا به اهمیت کنترل و نظارت بر داده های ورودی و خروجی در پروتکل های پیام رسانی توجه بیشتری داشته باشند.