ื’ืจืกืช ืชืงื™ืคื” ื—ื“ืฉื” ืฉืœ Foreshadow ื”ืžืฉืคื™ืขื” ืขืœ ืžืขื‘ื“ื™ ืื™ื ื˜ืœ, AMD, ARM ื•-IBM

ืงื‘ื•ืฆืช ื—ื•ืงืจื™ื ืžื”ืื•ื ื™ื‘ืจืกื™ื˜ื” ื”ื˜ื›ื ื™ืช ืฉืœ ื’ืจืืฅ (ืื•ืกื˜ืจื™ื”) ื•ืžืžืจื›ื– ื”ืœืžื”ื•ืœืฅ ืœืื‘ื˜ื—ืช ืžื™ื“ืข (CISPA), ื’ื™ืœื” (PDF) ื•ืงื˜ื•ืจ ื—ื“ืฉ ืœืฉื™ืžื•ืฉ ื‘ื”ืชืงืคื•ืช ืฉืœ ืขืจื•ืฅ ืฆื“ื“ื™ ืœึฐื‘ึทืฉื‚ึตืจ (L1TF), ื”ืžืืคืฉืจ ืœื—ืœืฅ ื ืชื•ื ื™ื ืžื”ื–ื™ื›ืจื•ืŸ ืฉืœ ืžื•ื‘ืœืขื•ืช Intel SGX, SMM (ืžืฆื‘ ื ื™ื”ื•ืœ ืžืขืจื›ืช), ืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืฉืœ ืœื™ื‘ืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ื•ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื‘ืžืขืจื›ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื”. ื‘ื ื™ื’ื•ื“ ืœืžืชืงืคื” ื”ืžืงื•ืจื™ืช ืฉื”ื•ืฆืขื” ื‘-2018 ืœึฐื‘ึทืฉื‚ึตืจ ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืื™ื ื” ืกืคืฆื™ืคื™ืช ืœืžืขื‘ื“ื™ ืื™ื ื˜ืœ ื•ืžืฉืคื™ืขื” ืขืœ ืžืขื‘ื“ื™ื ืžื™ืฆืจื ื™ื ืื—ืจื™ื ื›ื’ื•ืŸ ARM, IBM ื•-AMD. ื‘ื ื•ืกืฃ, ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืื™ื ื” ื“ื•ืจืฉืช ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื•ื ื™ืชืŸ ืœื‘ืฆืข ืืช ื”ืžืชืงืคื” ืืคื™ืœื• ื‘ืืžืฆืขื•ืช ื”ืคืขืœืช JavaScript ื•-WebAssembly ื‘ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜.

ื”ืชืงืคืช Foreshadow ืžื ืฆืœืช ืืช ื”ืขื•ื‘ื“ื” ืฉื›ืืฉืจ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ืžืชื‘ืฆืขืช ื‘ื›ืชื•ื‘ืช ื•ื™ืจื˜ื•ืืœื™ืช ืฉื’ื•ืจืžืช ืœื—ืจื™ื’ื” (ืชืงืœืช ืขืžื•ื“ ืžืกื•ืฃ), ื”ืžืขื‘ื“ ืžื—ืฉื‘ ื‘ืื•ืคืŸ ืกืคืงื•ืœื˜ื™ื‘ื™ ืืช ื”ื›ืชื•ื‘ืช ื”ืคื™ื–ื™ืช ื•ื˜ื•ืขืŸ ืืช ื”ื ืชื•ื ื™ื ืื ื”ื ื–ืžื™ื ื™ื ื‘-L1 cache. ื’ื™ืฉื” ืกืคืงื•ืœื˜ื™ื‘ื™ืช ืžื‘ื•ืฆืขืช ืœืคื ื™ ื”ืฉืœืžืช ื—ื™ืคื•ืฉ ื˜ื‘ืœืช ื“ืคื™ ื”ื–ื™ื›ืจื•ืŸ ื•ืœืœื ืงืฉืจ ืœืžืฆื‘ ื›ื ื™ืกืช ื˜ื‘ืœืช ื“ืคื™ ื”ื–ื™ื›ืจื•ืŸ (PTE), ื›ืœื•ืžืจ. ืœืคื ื™ ื‘ื“ื™ืงืช ื ื•ื›ื—ื•ืช ื”ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ื”ืคื™ื–ื™ ื•ืงืจื™ืื•ืชื. ืœืื—ืจ ื”ืฉืœืžืช ื‘ื“ื™ืงืช ื–ืžื™ื ื•ืช ื”ื–ื™ื›ืจื•ืŸ, ื‘ื”ื™ืขื“ืจ ื“ื’ืœ Present ื‘-PTE, ื”ืคืขื•ืœื” ื ืžื—ืงืช, ืืš ื”ื ืชื•ื ื™ื ื ืฉืืจื™ื ื‘ืžื˜ืžื•ืŸ ื•ื ื™ืชืŸ ืœืื—ื–ืจ ืื•ืชื ื‘ืืžืฆืขื•ืช ืฉื™ื˜ื•ืช ืœืงื‘ื™ืขืช ืชื•ื›ืŸ ื”ืžื˜ืžื•ืŸ ื“ืจืš ืขืจื•ืฆื™ ืฆื“ (ืขืœ ื™ื“ื™ ื ื™ืชื•ื— ืฉื™ื ื•ื™ื™ื ื‘ื–ืžืŸ ื”ื’ื™ืฉื” ืœื ืชื•ื ื™ื ืžืื•ื—ืกื ื™ื ื•ืœื ืžืื•ื—ืกื ื™ื ื‘ืžื˜ืžื•ืŸ).

