Осебиятҳо дар шабакавӣ-диспетчер, ки дастрасии решаро фароҳам меоранд

Муҳаққиқони амниятӣ аз Microsoft ду осебпазириро (CVE-2022-29799, CVE-2022-29800) дар хидмати шабакавӣ-диспетчер бо номи рамзи Nimbuspwn муайян карданд, ки ба корбари беимтиёз имкон медиҳад фармонҳои худсаронаро бо имтиёзҳои реша иҷро кунад. Мушкилот дар нашри диспетчери шабакавӣ 2.2 ҳал карда шудааст. Дар бораи нашри навсозиҳо аз рӯи дистрибюторҳо (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux) то ҳол маълумот нест.

Networkd-dispatcher дар бисёр дистрибюторҳои Linux, аз ҷумла Ubuntu, истифода мешавад, ки раванди пасзаминаи systemd-networkd-ро барои танзими параметрҳои шабака истифода мебарад ва вазифаҳои шабеҳи NetworkManager-dispatcher, яъне. ҳангоми тағир додани ҳолати пайвасти шабака ба оғози скриптҳо машғул аст, масалан, барои оғоз кардани VPN пас аз таъсиси пайвасти асосии шабака истифода мешавад.

Раванди замина, ки бо шабакавӣ-диспетчер алоқаманд аст, ҳамчун реша кор мекунад ва сигналҳои ҳодисаро тавассути D-Bus қабул мекунад. Маълумот дар бораи рӯйдодҳои марбут ба тағирёбии ҳолати пайвастҳои шабакавӣ аз ҷониби хидмати systemd-networkd фиристода мешавад. Мушкилот дар он аст, ки корбарони беимтиёз метавонанд як ҳодисаи ҳолати мавҷуда тавлид кунанд ва скрипти худро ҳамчун реша иҷро кунанд.

Systemd-networkd барои иҷро кардани танҳо скриптҳои коркарди система тарҳрезӣ шудааст, ки дар директорияи /etc/networkd-dispatcher ҷойгиранд ва барои иваз кардани корбар дастрас нестанд, аммо аз сабаби осебпазирӣ (CVE-2022-29799) дар коди коркарди роҳи файл, имконияти феҳристи берун аз ҳудуди базавӣ ва оғози скриптҳои худсарона. Аз ҷумла, ҳангоми ташаккули роҳи файл ба скрипт, арзишҳои OperationalState ва AdministrativeState, ки тавассути D-Bus интиқол дода мешаванд, истифода мешуданд, ки дар онҳо аломатҳои махсус тоза карда нашудаанд. Ҳамлагар метавонад ҳолати шахсии худро тавлид кунад, ки номи он аломатҳои "../" -ро дар бар мегирад ва занги диспетчери шабакавиро ба директорияи дигар равона мекунад.

Осебпазирии дуюм (CVE-2022-29800) ба ҳолати мусобиқа алоқаманд аст - байни санҷиши параметрҳои скрипт (тааллуқ ба реша) ва иҷро кардани он, як муддати кӯтоҳе буд, ки барои иваз кардани файл ва аз санҷиш гузаштан кофӣ буд, ки оё скрипт ба корбари реша тааллуқ дорад. Илова бар ин, networkd-dispatcher пайвандҳои рамзӣ, аз ҷумла ҳангоми иҷро кардани скриптҳо тавассути занги subprocess.Popen, ки ташкили ҳамларо ба таври назаррас содда кардааст, тафтиш накард.

Техникаи амалиёт:

  • Директорияи "/tmp/nimbuspwn" ва истиноди рамзӣ "/tmp/nimbuspwn/poc.d" сохта шудаанд, ки ба директорияи "/sbin" ишора мекунанд, ки барои тафтиши файлҳои иҷрошавандаи ба реша тааллуқдошта истифода мешавад.
  • Барои файлҳои иҷрошаванда аз “/sbin” файлҳои бо ҳамон ном дар директорияи “/tmp/nimbuspwn” сохта мешаванд, масалан, барои файли “/sbin/vgs” файли иҷрошавандаи “/tmp/nimbuspwn/vgs” аст. сохта шудааст, ки ба корбари беимтиёз тааллуқ дорад, дар он коде, ки ҳамлагар мехоҳад иҷро кунад, ҷойгир карда мешавад.
  • Сигнал тавассути D-Bus ба раванди шабакавӣ-диспетчер фиристода мешавад, ки арзиши "../../../tmp/nimbuspwn/poc" -ро дар OperationalState нишон медиҳад. Барои фиристодани сигнал дар фазои номи "org.freedesktop.network1", қобилияти пайваст кардани коркардкунандагони он ба systemd-networkd истифода шудааст, масалан, тавассути манипуляцияҳо бо gpgv ё epmd, ё шумо метавонед аз он истифода баред, ки systemd-networkd бо нобаёнӣ кор намекунад (масалан, дар Linux Mint).
  • Пас аз гирифтани сигнал, Networkd-dispatcher рӯйхати файлҳои иҷрошавандаро месозад, ки ба корбари реша тааллуқ дорад ва дар директорияи "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d" мавҷуд аст. ки воқеан ба "/ sbin" пайваст мешавад.
  • Дар лаҳзаи қабули рӯйхати файлҳо, вале скрипт ҳанӯз оғоз нашудааст, истиноди рамзӣ аз “/tmp/nimbuspwn/poc.d” ба “/tmp/nimbuspwn” равона карда мешавад ва шабакавӣ-диспетчер скрипт аз ҷониби ҳамлакунанда бо ҳуқуқи реша ҷойгир шудааст.

Осебиятҳо дар шабакавӣ-диспетчер, ки дастрасии решаро фароҳам меоранд


Манбаъ: opennet.ru

Илова Эзоҳ