Mga kahinaan sa networkd-dispatcher na nagbibigay-daan sa root access

Natukoy ng mga mananaliksik sa seguridad mula sa Microsoft ang dalawang kahinaan (CVE-2022-29799, CVE-2022-29800) sa serbisyo ng networkd-dispatcher, na may codenamed Nimbuspwn, na nagbibigay-daan sa isang walang pribilehiyong user na magsagawa ng mga arbitrary na command na may mga pribilehiyo sa ugat. Ang isyu ay naayos sa paglabas ng networkd-dispatcher 2.2. Wala pang impormasyon tungkol sa paglalathala ng mga update ayon sa mga pamamahagi (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Ginagamit ang Networkd-dispatcher sa maraming distribusyon ng Linux, kabilang ang Ubuntu, na gumagamit ng background process systemd-networkd para i-configure ang mga parameter ng network, at gumaganap ng mga function na katulad ng NetworkManager-dispatcher, i.e. ay nakikibahagi sa paglulunsad ng mga script kapag nagbago ang estado ng isang koneksyon sa network, halimbawa, ito ay ginagamit upang ilunsad ang isang VPN pagkatapos maitatag ang pangunahing koneksyon sa network.

Ang proseso sa background na nauugnay sa networkd-dispatcher ay tumatakbo bilang ugat at tumatanggap ng mga signal ng kaganapan sa pamamagitan ng D-Bus. Ang impormasyon tungkol sa mga kaganapang nauugnay sa mga pagbabago sa estado ng mga koneksyon sa network ay ipinapadala ng systemd-networkd service. Ang problema ay ang mga walang pribilehiyong user ay maaaring makabuo ng hindi umiiral na kaganapan ng estado at ma-trigger ang kanilang script na maisakatuparan bilang root.

Ang Systemd-networkd ay idinisenyo upang patakbuhin lamang ang mga script ng tagapangasiwa ng system na matatagpuan sa /etc/networkd-dispatcher na direktoryo at hindi naa-access para sa pagpapalit ng user, ngunit dahil sa isang kahinaan (CVE-2022-29799) sa file path processing code, nagkaroon ng posibilidad ng isang out-of-bounds na base na direktoryo at paglulunsad ng mga arbitrary na script. Sa partikular, kapag bumubuo ng landas ng file sa script, ginamit ang mga halaga ng OperationalState at AdministrativeState na ipinadala sa pamamagitan ng D-Bus, kung saan hindi na-clear ang mga espesyal na character. Ang umaatake ay maaaring bumuo ng kanyang sariling estado, na ang pangalan ay naglalaman ng mga character na "../" at i-redirect ang networkd-dispatcher na tawag sa isa pang direktoryo.

Ang pangalawang kahinaan (CVE-2022-29800) ay nauugnay sa isang kundisyon ng lahi - sa pagitan ng pagsuri sa mga parameter ng script (pag-aari ng ugat) at pagpapatakbo nito, nagkaroon ng maikling panahon, sapat upang palitan ang file at i-bypass ang pagsusuri kung ang ang script ay pagmamay-ari ng root user. Bilang karagdagan, ang networkd-dispatcher ay hindi nagsuri para sa mga simbolikong link, kabilang ang kapag nagpapatakbo ng mga script sa pamamagitan ng subprocess.Popen call, na makabuluhang pinasimple ang organisasyon ng pag-atake.

Operating technique:

  • Ang isang direktoryo na "/tmp/nimbuspwn" at isang simbolikong link na "/tmp/nimbuspwn/poc.d" ay nilikha na tumuturo sa direktoryo na "/sbin", na ginagamit upang suriin ang mga executable na file na pagmamay-ari ng root.
  • Para sa mga executable na file mula sa "/sbin", ang mga file na may parehong pangalan ay nilikha sa "/tmp/nimbuspwn" na direktoryo, halimbawa, para sa file na "/sbin/vgs" isang executable file na "/tmp/nimbuspwn/vgs" ay nilikha, na pagmamay-ari ng isang walang pribilehiyong user, kung saan inilalagay ang code na gustong patakbuhin ng umaatake.
  • Nagpapadala ng signal sa pamamagitan ng D-Bus sa proseso ng networkd-dispatcher na nagsasaad ng value na β€œ../../../tmp/nimbuspwn/poc” sa OperationalState. Upang magpadala ng signal sa namespace na "org.freedesktop.network1", ginamit ang kakayahang ikonekta ang mga humahawak nito sa systemd-networkd, halimbawa, sa pamamagitan ng mga manipulasyon sa gpgv o epmd, o maaari mong samantalahin ang katotohanan na systemd-networkd ay hindi tumatakbo bilang default (halimbawa, sa Linux Mint).
  • Pagkatapos matanggap ang signal, ang Networkd-dispatcher ay bubuo ng isang listahan ng mga executable na file na pagmamay-ari ng root user at available sa direktoryo na "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", na talagang nagli-link sa "/sbin".
  • Sa sandaling natanggap ang listahan ng mga file, ngunit hindi pa nailunsad ang script, ang simbolikong link ay inire-redirect mula sa "/tmp/nimbuspwn/poc.d" patungo sa "/tmp/nimbuspwn" at ilulunsad ng networkd-dispatcher ang script na hino-host ng umaatake na may mga karapatan sa ugat.

Mga kahinaan sa networkd-dispatcher na nagbibigay-daan sa root access


Pinagmulan: opennet.ru

Magdagdag ng komento