áĄááááĄááťááşáážáŹ Linux read-only mode áážáŹáá˝ááˇáşááŹá¸áá˛áˇáááŻááşáá˝áąá O_RDONLY flag áá˛áˇáá˝ááˇáşááŹá¸áá˛áˇáááŻááşáá˝áą ááŤáážáááŻááş read-only mode áážáŹ mount ááŻááşááŹá¸áá˛áˇáááŻááşá áá áşáá˝áąáážáŹ áážááá˛áˇáááŻááşáá˝áąáĄááŤáĄáááş áááşáááˇáşáááŻááşáĄáá˝ááşáááᯠpage cache content áá˝áąááᯠoverwrite ááŻááşáááŻááşáá˛áˇ vulnerability áá áşáᯠ(CVE-2022-0847) ááᯠááąáŹáşááŻááşáááŻááşáá˛áˇááŤáááşá áááşáá˝áąáˇáážáŹááąáŹáˇ áᎠvulnerability ááᯠarbitrary process áá˝áąáá˛ááᯠcode áá˝áą inject ááŻááşáááŻááşáááᯠáá˝ááˇáşááŹá¸áá˛áˇáááŻááşáá˝áąáá˛á data áá˝áąáááŻáááşá¸ corrupt ááŻááşáááŻááşááŤáááşá áĽááᏠsshd process áĄáá˝ááş authorized_keys file áá˛áˇ content áá˝áąááᯠááźáŻááźááşáááŻááşááŤáááşá prototype exploit áá áşááŻááᯠá ááşá¸áááşáááŻáˇ ááááŻááşááŤáááşá
ááźáżááŹááᯠ2016 ááŻáážá áşáá˝ááş áážáŹáá˝áąáá˝áąáˇáážááá˛áˇááąáŹ Dirty COW áážááˇáş áážááşáá˝á˛á Dirty Pipe áááş Dirty COW áá˛áˇáááŻáˇ áĄáášáááŹááşáĄáááˇáşáá˝ááş áážáááąááąáŹáşáááşá¸ áĄááŻáśá¸ááťáááş áááŻáááŻáá˝ááşáá°ááźáąáŹááşá¸ ááŻááşáĄáááş Dirty Pipe ááž ááąá¸ááŹá¸ááŤáááşá áá˝ááşáááşááąáŤáşáážá ááąáŤááşá¸ááŻááşááŻááşááŹá¸ááąáŹ áááŻááşááťáŹá¸á áĄááťáááşáĄáááŻááşá¸áĄááźáŹá¸áĄáááŻááş áĄááťááˇáşááťááşááźá áŹá¸áážáŻááťáŹá¸áĄááźáąáŹááşá¸ áááŻááşááźáŹá¸ááťááşááťáŹá¸ááᯠáá˝á˛ááźááşá¸á áááşááźáŹááŹáá˝ááş áĄáŹá¸áááşá¸ááťááşááᯠáá˝á˛ááźááşá¸á áááşááźáŹááźááşá¸áá˝ááş áá˝á˛ááźááşá¸á áááşááźáŹááźááşá¸ () ááŻááşááąáŹááşááťááşáážááˇáş áĄáááşáááąáŹáşáááŻááąáŹ áááŻááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááááąáŹ ááŹááŹááž áážááşáááşá¸áááŻááşááťáŹá¸ááᯠááąáŤááşá¸ááŻááşááŻááşáááˇáşá áá áşáá˝ááş áĄááťáááşáĄáááŻááşá¸áĄááźáŹá¸áĄáááŻááş áĄááťááˇáşááťááşááźá áŹá¸áážáŻááᯠááąáŹáşááŻááşáá˝áąáˇáážááá˛áˇáááşá
áĄáŹá¸áááşá¸ááťááşáᏠkernel áááąá ááźáŽá¸ ááąáŤáşááŹááŤáááşá Linux 5.8 ááᯠáááá ááŻáážá áş áŠááŻááşááá˝ááş ááŻááşááźááşáá˛áˇááźáŽá¸á áááŻáááŻáááşáážáŹ áááşá¸áááş áá˝ááş áážáááąáááş Debian ááá ááŤááąáááˇáş áĄááźáąááś core ááᯠááááááŻááşááŤáá°á¸á Ubuntu 20.04 LTSá RHEL 8.x áážááˇáş openSUSE/SUSE 15 kernel ááťáŹá¸áááş áĄá áááŻááşá¸áá˝ááş áĄááąáŹááşá¸ branch ááťáŹá¸ááᯠáĄááźáąááśááŹá¸ááąáŹáşáááşá¸á ááźáżááŹááᯠáááŻááąááŹáá˝ááş backport ááŻááşáá˛áˇááźááşá¸ ááźá áşáááŻááşááŤáááş (áĄáááĄááť áĄááąá¸á áááş ááááááąá¸ááŤ)á ᤠdistribution ááťáŹá¸áááŻáˇ package update ááťáŹá¸ ááŻááşááźááşáážáŻááᯠá¤á áŹááťááşáážáŹááťáŹá¸áá˝ááş ááźáąááŹááśáááŻááşááŤáááş- Debian, SUSE , Ubuntu, RHEL, Fedora, Gentoo, Arch LinuxáĄáŹá¸áááşá¸ááťááşáĄáá˝ááş ááźááşáááşááťááşáá áşááŻááᯠ5.16.11á 5.15.25 áážááˇáş 5.10.102 ááŻááşááąáážáŻááťáŹá¸áá˝ááş ááąá¸ááŹá¸áááşá ááááşááąáŹááşá¸áá˝ááş áĄááŻáśá¸ááźáŻáááˇáş kernel áá˝ááşáááşá¸ ááźááşáááşááťááşáááˇáşáá˝ááşá¸ááŹá¸áááşá Android.
áĄáŹá¸áááşá¸ááťááşáááş copy_page_to_iter_pipe() áážááˇáş push_pipe() ááŻááşááąáŹááşááťááşááťáŹá¸á ááŻááşáá˝ááş "buf->flags" áááşáááŻá¸ááᯠáááŚá¸áááşáážááşááŹá¸ááźááşá¸ ááážáááźááşá¸ááźáąáŹááˇáş ááźá áşááąáŤáşááŹááąáŹ áĄáŹá¸áááşá¸ááťááşáážáŹ áá˝á˛áˇá ááşá¸ááŻáśááᯠáá˝á˛ááąááąá¸ááŹáá˝ááş áááşáááŻááŽááž ááážááşá¸áááşá¸áá˛á áĄáááşáááąáŹáşáááŻááąáŹ áááŻááşááťáŹá¸ááźááˇáş áĄááťááŻáˇááąáŹ ááźááşáážááşáážáŻááťáŹá¸ááźááˇáşá "buf->flags" áááşáááŻá¸áááş áĄááźáŹá¸ááąáŹ ááŻááşááąáŹááşáážáŻááž ááźáŽá¸ááŻáśá¸áá˝áŹá¸áááŻááşááŤáááşá á¤áĄááşášááŤáááşáááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáşá áĄáá°á¸ááźááşáááşááŹá¸ááąáŹ áĄáááşáá˛áˇáááŻááşáá áşááŻáááŻáˇ ááąááŹáĄáá áşááťáŹá¸ááᯠááąá¸ááŻáśááźááˇáş á áŹááťááşáážáŹ cache áĄáá˝ááşá¸áážá ááąááŹááᯠáááşááąá¸ááźááşá¸áĄáŹá¸ á áŻá ááşá¸áá˝ááˇáşááźáŻáááˇáş PIPE_BUF_FLAG_CAN_MERGE áááşáááŻá¸á áĄáá˝ááşáĄááźááşááᯠáĄáá˝ááˇáşáá°á¸ááááąáŹ ááąáááśáĄááŻáśá¸ááźáŻáá°áá áşáŚá¸á ááážááááŻááşááŤáááşá
áááŻááşáááŻááşáážáŻáá áşááŻáĄáá˝ááşá áá áşáážááşáááŻááşááᯠáááşáááŻááşááááşááźá áşááźáŽá¸á áááŻááşáá áşááŻáááŻáˇ á áŹááąá¸áááˇáşáĄá፠áááşááąáŹááşáá˝ááˇáşáĄáá˝ááˇáşáĄááąá¸ááᯠáá á áşááąá¸ááąáŹááźáąáŹááˇáşá áááşáááşáĄáá˝ááşáᏠáááşáááşááŹá¸áááˇáş áĄáááŻááşá¸ááťáŹá¸áážá áááŻááşááťáŹá¸áĄááŤáĄáááş á áŹááťááşáážáŹ cache áá˝ááş áĄá áŹá¸áááŻá¸ááźááşá¸ááᯠááŻááşááąáŹááşáááŻááşáááş (áĽáááŹá CD-ROM ááž áááŻááşááťáŹá¸áĄáá˝ááş)á á áŹááťááşáážáŹ áááşáážáşáá˝ááş áĄááťááşáĄáááşááᯠáĄá áŹá¸áááŻá¸ááźáŽá¸ááąáŹááşá áááŻááşáá áşááŻááž ááąááŹááᯠáááşáááˇáşáĄááŤá ááŻááşáááşá¸á ááşáááş áĄáážááşááááş ááąááŹáááŻááşááąáŹáşáááşá¸ áĄá áŹá¸áááŻá¸ááąááŹááᯠáááşááśááážááááşááźá áşáááşá
áĄááźááşááŻááşááźááşá¸áá˝ááş áááşá¸áážááˇáşáááşá
ááşááąáŹ áááşá
á˝ááşáá˝á˛áˇá
ááşá¸ááŻáśááťáŹá¸áĄáŹá¸ááŻáśá¸áá˝ááş áááşáážááşááŹá¸áááˇáş PIPE_BUF_FLAG_CAN_MERGE áĄááśááᯠáĄáąáŹááşááźááşá
áąáááşáĄáá˝ááş áĄáááşáááąáŹáşáááŻáááˇáşáááŻááşáá
áşááŻááᯠáááşááŽá¸ááźáŽá¸ áááşá¸ááᯠááááŹá¸ááąáŹááąááŹááźááˇáş ááźááˇáşááąá¸ááźááşá¸áááŻáˇ ááŤáááşááŤáááşá ááąááŹááᯠáááŻááşáážáááşááźáŽá¸ááąáŹáşáááşá¸á pipe_inode_info ring structures áážá pipe_buffer áááşááąáŹááşáážáŻá áĄááźáąáĄááąáĄáŹá¸ááŻáśá¸áá˝ááş áĄááśááᯠáááşáááşááŹá¸áážááááşááźá
áşáááşá áááŻáˇááąáŹááş áĄáááŻáážáááąáŹ offset áážá
áááşá áĄáááşáá˛áˇáááŻááşáá˛áááŻáˇ áá
áşáážááşáááŻááşáážááąááŹáááŻáááşáááş splice() ááąáŤáşáááŻáážáŻááᯠááźáŻááŻááşáááşá á¤áĄáááşáááąáŹáşááźááąáŹáááŻááşáááŻáˇ ááąááŹáááŻááąá¸ááąáŹáĄááŤá áááşáážááşááśááŹá¸áááąáŹ PIPE_BUF_FLAG_CAN_MERGE áĄááśáááş pipe_buffer áá˝á˛áˇá
ááşá¸ááŻáśá á
áśááá°ááŹáĄáá
áşááᯠáááşááŽá¸áááˇáşáĄá
áŹá¸ á
áŹááťááşáážáŹ cache áĄáá˝ááşá¸áážá ááąááŹááᯠáááşááąá¸ááŤáááşá
source: opennet.ru
