ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื‘ืžื ื’ื ื•ืŸ MMIO ืฉืœ ืžืขื‘ื“ื™ ืื™ื ื˜ืœ

ืื™ื ื˜ืœ ื—ืฉืคื” ืžื™ื“ืข ืขืœ ืกื•ื’ ื—ื“ืฉ ืฉืœ ื“ืœื™ืคื•ืช ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ืžื‘ื ื™ื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ืฉืœ ืžืขื‘ื“ื™ื, ื”ืžืืคืฉืจื™ื, ื‘ืืžืฆืขื•ืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžื ื’ื ื•ืŸ ื”-MMIO (Memory Mapped Input Output), ืœืงื‘ื•ืข ืžื™ื“ืข ื”ืžืขื•ื‘ื“ ื‘ืœื™ื‘ื•ืช CPU ืื—ืจื•ืช. ืœื“ื•ื’ืžื”, ื ืงื•ื“ื•ืช ืชื•ืจืคื” ืžืืคืฉืจื•ืช ืœื—ืœืฅ ื ืชื•ื ื™ื ืžืชื”ืœื™ื›ื™ื ืื—ืจื™ื, ืžื•ื‘ืœืขื•ืช ืื™ื ื˜ืœ SGX ืื• ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช. ื”ืคื’ื™ืขื•ื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ืจืง ืœืžืขื‘ื“ื™ ืื™ื ื˜ืœ; ืžืขื‘ื“ื™ื ืžื™ืฆืจื ื™ื ืื—ืจื™ื ืื™ื ื ืžื•ืฉืคืขื™ื ืžื”ืคื’ื™ืขื•ื™ื•ืช.

ื”ืคื’ื™ืขื•ื™ื•ืช ืžื•ืคื™ืขื•ืช ื‘ืžืขื‘ื“ื™ ืื™ื ื˜ืœ ืฉื•ื ื™ื, ื›ื•ืœืœ ืžืขื‘ื“ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake ื•-Rocketlake, ื›ืžื• ื’ื Xeon EP/EX, Scalable ื•ื›ืžื” ืžืขื‘ื“ื™ ืฉืจืช Atom. ื›ื“ื™ ืœื‘ืฆืข ืชืงื™ืคื” ื ื“ืจืฉืช ื’ื™ืฉื” ืœ-MMIO, ืื•ืชื” ื ื™ืชืŸ ืœืงื‘ืœ ืœืžืฉืœ ื‘ืžืขืจื›ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื”ืžืกืคืงื•ืช ื™ื›ื•ืœืช ื’ื™ืฉื” ืœ-MMIO ืขื‘ื•ืจ ืžืขืจื›ื•ืช ืื•ืจื—ื•ืช ื”ื ืฉืœื˜ื•ืช ืขืœ ื™ื“ื™ ื”ืชื•ืงืฃ. ื™ื™ืชื›ืŸ ืฉื™ื™ื“ืจืฉ ืชื™ืงื•ืŸ ื’ื ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘ืžื•ื‘ืœืขื•ืช ืžื‘ื•ื“ื“ื•ืช ืฉืœ Intel SGX (Software Guard Extensions).

ื—ืกื™ืžืช ื”ืคื’ื™ืขื•ืช ื“ื•ืจืฉืช ื”ืŸ ืขื“ื›ื•ืŸ ืžื™ืงืจื•ืงื•ื“ ื•ื”ืŸ ืฉื™ืžื•ืฉ ื‘ืฉื™ื˜ื•ืช ื”ื’ื ื” ื ื•ืกืคื•ืช ืฉืœ ืชื•ื›ื ื” ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืฉื™ืžื•ืฉ ื‘ื”ื•ืจืืช VERW ืœื ื™ืงื•ื™ ื”ืชื•ื›ืŸ ืฉืœ ืžืื’ืจื™ื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ื‘ืขืช ื—ื–ืจื” ืžื”ืงืจื ืœ ืœืžืจื—ื‘ ื”ืžืฉืชืžืฉ ืื• ื‘ืขืช ื”ืขื‘ืจืช ื”ืฉืœื™ื˜ื” ืœืžืขืจื›ืช ื”ืื•ืจื—ืช. ื”ื’ื ื” ื“ื•ืžื” ืžืฉืžืฉืช ื’ื ืœื—ืกื™ืžืช ื”ืชืงืคื•ืช ืฉื–ื•ื”ื• ื‘ืขื‘ืจ ืฉืœ ืžื—ืœืงื•ืช MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) ื•-TAA (Transactional Asynchronous Abort).

