APT امکان اجرای کد دلخواه در قالب root را به مهاجمین می‌دهد!

محقق امنیتی Max Justicz یک آسیب‌پذیری در apt کشف کرده است که امکان اجرای کد از راه دور را در قالب کاربر root فراهم می‌کند.

 APT امکان اجرای کد دلخواه در قالب root را به مهاجمین می‌دهد!

محقق امنیتی Max Justicz یک آسیب‌پذیری در apt کشف کرده است که امکان اجرای کد از راه دور را در قالب کاربر root فراهم می‌کند. برای بهره‌برداری از این آسیب‌پذیری، مهاجم باید یک سرور جعلی راه بیاندازد و حمله‌ای از نوع مرد میانی را اجرا کند. این آسیب‌پذیری شناسه CVE-2019-3462 را به خود اختصاص داده است.

Apt یک سیستم مدیریت بسته‌های نرم‌افزاری (package management) است که در برخی توزیع‌های لینوکس مثل Debian یا Ubuntu به کار می‌رود. Max Justicz پیشتر نیز با کشف آسیب‌پذیری‌ای در apk (سیستم مدیریت بسته در لینوکس Alpine) خبرساز شده بود.

Apt برای دریافت داده از سرور، بسته به پروتکل مورد استفاده در سرور (http, https…) یک پردازه کارگر (worker process) را فراخوانی می‌کند که متخصص برقراری ارتباط با همان پروتکل خاص است. Apt و این کارگر برای برقراری ارتباط با یکدیگر ازطریق stdin/stdout برای هم پیام‌های متنی ارسال می‌کنند. محتوای این پیام متنی به درستی صحت‌سنجی نمی‌شود و همین جا است که امکان تزریق دستور به وجود می‌آید و آسیب‌پذیری رخ می‌دهد.

پیام‌های متنی گفته شده از پروتکلی مانند http استفاده می‌کنند. مثلا apt در ابتدای کار برای درخواست پکیج‌ها پیامی مانند این می‌فرستد:

 

600 URI Acquire

URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb

Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb

Expected-SHA256: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831

Expected-MD5Sum: 27967ddb76b2c394a0714480b7072ab3

Expected-Checksum-FileSize: 20070

و کارگر با چنین پیامی پاسخ می‌دهد:

 
102 Status
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Message: Connecting to prod.debian.map.fastly.net
[…]
200 URI Start
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Size: 20070
Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000
 
201 URI Done
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb
Size: 20070
Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000
MD5-Hash: 27967ddb76b2c394a0714480b7072ab3
MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3
SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831
Checksum-FileSize-Hash: 20070

اگر سرور یک پیام از نوع http redirect به کلاینت (کارگر) بفرستد، کارگر پیامی مثل این به apt می‌فرستد:

 
 
103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
New-URI: http://example.com/new-uri

apt از روی این پیام تصمیم می‌گیرد که چه URLی را باید درخواست کند. فرض کنید سرور، در پیام ریدایرکت خود، پارامتر Location را به شکل زیر اعلام کند:

Location: /new-uri%0AFoo%3A%20Bar

آنگاه کارگر چنین پیامی را به apt می‌فرستد:

 
103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
New-URI: http://deb.debian.org/new-uri
Foo: Bar

اما سرور می‌تواند به جای Foo: Bar پارامترهای مربوط به امضای فایل مثل Expected-SHA256 را قرار دهد.

 

به‌روزرسانی

این اشکال در آخرین نسخه apt برطرف شده است و با به‌روزرسانی آن، مشکل برطرف می‌شود. اما برای آنکه در حین خود این به‌روزرسانی دچار حمله مذکور نشوید، می‌توانید دستورات به‌روزرسانی را به شکل زیر اجرا کنید:

 
$ sudo apt update -o Acquire::http::AllowRedirect=false
$ sudo apt upgrade -o Acquire::http::AllowRedirect=false

یا بسته apt را مستقیماً دانلود کنید.

 

نمایش اجرای حمله

حمله مذکور در این ویدئو نمایش داده می‌شود. کلاینت در بالا (یک کانتینر داکر) و سرور بدخواه در پایین نشان داده شده است:

 

منبع:

 

 

 

کلمات کلیدی