Ang kahinaan sa ksmbd module ng Linux kernel, na nagbibigay-daan sa iyong malayuang isagawa ang iyong code

Ang isang kritikal na kahinaan ay natukoy sa ksmbd module, na kinabibilangan ng pagpapatupad ng isang file server batay sa SMB protocol na binuo sa Linux kernel, na nagbibigay-daan sa iyong malayuang isagawa ang iyong code gamit ang mga karapatan sa kernel. Ang pag-atake ay maaaring isagawa nang walang pagpapatunay; sapat na ang ksmbd module ay isinaaktibo sa system. Lumilitaw ang problema mula noong kernel 5.15, na inilabas noong Nobyembre 2021, at tahimik na naayos sa mga update na 5.15.61, 5.18.18 at 5.19.2, na inilabas noong Agosto 2022. Dahil hindi pa nakatalaga ang CVE identifier sa isyu, walang eksaktong impormasyon tungkol sa kung paano ayusin ang isyu sa mga distribusyon.

Ang mga detalye tungkol sa pagsasamantala sa kahinaan ay hindi pa nabubunyag; alam lamang na ang kahinaan ay sanhi ng pag-access sa isang nakalaya na lugar ng memorya (Use-After-Free) dahil sa kawalan ng pagsuri sa pagkakaroon ng isang bagay bago magsagawa ng mga operasyon sa ibabaw nito. Ang problema ay dahil sa ang katunayan na ang smb2_tree_disconnect() function ay pinalaya ang memorya na inilaan para sa ksmbd_tree_connect na istraktura, ngunit pagkatapos noon ay mayroon pa ring pointer na ginamit kapag nagpoproseso ng ilang mga panlabas na kahilingan na naglalaman ng mga utos ng SMB2_TREE_DISCONNECT.

Bilang karagdagan sa nabanggit na kahinaan, 4 na hindi gaanong mapanganib na mga problema ang naayos din sa ksmbd:

  • ZDI-22-1688 - remote code execution na may mga kernel rights dahil sa file attribute processing code na hindi sinusuri ang aktwal na laki ng external na data bago ito kopyahin sa isang nakalaang buffer. Ang kahinaan ay nababawasan ng katotohanan na ang pag-atake ay maaari lamang isagawa ng isang napatotohanang user.
  • ZDI-22-1691 - malayuang impormasyon na tumagas mula sa memorya ng kernel dahil sa maling pagsusuri ng mga parameter ng input sa SMB2_WRITE command handler (ang pag-atake ay maaari lamang isagawa ng isang authenticated user).
  • ZDI-22-1687 - malayong pagtanggi sa serbisyo na sanhi ng pagkaubos ng magagamit na memorya sa system dahil sa hindi tamang paglabas ng mga mapagkukunan sa SMB2_NEGOTIATE command handler (ang pag-atake ay maaaring isagawa nang walang pagpapatunay).
  • ZDI-22-1689 - Remote kernel crash dahil sa kakulangan ng wastong pagpapatunay ng mga parameter ng SMB2_TREE_CONNECT command, na nagreresulta sa isang read mula sa isang lugar sa labas ng buffer (ang pag-atake ay maaari lamang isagawa ng isang authenticated user).

Ang suporta para sa pagpapatakbo ng isang SMB server gamit ang ksmbd module ay naroroon sa Samba package mula noong inilabas ang 4.16.0. Hindi tulad ng isang user-space SMB server, ang ksmbd ay mas mahusay sa mga tuntunin ng pagganap, pagkonsumo ng memorya, at pagsasama sa mga advanced na tampok ng kernel. Ang Ksmbd ay itinuturing bilang isang mataas na pagganap, naka-embed na handa na extension ng Samba na sumasama sa mga tool at library ng Samba kung kinakailangan. Ang ksmbd code ay isinulat nina Namjae Jeon ng Samsung at Hyunchul Lee ng LG, at ang kernel ay pinananatili ni Steve French ng Microsoft, isang maintainer ng CIFS/SMB2/SMB3 subsystem sa Linux kernel at isang matagal nang miyembro ng Samba development team , na nag-ambag ng malaking kontribusyon sa pagpapatupad ng suporta para sa mga protocol ng SMB/CIFS sa Samba at Linux.

Pinagmulan: opennet.ru

Magdagdag ng komento