Gwendidau mewn anfonwr rhwydwaith sy'n caniatáu mynediad gwreiddiau

Mae ymchwilwyr diogelwch o Microsoft wedi nodi dau wendid (CVE-2022-29799, CVE-2022-29800) yn y gwasanaeth anfonwr rhwydwaith, o'r enw cod Nimbuspwn, sy'n caniatáu i ddefnyddiwr difreintiedig weithredu gorchmynion mympwyol gyda breintiau gwraidd. Mae'r mater yn sefydlog wrth ryddhau anfonwr rhwydwaith 2.2. Nid oes unrhyw wybodaeth am gyhoeddi diweddariadau yn ôl dosbarthiadau eto (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Defnyddir Networkd-dispatcher mewn llawer o ddosbarthiadau Linux, gan gynnwys Ubuntu, sy'n defnyddio'r broses gefndir systemd-networkd i ffurfweddu paramedrau rhwydwaith, ac yn cyflawni swyddogaethau tebyg i NetworkManager-dispatcher, h.y. yn lansio sgriptiau pan fydd cyflwr cysylltiad rhwydwaith yn newid, er enghraifft, fe'i defnyddir i lansio VPN ar ôl sefydlu'r prif gysylltiad rhwydwaith.

Mae'r broses gefndir sy'n gysylltiedig â dosbarthwr rhwydwaith yn rhedeg fel gwraidd ac yn derbyn signalau digwyddiad trwy'r D-Bus. Anfonir gwybodaeth am ddigwyddiadau sy'n gysylltiedig â newidiadau yng nghyflwr cysylltiadau rhwydwaith gan y gwasanaeth systemd-networkd. Y broblem yw y gall defnyddwyr difreintiedig gynhyrchu digwyddiad cyflwr nad yw'n bodoli a sbarduno eu sgript i gael ei gweithredu fel gwraidd.

Mae systemd-networkd wedi'i gynllunio i redeg sgriptiau trin system sydd wedi'u lleoli yn y cyfeiriadur /etc/networkd-dispatcher yn unig ac nad ydynt yn hygyrch i'w disodli gan ddefnyddwyr, ond oherwydd bregusrwydd (CVE-2022-29799) yn y cod prosesu llwybr ffeil, roedd a posibilrwydd o gyfeiriadur sylfaenol y tu allan i ffiniau a lansio sgriptiau mympwyol. Yn benodol, wrth ffurfio'r llwybr ffeil i'r sgript, defnyddiwyd y gwerthoedd OperationalState a AdministrativeState a drosglwyddwyd trwy D-Bus, lle na chliriwyd nodau arbennig. Gallai'r ymosodwr gynhyrchu ei gyflwr ei hun, yr oedd ei enw'n cynnwys y cymeriadau “../” ac ailgyfeirio'r alwad anfonwr rhwydwaith i gyfeiriadur arall.

Mae'r ail fregusrwydd (CVE-2022-29800) yn gysylltiedig â chyflwr hil - rhwng gwirio paramedrau'r sgript (yn perthyn i'r gwraidd) a'i redeg, roedd cyfnod byr o amser, yn ddigon i ddisodli'r ffeil a osgoi'r gwiriad a oedd y sgript yn perthyn i'r defnyddiwr gwraidd. Yn ogystal, nid oedd rhwydwaith-dosbarthwr yn gwirio am gysylltiadau symbolaidd, gan gynnwys wrth redeg sgriptiau trwy'r alwad subprocess.Popen, a oedd yn symleiddio trefniadaeth yr ymosodiad yn sylweddol.

Techneg gweithredu:

  • Crëir cyfeiriadur “/ tmp/nimbuspwn” a dolen symbolaidd “/ tmp/nimbuspwn/poc.d” gan bwyntio at y cyfeiriadur “/sbin”, a ddefnyddir i wirio am ffeiliau gweithredadwy sy'n eiddo i root.
  • Ar gyfer ffeiliau gweithredadwy o “/ sbin”, mae ffeiliau gyda’r un enw yn cael eu creu yn y cyfeiriadur “/ tmp/nimbuspwn”, er enghraifft, ar gyfer y ffeil “/ sbin/vgs” ffeil gweithredadwy “/ tmp/nimbuspwn/vgs” yw wedi'i greu, sy'n eiddo i ddefnyddiwr difreintiedig, y gosodir y cod y mae'r ymosodwr am ei redeg ynddo.
  • Anfonir signal trwy D-Bus i'r broses anfonwr rhwydwaith sy'n nodi'r gwerth “../../../tmp/nimbuspwn/poc” yn OperationalState. I anfon signal yn y gofod enw “org.freedesktop.network1”, defnyddiwyd y gallu i gysylltu ei drinwyr â systemd-networkd, er enghraifft, trwy driniaethau â gpgv neu epmd, neu gallwch fanteisio ar y ffaith bod systemd-networkd ddim yn rhedeg yn ddiofyn (er enghraifft, ar Linux Mint).
  • Ar ôl derbyn y signal, mae Networkd-dispatcher yn adeiladu rhestr o ffeiliau gweithredadwy sy'n eiddo i'r defnyddiwr gwraidd ac sydd ar gael yn y cyfeiriadur “/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”, sydd mewn gwirionedd yn cysylltu â "/sbin".
  • Ar hyn o bryd pan dderbynnir y rhestr o ffeiliau, ond nid yw'r sgript wedi'i lansio eto, mae'r cyswllt symbolaidd yn cael ei ailgyfeirio o “/tmp/nimbuspwn/poc.d” i “/tmp/nimbuspwn” a bydd networkd-dispatcher yn lansio'r sgript a gynhelir gan yr ymosodwr gyda hawliau gwraidd.

Gwendidau mewn anfonwr rhwydwaith sy'n caniatáu mynediad gwreiddiau


Ffynhonnell: opennet.ru

Ychwanegu sylw