Share
Embed
Transcript
21 slides
-
ࣗݾհ w ໊લɿᴡ౻༔ر 4BJUP:VLJ w झຯɿ w ϦόʔεΤϯδχΞϦϯάͳͲͷηΩϡϦςΟશൠ w
ػցֶश w ܦྺ w ηΩϡϦςΟɾΩϟϯϓશࠃେձ w ݩ.JDSPTPGU4UVEFOU1BSUOFST w ݱηΩϡϦςΟΤϯδχΞʁ ηΩϡϦςΟؔ࿈ۀ w ࠷ۙͬͯΈ͍ͨ͜ͱ w ϋχʔϙοτͷࣗӡ༻ w ηΩϡϦςΟؔ࿈ͷ044ͷ։ൃ -
4QFDUSFͷҰ࿈ͷ૽ಈ 2018ਖ਼݄ૣʑɺϓϩηοαۀքʹ૽ಈ͕ى͖ͨʂ SpectreʢεϖΫλʔʣͱMeltdownʢϝϧτμϯʣͱݺΕΔϓϩηοαͷ੬ऑੑ͕ൃݟ͞Εͨɻ MeltdownIntelCPUͱARM CPU ͷҰ෦͕ӨڹͰɺSpectreIntelɾAMDɾARMͳͲͷͯ͢ͷ ϓϩηοαʹࡏ͢ΔՄೳੑ͕͋Δͱൃද͞Εͨɻ GoogleͷηΩϡϦςΟରࡦ෦Project Zeroɺʮػత࣮ߦʯʹΑͬͯҾ͖ى͜͞ΕΔਂࠁͳη
ΩϡϦςΟ্ͷ੬ऑੑΛ20176݄ͷஈ֊ͰѲ͠ɺIntelɺAMDɺARMͳͲͷνοϓϕϯμʔʹ௨ ͍ͯͨ͠ɻ ͦ͜ͰɺMircosoft1݄9ͷPatch TuesdayͰdisclose͞ΕΔ༧ఆͰͨ͠ɻ ͔͠͠ɺΠΪϦεͷITࢽʮThe Registerʯ͕1݄2ʹ ʮϋʔυΣΞͷมߋ͕ඞཁͰ͋ΓɺιϑτΣΞͰͷηΩϡϦςΟରࡦύϑΥʔϚϯεͷେ෯ͳ ԼΛҾ͖ى͜͢ʯ ͱൃදͨ͠ͷͰɺۀքΛࠞཚͤͨ͞! -
ൃݟ͞Εͨ੬ऑੑ • Variant 1: bounds check bypass (CVE-2017-5753) • Variant
2: branch target injection (CVE-2017-5715) • Variant 3: rogue data cache load (CVE-2017-5754) • Variant 3a: Rogue System Register Read (CVE-2018-3640) • Variant 4: Speculative store bypass (CVE-2018-3639) ʮVariant 1ʯͱʮVariant 2ʯ͕Spectre ʮVariant 3ʯ͕MeltdownͱݺΕΔ੬ऑੑͰ͢ɻ CPUੑೳ্ͷͨΊͷʮػత࣮ߦ(Speculative Execution)ʯͱ͍͏Έ͕ݪҼ Ͱɺ͍ͣΕͷ੬ऑੑαΠυνϟωϧ߈ܸʹྨ͞Ε·͢ɻ -
ެදޙʹى͖ͨࣄ݅ w ʮ.FMUEPXOʯʮ4QFDUSFʯΛૂ͏ϚϧΣΞαϯϓϧɺେྔʹൃݟ w "75&45*OTUJUVUFɺ$16ʹଘࡏ͢Δʮ.FMUEPXOʯ͓Αͼʮ4QFDUSFʯ੬ऑੑΛѱ༻͠Α͏ ͱ͢ΔϚϧΣΞͷઌۦ͚ͱݟΒΕΔαϯϓϧݸΛൃݟͨ͠ɻ IUUQTKBQBODOFUDPNBSUJDMF w ʮ4QFDUSFʯʮ.FMUEPXOʯͷύονΛِͨ͠ϚϧΣΞʹҙ w
ύονΛِͨ͠ϚϧΣΞ͕ଘࡏ͠ʮ4NPLF-PBEFSʯͷײછΛଅ͢ IUUQTOFXTNZOBWJKQBSUJDMF w Πϯςϧɺ4QFDUSFɾ.FMUEPXOରԠͰϓϩηοαʔઃܭΛมߋ w Πϯςϧ੬ऑੑΛܰࢹ͍͗ͯͨ͢͠ͱͯ͠ɺถࠃٞձ͔Βઆ໌ΛٻΊΒΕɺ͞Βʹ݅ ͷूஂૌুΛى͜͞Εͨ IUUQTKBQBOFTFFOHBEHFUDPNTQFDUSFNFMUEPXO -
4QFDUSFͱ • Variant 1: bounds check bypass (CVE-2017-5753) ͋Δ໋ྩͰຊདྷɺಡΈࠐΉ͜ͱ͕Ͱ͖ͳ͍ଞϓϩηεͷϝϞϦʔྖҬΛΩϟογϡ ʹಡΈͩͤ͞ɺผͷ໋ྩͰʰΩϟογϡྖҬʱͷϝϞϦͷreadΛνΣοΫ͢Δ
͜ͱͰϝϞϦྖҬͷ༰ΛਪఆͰ͖Δɻ • Variant 2: branch target injection (CVE-2017-5715) ʮؒذ༧ଌثʯΛར༻͢ΔͷͰɺยํͷVMͰذΛෆਖ਼ͳϓϩάϥϜΛݺ ͼग़ͨ͢Ίʹௐઅ͠·͢ɻௐઅͨ͠༧ଌςʔϒϧΛ͏ยํͷVMͰϝϞϦΞυϨ ε͔Βػ࣮ߦͤ͞Δɻ -
4QFDUSFͷ੬ऑੑ֓ཁ ι ϑ τ Σ Ξ ϋ c υ
Σ Ξ ΞϓϦέʔγϣϯ" ΞϓϦέʔγϣϯ# ɾɾɾ 04 $16 ੬ऑੑ ௨ৗΞΫηεͰ͖ͳ͍ϝϞϦྖҬಡΈࠐΉ ϝϞϦྖҬɹϝϞϦྖҬɹϝϞϦྖҬ -
ػ࣮ߦͱ 'FUDI %FDPEF &YFDVUF 8SJUF#BDL ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ
໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ 'FUDI %FDPEF &YFDVUF 8SJUF#BDL ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ ໋ྩ 5JNFMPTT ௨ৗ ػ࣮ߦ -
bounds check bypass (CVE-2017-5753) JGจͷ༰͕USVFʹͳ͍ͬͯΔύλʔϯ͕ଟ͚ΕɺJGจͷ༰͕GBMTFͰػ࣮ ߦʹΑΓذ໋ྩΛ͑ͯઌʹ࣮ߦ͞ΕΔ YͷΛࣗ༝ʹૢ࡞ͯ͠ɺBSSBZ<Y>Ͱݺͼग़͍ͨ͠ϝϞϦΞυϨεʹ͢Δ
BSSB<Y> ͰBSSBZͷΩϟογϡϥΠϯΛBSSBZͰࢦఆ͠ϝϞϦʔʹอଘ ͠Ωϟογϡ͢Δ BSSBZ@TJ[Fͷॲཧ͕GBMTFͱΘ͔ΕɺBSSBZϝϞϦʔ͔Βഁغ͞ΕΔ͕-- -ΩϟογϡʹΔ BSSBZ---ʹΩϟογϡʹ͍ͬͯΔͷͰɺ͔ΒͰ૬͢ΔΞυϨ εʹॱংʹΞΫηε͠ɺSFBE͕ૣ͔ͬͨͱ͜Ζ͕BSSBZͷϝϞϦͷʹͳΔ if (x < array1_size) y = array2[array1[x] * 256]; -
branch target injection (CVE-2017-5715) ػ࣮ߦͱ#5# ذઌόοϑΝ ͱؒذ໋ྩΛར༻ͨ͠߈ܸͰ͢ ؒذ໋ྩͱ ذઌ͕ϨδελϝϞϦͷʹΑͬͯࢦఆ͞ΕΔ໋ྩ YͰDBMMͱKNQͳͲ
ػ࣮ߦʹΑ࣮ͬͯߦ͞ΕΔ໋ྩʁɹ#5#Λ֬ೝʂ #5##SBODI5BSHFU#V⒎FSͱ ذઌΛذݩΞυϨεͰอଘ͢ΔόοϑΝ ذݩͷϝϞϦΞυϨεͷͷCJUΛݩʹذઌͷ ɹɹϝϞϦΞυϨεΛ༧ଌ͍ͯ͠Δ ͭͷཧίΞΛͭͷཧίΞʹׂͯؒ͠ذ༧ଌʹΘΕΔ༧ଌ ςʔϒϧ #5# ڞ༗͞ΕΔ -
֤04͝ͱͷରࡦ w 8JOEPXT 8JOEPXT͚ͷߋ৽ϓϩάϥϜʮ,#ʯΛެ։ w .BD lNBD04)JHI4JFSSB4VQQMFNFOUBM6QEBUFzͰɺ.FMUEPXO ରࡦʹՃ͑ɺ4QFDUSFରࡦ͕ద༻͞Ε͍ͯΔ w -JOVY
-JOVYΧʔωϧͷ࠷৽൛ʢʣ͕ϦϦʔε͞Εͨɻ͜ͷόʔδϣϯͰ ɺʮ4QFDUSF.FMUEPXOʯͷ੬ऑੑͷରࡦՃ͞Ε͍ͯΔɻ w "OESPJE J04 $FOU04 3FE)BUΞοϓσʔτ͕ϦϦʔε͞Ε͍ͯΔ -
·ͱΊ w 4QFDUSFͷҰ࿈ͷ૽ಈ ɾൃݟ͞Εͨ੬ऑੑ ɾαΠυνϟωϧ߈ܸͱ ɾΠϯύΫτ ɾެදޙʹى͖ͨࣄ݅ w 4QFDUSFͷ੬ऑੑͷ֓ཁػ࣮ߦͱ ɾCPVOETDIFDLCZQBTT($7&)
ɾCSBODIUBSHFUJOKFDUJPO($7&) • ఆ͞ΕΔ߈ܸ / ରࡦ ɾChrome Site Isolationػೳ ɾOS͝ͱͷରࡦ -
ࢀߟจݙ w 4QFDUSF#VTUFST͋Δ͍-JOVYʹ͓͚Δ4QFDUSFରࡦ IUUQTXXXTMJEFTIBSFOFUNIJSBNBUTQFDUSFCVTUFSTMJOVYTQFDUSF w ʮϝϧτμϯʯͱʮεϖΫλʔʯɺڪΖ͍ۙ͠$16ͷ੬ऑੑΛղઆ IUUQTMPHNJKQ w 1SPKFDU;FSP IUUQTHPPHMFQSPKFDU[FSPCMPHTQPUDPNSFBEJOHQSJWJMFHFENFNPSZXJUITJEFIUNM
w ୈճେ૽͗ͷ4QFDUSFͱ.FMUEPXOͷ੬ऑੑΛͬ͘͟Γͱղઆ IUUQXXXBUNBSLJUDPKQBJUBSUJDMFTOFXTIUNM w ʲਤղʳ$16ͷ੬ऑੑ<4QFDUSF><.FMUEPXO>۩ମతʹͲͷΑ͏ͳΈͰ߈ܸ͢ Δʁ IUUQTNJMFTUPOFPGTFOFTVLFDPNTWBEWBODFETWTFDVSJUZNFMUEPXOTQFDUSF w ੈؒΛ૽͕͢ʮϓϩηοα੬ऑੑʯɹԿ͕ຊͷͳͷ͔ IUUQXXXJUNFEJBDPKQQDVTFSBSUJDMFTOFXTIUNM