ื—ื•ืงืจื™ื ื”ืจืื• ืฉืฉื™ื˜ื•ืช ื”ื”ื’ื ื” ื”ืงื™ื™ืžื•ืช ืžืคื ื™ Foreshadow ืื™ื ืŸ ื™ืขื™ืœื•ืช ื•ืžื™ื•ืฉืžื•ืช ืชื•ืš ืคืจืฉื ื•ืช ืฉื’ื•ื™ื” ืฉืœ ื”ื‘ืขื™ื”. ืคื’ื™ืขื•ืช
ื ื™ืชืŸ ืœื ืฆืœ Foreshadow ืœืœื ืงืฉืจ ืœืžื ื’ื ื•ื ื™ ื”ืื‘ื˜ื—ื” ืฉืœ ื”ืœื™ื‘ื” ืฉื ื—ืฉื‘ื• ื‘ืขื‘ืจ ืžืกืคื™ืงื™ื. ื›ืชื•ืฆืื” ืžื›ืš, ื”ื—ื•ืงืจื™ื ื”ื“ื’ื™ืžื• ืืคืฉืจื•ืช ืœื‘ืฆืข ื”ืชืงืคืช Foreshadow ืขืœ ืžืขืจื›ื•ืช ืขื ืœื™ื‘ื•ืช ื™ืฉื ื•ืช ื™ื—ืกื™ืช, ืฉื‘ื”ืŸ ื›ืœ ืžืฆื‘ื™ ื”ื”ื’ื ื” ื”ื–ืžื™ื ื™ื ืฉืœ Foreshadow ืžื•ืคืขืœื™ื, ื•ื›ืŸ ืขื ื’ืจืขื™ื ื™ื ื—ื“ืฉื™ื, ืฉื‘ื”ื ืจืง ื”ื’ื ืช Specter-v2 ืžื•ืฉื‘ืชืช (ื‘ืืžืฆืขื•ืช ืืคืฉืจื•ืช ืœื™ื‘ืช ืœื™ื ื•ืงืก nospectre_v2).

