Π ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° iSCSI Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π±Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2021-27365), ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΊΠΎΠ΄ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ root-ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π΅ Π½Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Π½Π° Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 ΠΈ 4.4.260. ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Ρ ΡΠ΄ΡΠΎΡΠΎ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΈΡΠ΅ Debian, Ubuntu, SUSE/openSUSE, Arch Linux ΠΈ Fedora. ΠΠ° RHEL ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ ΠΎΡ Π³ΡΠ΅ΡΠΊΠ° Π² ΡΡΠ½ΠΊΡΠΈΡΡΠ° iscsi_host_get_param() ΠΎΡ ΠΌΠΎΠ΄ΡΠ»Π° libiscsi, Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΡΠ΅ ΠΏΡΠ΅Π· 2006 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° iSCSI. ΠΠΎΡΠ°Π΄ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π½ΡΠΊΠΎΠΈ ΡΡΡΠΈΠ½Π³ Π°ΡΡΠΈΠ±ΡΡΠΈ Π½Π° iSCSI, ΠΊΠ°ΡΠΎ hostname ΠΈΠ»ΠΈ username, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°Π΄Ρ Π²ΡΡΠ»ΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° PAGE_SIZE (4 KB). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Netlink-ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», Π·Π°Π΄Π°Π²Π°ΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π½Π° iSCSI Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠΈ PAGE_SIZE. ΠΡΠΈ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ ΡΡΠ΅Π· sysfs ΠΈΠ»ΠΈ seqfs ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π°Π²Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ sprintf Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π² Π±ΡΡΠ΅Ρ Ρ ΡΠ°Π·ΠΌΠ΅Ρ PAGE_SIZE.
ΠΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π½Π° ΡΠ΄ΡΠΎΡΠΎ scsi_transport_iscsi ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Ρ NETLINK_ISCSI. Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΈΡΠ΅, Π² ΠΊΠΎΠΈΡΠΎ ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄ΡΠ» ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ, Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° iSCSI. ΠΡΠΈ ΡΠΎΠ²Π°, Π·Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠ°, Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ iSCSI ΡΡΠ°Π½ΡΠΏΠΎΡΡ. ΠΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄ΡΠ»ΡΡ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ib_iser, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΠ΅Ρ NETLINK_RDMA ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π».
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π² CentOS 8, RHEL 8 ΠΈ Fedora ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° rdma-core, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ Π·Π° Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΡΠ°Π½ΡΠΈΠΈ, ΡΡΡΠ²ΡΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ GUI ΠΈ Ρ ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄ΠΈ Π·Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, rdma-core Π½Π΅ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ½Π° Π²Π΅ΡΡΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΡΠ°ΠΌΠΎ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ, ΠΈ ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΎΠ½Π΅Π½ ΠΎΠ±ΡΠ°Π·. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΠΊΠ΅ΡΡΡ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Fedora 31 Workstation, Π½ΠΎ Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Fedora 31 Server. Debian ΠΈ Ubuntu ΡΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ΄Π°ΡΠ»ΠΈΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ rdma-core Π·Π°ΡΠ΅ΠΆΠ΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π·Π° Π°ΡΠ°ΠΊΠ° ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° RDMA Ρ Π°ΡΠ΄ΡΠ΅Ρ.

ΠΠ°ΡΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π·Π°ΡΠΈΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π±ΡΠ°Π½ΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° libiscsi: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° iSCSI ΡΠ° ΠΎΡΡΡΡΠ°Π½Π΅Π½ΠΈ ΠΎΡΠ΅ Π΄Π²Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΠΏΠ°ΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ: CVE-2021-27363 (ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ° iSCSI ΡΡΠ΅Π· sysfs) ΠΈ CVE-2021-27364 (ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ ΠΎΠ±Π»Π°ΡΡ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ°). Π£ΠΊΠ°Π·Π°Π½ΠΈΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΠ΅Π· netlink ΡΠΎΠΊΠ΅Ρ Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° iSCSI Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ Ρ iSCSI ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° "end a session" Π·Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
