PinTheft — ΡˆΠ΅ΡΡ‚Π°Ρ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ класса Copy Fail, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΏΡ€Π°Π²Π° root Π² Linux

Раскрыта информация ΠΎ ΡˆΠ΅ΡΡ‚ΠΎΠΉ уязвимости (1, 2-3, 4, 5), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° root, пСрСзаписав Π΄Π°Π½Π½Ρ‹Π΅ Π² страничном кэшС. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ имя PinTheft. ДоступСн ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ эксплоита. CVE-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΅Ρ‰Ρ‘ Π½Π΅ присвоСн. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ° доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ 5 мая ΠΈ 11 мая Π±Ρ‹Π» принятв Π²Π΅Ρ‚ΠΊΡƒ netdev, Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ выпуски ядра.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ присутствуСт Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСтСвого ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° RDS (Reliable Datagram Sockets), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для высокоскоростного ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ Π² кластСрС, с минимальной Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ доставкой. Атака Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π° систСмы с Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΠΎΠΉ подсистСмой io_uring (io_uring_disabled=0) ΠΈ ядром, собранным с опциями CONFIG_RDS, CONFIG_RDS_TCP ΠΈ CONFIG_IO_URING. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ эксплоита Π² систСмС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступный Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ исполняСмый Ρ„Π°ΠΉΠ» с Ρ„Π»Π°Π³ΠΎΠΌ SUID-root.

Для автоматичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ модуля ядра rds_tcp эксплоит Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· RDS с использованиСм транспорта SO_RDS_TRANSPORT=2. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ срСди протСстированных дистрибутивов Linux Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ядра rds прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Arch Linux. Для блокирования уязвимости ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра rds ΠΈ rds_tcp: rmmod rds_tcp rds printf β€˜install rds /bin/false\ninstall rds_tcp /bin/false\n’ > /etc/modprobe.d/pintheft.conf

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ошибкой Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° zerocopy Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ rds_message_zcopy_from_user(), ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ прямоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² страничном кэшС для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ лишнСй Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ случаС сбоя Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ очистка поля rm->data.op_nents, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ освобоТдСниС Π±ΡƒΡ„Π΅Ρ€Π° (double-free). ПоявлСниС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ значСния Π² счётчикС ссылок ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для пСрСзаписи Π΄Π°Π½Π½Ρ‹Ρ… Π² страничном кэшС, благодаря манипуляции с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° фиксированный Π±ΡƒΡ„Π΅Ρ€ io_uring.

Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ эксплуатации Ρ‚ΠΈΠΏΠΈΡ‡Π΅Π½ для всСх уязвимостСй Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса β€” Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ добиваСтся осСдания Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ„Π»Π°Π³ΠΎΠΌ suid root Π² страничном кэшС, послС Ρ‡Π΅Π³ΠΎ подставляСт Π² ELF-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΠ΄ для запуска /usr/bin/sh. ПослС Π΄Π°Π½Π½ΠΎΠΉ манипуляции запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ исполняСмого Ρ„Π°ΠΉΠ»Π° с накопитСля, Π° ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ· страничного кэша. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… эксплоитов, Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π°Ρ‚Π°ΠΊΠΈ Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Β«suΒ», Π½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π² систСмС Ρ‚Π°ΠΊΠΈΡ… suid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠ°ΠΊ mount, passwd, chsh, newgrp, umount ΠΈ pkexec.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры πŸ”₯ ΠšΡƒΠΏΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ хостинг для сайтов с Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ ΠΎΡ‚ DDoS, VPS VDS сСрвСры | ProHoster