ื‘ืฆื“ ื”ืžื™ืงืจื•ืงื•ื“, ื”ืฉื™ื ื•ื™ื™ื ื”ื“ืจื•ืฉื™ื ืœื™ื™ืฉื•ื ื”ื’ื ื” ื”ื•ืฆืขื• ื‘ืขื“ื›ื•ืŸ ื”ืžื™ืงืจื•ืงื•ื“ ืฉืœ ืžืื™ ืœืžืขื‘ื“ื™ ืื™ื ื˜ืœ (IPU 2022.1). ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก, ื”ื’ื ื” ืžืคื ื™ ืกื•ื’ ื—ื“ืฉ ืฉืœ ื”ืชืงืคื•ืช ื›ืœื•ืœื” ื‘ืžื”ื“ื•ืจื•ืช 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 ื•-4.9.319. ื›ื“ื™ ืœื‘ื“ื•ืง ืืช ื—ืฉื™ืคืช ื”ืžืขืจื›ืช ืœืคืจืฆื•ืช ื‘-MMIO ื•ืœื”ืขืจื™ืš ืืช ื”ืคืขื™ืœื•ืช ืฉืœ ืžื ื’ื ื•ื ื™ ื”ื’ื ื” ืžืกื•ื™ืžื™ื, ื”ืงื•ื‘ืฅ "/sys/devices/system/cpu/vulnerabilities/mmio_stale_data" ื ื•ืกืฃ ืœื’ืจืขื™ืŸ ื”ืœื™ื ื•ืงืก. ื›ื“ื™ ืœืฉืœื•ื˜ ื‘ื”ื›ืœืœืช ื”ื”ื’ื ื”, ื™ื•ืฉื ืคืจืžื˜ืจ ื”ืืชื—ื•ืœ ืฉืœ ื”ืœื™ื‘ื” "mmio_stale_data", ืฉื™ื›ื•ืœ ืœืงื—ืช ืืช ื”ืขืจื›ื™ื "full" (ืžืืคืฉืจ ื ื™ืงื•ื™ ืžืื’ืจื™ื ื‘ืขืช ืžืขื‘ืจ ืœืžืจื—ื‘ ืžืฉืชืžืฉ ื•ื‘-VM), "full,nosmt" ( ื›"ืžืœื" + ืžืฉื‘ื™ืช ื‘ื ื•ืกืฃ ืืช SMT/Hyper-Threads) ื•"ื›ื‘ื•ื™" (ื”ื”ื’ื ื” ืžื•ืฉื‘ืชืช). ืชื™ืงื•ื ื™ื ื ืคืจื“ื™ื ืžื•ืฆืขื™ื ืขื‘ื•ืจ ื”-Xen hypervisor ื•ืžืขืจื›ืช ื”ื”ืคืขืœื” Qubes.