ื ืžืฆื ื›ื™ ืืคืงื˜ ื˜ืขื™ื ื” ืžืจืืฉ ืœื ืงืฉื•ืจ ืœื”ื•ืจืื•ืช ืฉืœื™ืคื” ืžืจืืฉ ืฉืœ ืชื•ื›ื ื” ืื• ืœืืคืงื˜ ื”ื—ื•ืžืจื”
ืื—ื–ื•ืจ ืžืจืืฉ ื‘ืžื”ืœืš ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ, ืืš ืžืชืจื—ืฉ ื›ืืฉืจ ื”ืคื ื™ื•ืช ืกืคืงื•ืœื˜ื™ื‘ื™ื•ืช ืฉืœ ืžืจื—ื‘ ืžืฉืชืžืฉ ื ืจืฉืžื•ืช ื‘ืงืจื ืœ. ืคืจืฉื ื•ืช ืฉื’ื•ื™ื” ื–ื• ืฉืœ ื”ื’ื•ืจื ืœืคื’ื™ืขื•ืช ื”ื•ื‘ื™ืœื” ื‘ืชื—ื™ืœื” ืœื”ื ื—ื” ืฉื“ืœื™ืคืช ื ืชื•ื ื™ื ื‘-Foreshadow ื™ื›ื•ืœื” ืœื”ืชืจื—ืฉ ืจืง ื“ืจืš ืžื˜ืžื•ืŸ L1, ื‘ืขื•ื“ ืฉื ื•ื›ื—ื•ืชื ืฉืœ ืงื˜ืขื™ ืงื•ื“ ืžืกื•ื™ืžื™ื (ื’ืื“ื’'ื˜ื™ื ืœืื—ื–ื•ืจ ืžืจืืฉ) ื‘ืœื™ื‘ื” ื™ื›ื•ืœื” ืœืชืจื•ื ืœื“ืœื™ืคืช ื ืชื•ื ื™ื ืžื—ื•ืฅ ืœืžื˜ืžื•ืŸ L1, ืœื“ื•ื’ืžื”, ื‘ืžื˜ืžื•ืŸ L3.

ื”ืชื›ื•ื ื” ืฉื–ื•ื”ืชื” ื’ื ืคื•ืชื—ืช ืืช ื”ืืคืฉืจื•ืช ืœื™ืฆื•ืจ ื”ืชืงืคื•ืช ื—ื“ืฉื•ืช ืฉืžื˜ืจืชืŸ ืชื”ืœื™ื›ื™ ืชืจื’ื•ื ื›ืชื•ื‘ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืœืคื™ื–ื™ื•ืช ื‘ืกื‘ื™ื‘ื•ืช ืžื‘ื•ื“ื“ื•ืช ื•ืงื‘ื™ืขืช ื›ืชื•ื‘ื•ืช ื•ื ืชื•ื ื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ืื•ื’ืจื™ CPU. ื›ื”ื“ื’ืžื”, ื”ื—ื•ืงืจื™ื ื”ืจืื• ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ืืคืงื˜ ืฉื–ื•ื”ื” ื›ื“ื™ ืœื—ืœืฅ ื ืชื•ื ื™ื ืžืชื”ืœื™ืš ืื—ื“ ืœืžืฉื ื”ื• ืขื ื‘ื™ืฆื•ืขื™ื ืฉืœ ื›-10 ืกื™ื‘ื™ื•ืช ืœืฉื ื™ื™ื” ื‘ืžืขืจื›ืช ืขื ืžืขื‘ื“ Intel Core i7-6500U. ืžื•ืฆื’ืช ื’ื ื”ืืคืฉืจื•ืช ืฉืœ ื“ืœื™ืคืช ืชื•ื›ืŸ ืื•ื’ืจ ืžืžื•ื‘ืœืขืช Intel SGX (ืœืงื— 32 ื“ืงื•ืช ื›ื“ื™ ืœืงื‘ื•ืข ืขืจืš ืฉืœ 64 ืกื™ื‘ื™ื•ืช ืฉื ื›ืชื‘ ืœืžืื’ืจ ืฉืœ 15 ืกื™ื‘ื™ื•ืช). ื—ืœืง ืžืกื•ื’ื™ ื”ืชืงืคื•ืช ื”ืชื‘ืจืจื• ื›ืืคืฉืจื™ื™ื ืœื™ื™ืฉื•ื ื‘-JavaScript ื•ื‘-WebAssembly, ืœืžืฉืœ, ื ื™ืชืŸ ื”ื™ื” ืœืงื‘ื•ืข ืืช ื”ื›ืชื•ื‘ืช ื”ืคื™ื–ื™ืช ืฉืœ ืžืฉืชื ื” JavaScript ื•ืœืžืœื ืื•ื’ืจื™ื ืฉืœ 64 ืกื™ื‘ื™ื•ืช ื‘ืขืจืš ืฉื ืฉืœื˜ ืขืœ ื™ื“ื™ ื”ืชื•ืงืฃ.

ื›ื“ื™ ืœื—ืกื•ื ืืช ื”ืชืงืคืช Foreshadow ื“ืจืš ืžื˜ืžื•ืŸ L3, ืฉื™ื˜ืช ื”ื”ื’ื ื” ืฉืœ Spectre-BTB (Branch Target Buffer) ื”ืžื™ื•ืฉืžืช ื‘ืขืจื›ืช ื”ืชื™ืงื•ืŸ ืฉืœ retpoline ื™ืขื™ืœื”. ืœืคื™ื›ืš, ื”ื—ื•ืงืจื™ื ืžืืžื™ื ื™ื ื›ื™ ื™ืฉ ืฆื•ืจืš ืœื”ืฉืื™ืจ ืืช ื”-retpoline ืžื•ืคืขืœืช ื’ื ื‘ืžืขืจื›ื•ืช ืขื ืžืขื‘ื“ื™ื ื—ื“ืฉื™ื ืฉื›ื‘ืจ ื™ืฉ ืœื”ื ื”ื’ื ื” ืžืคื ื™ ืคื’ื™ืขื•ื™ื•ืช ื™ื“ื•ืขื•ืช ื‘ืžื ื’ื ื•ืŸ ื”ื‘ื™ืฆื•ืข ื”ืกืคืงื•ืœื˜ื™ื‘ื™ ืฉืœ ื”-CPU. ื™ื—ื“ ืขื ื–ืืช, ื ืฆื™ื’ื™ ืื™ื ื˜ืœ ื”ืฆื”ื™ืจื• ื›ื™ ืื™ื ื ืžืชื›ื ื ื™ื ืœื”ื•ืกื™ืฃ ืœืžืขื‘ื“ื™ื ืืžืฆืขื™ ื”ื’ื ื” ื ื•ืกืคื™ื ื ื’ื“ Foreshadow ื•ืจื•ืื™ื ื‘ื›ืš ื“ื™ ืœื›ืœื•ืœ ื”ื’ื ื” ืžืคื ื™ ื”ืชืงืคื•ืช Spectre V2 ื•-L1TF (Foreshadow).

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

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