ื”ืžื”ื•ืช ืฉืœ ืžื—ืœืงื” ื–ื•ื”ื” ืฉืœ ืคื’ื™ืขื•ื™ื•ืช ื”ื™ื ืฉืคืขื•ืœื•ืช ืžืกื•ื™ืžื•ืช ืžื•ื‘ื™ืœื•ืช ืœื”ืขืชืงื” ืื• ื”ืขื‘ืจื” ืฉืœ ื ืชื•ื ื™ื ืฉื ื•ืชืจื• ืœืื—ืจ ื‘ื™ืฆื•ืข ืขืœ ืœื™ื‘ื•ืช CPU ืื—ืจื•ืช ืžืžืื’ืจ ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ ืื—ื“ ืœืื—ืจ. ืคื’ื™ืขื•ื™ื•ืช ื‘-MMIO ืžืืคืฉืจื•ืช ื”ืขื‘ืจืช ื ืชื•ื ื™ื ืฉื™ื•ืจื™ื™ื ืืœื” ืžืžืื’ืจื™ื ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ืžื‘ื•ื“ื“ื™ื ืœืจื’ื™ืกื˜ืจื™ื ื’ืœื•ื™ื™ื ืœืืคืœื™ืงืฆื™ื” ืื• ืœืžืื’ืจื™ CPU. ืฉืœื•ืฉ ืฉื™ื˜ื•ืช ื–ื•ื”ื• ืœื”ืคืงืช ื ืชื•ื ื™ื ืฉื™ื•ืจื™ื™ื ื‘ืืžืฆืขื•ืช MMIO:

  • DRPW (Device Register Partial Write, CVE-2022-21166) ื”ื™ื ื‘ืขื™ื” ื‘ื˜ื™ืคื•ืœ ืœื ื ื›ื•ืŸ ื‘ื›ืชื™ื‘ื” ืœื›ืžื” ืื•ื’ืจื™ MMIO. ืื ื’ื•ื“ืœ ื”ื ืชื•ื ื™ื ื”ื ื›ืชื‘ื™ื ืงื˜ืŸ ืžื’ื•ื“ืœ ื”ืื•ื’ืจ, ืื–ื™ ื”ืžื™ื“ืข ื”ืฉื™ื•ืจื™ ืžืžืื’ืจื™ ื”ืžื™ืœื•ื™ ืžื•ืขืชืง ื’ื ืœืื•ื’ืจ. ื›ืชื•ืฆืื” ืžื›ืš, ืชื”ืœื™ืš ืฉืžืชื—ื™ืœ ืคืขื•ืœืช ื›ืชื™ื‘ื” ืœื ืฉืœืžื” ืœืื•ื’ืจ ื”-MMIO ื™ื›ื•ืœ ืœื”ืฉื™ื’ ื ืชื•ื ื™ื ืฉื ื•ืชืจื• ื‘ืžืื’ืจื™ื ื”ืžื™ืงืจื•-ืืจื›ื™ื˜ืงื˜ื•ื ื™ื™ื ืžืคืขื•ืœื•ืช ื”ืžื‘ื•ืฆืขื•ืช ื‘ืœื™ื‘ื•ืช CPU ืื—ืจื•ืช.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) ื”ื™ื ื“ืœื™ืคื” ืฉืœ ื ืชื•ื ื™ื ืฉื™ื•ืจื™ื™ื ืžืžืื’ืจ ืžื™ืœื•ื™ ื”ืงืฉื•ืจ ืœื’ืจืขื™ืŸ ื”ื ื•ื‘ืขืช ืžืชื ื•ืขื” ืžืžืื’ืจื™ ื‘ื™ื ื™ื™ื ื”ืžืฉื•ืชืคื™ื ืœื›ืœ ื”ื’ืจืขื™ื ื™ื.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - ื”ื‘ืขื™ื” ื“ื•ืžื” ืœ-SBDS, ืืš ืฉื•ื ื” ื‘ื›ืš ืฉืฉื™ื•ืจื™ ื ืชื•ื ื™ื ื™ื›ื•ืœื™ื ืœื”ื’ื™ืข ืœืžื‘ื ื™ CPU ื”ื ืจืื™ื ืœื™ื™ืฉื•ืžื™ื. ื‘ืขื™ื•ืช SBDS ื•-SBDR ืžื•ืคื™ืขื•ืช ืจืง ื‘ืžืขื‘ื“ื™ื ืœืžืขืจื›ื•ืช ืœืงื•ื— ื•ื‘ืžืฉืคื—ืช ืฉืจืชื™ Intel Xeon E3.

ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื‘ืžื ื’ื ื•ืŸ MMIO ืฉืœ ืžืขื‘ื“ื™ ืื™ื ื˜ืœ


ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”