FIT2022（第 21 回情報科学技術フォーラム）L-004
௬᝿ィ⟬ᶵࣔࢽࢱ࡟ࡼࡿࢩࢫࢸ࣒ࢥ᳨࣮ࣝ▱⟠ᡤࡢ᥎ᐃ
Estimation of System Call Detection Point by Virtual Machine Monitor኱᳃ ༟ Taku Omoriబ⸨ ᑗஓ   ᒣෆ ฼ᏹ    ㇂ཱྀ ⚽ኵ Masaya Sato Toshihiro Yamauchi Hideo Taniguchi

1. ࡣࡌࡵ࡟௬᝿ィ⟬ᶵ㸦௨㝆㸪VM㸧࡟࠾ࡅࡿࣉࣟࢢ࣒ࣛᐇ⾜ࢆ┘どࡍࡿࡓࡵ࡟㸪VM ୖࡢࣉࣟࢢ࣒ࣛࡀⓎ⾜ࡋࡓࢩࢫࢸ࣒ࢥ࣮ࣝࢆ௬᝿ィ⟬ᶵࣔࢽࢱ㸦௨㝆㸪VMM㸧࡟ࡼࡾ᳨▱ࡍࡿᡭἲࡀᏑᅾࡍࡿ[1][2]㸬ࡇࢀࡽࡢᡭἲࡣ㸪VM ୖࡢ OS㸦௨㝆㸪ࢤࢫࢺ OS㸧࡟࠾ࡅࡿ≉ᐃࡢ࿨௧ᐇ⾜ࢆ᳨▱ࡍࡿࡓࡵ࡟㸪᳨▱⟠ᡤࡢ࢔ࢻࣞࢫࢆ࣮࢝ࢿࣝ㉳ືฎ⌮๓࡟ࢯ࣮ࢫࢥ࣮ࢻ࠿ࡽィ⟬ࡋ㸪ᙜヱ⟠ᡤ࡟ࣈ࣮ࣞࢡ࣏࢖ࣥࢺࢆタᐃࡍࡿ㸬ࡋ࠿ࡋ㸪ࡇࡢᡭἲࡣ㸪 OS ࣂ࣮ࢪࣙࣥࡢ᭦᪂ࡸᨵ㐀࡟ࡼࡿࢩࢫࢸ࣒ࢥ࣮ࣝฎ⌮ࡢኚ᭦࡬ᑐᛂࡍࡿࡓࡵ࡟ࢯ࣮ࢫࢥ࣮ࢻࡢゎᯒࡀᚲせ࡟࡞ࡿ㸬ࡲࡓ㸪࣮࢝ࢿࣝ✵㛫࡟࠾ࡅࡿ࢔ࢻࣞࢫ✵㛫ࡢࣛࣥࢲ࣒໬㸦KASLR㸧ࡀ᭷ຠࡔ࡜㸪᳨▱⟠ᡤࡢ࢔ࢻࣞࢫࢆ࣮࢝ࢿࣝ㉳ືฎ⌮๓࡟ィ⟬ࡍࡿࡇ࡜ࡀ࡛ࡁ࡞࠸㸬ᮏ✏࡛ࡣ㸪࣓ࣔࣜゎᯒ࡟ࡼࡾ᳨▱⟠ᡤࢆ᥎ᐃࡍࡿᡭἲ㸦௨㝆㸪ᥦ᱌ᡭἲ㸧ࢆ㏙࡭ࡿ㸬

2. ௬᝿ィ⟬ᶵ࡟࠾ࡅࡿࢩࢫࢸ࣒ࢥ࣮ࣝࡢ᳨▱2.1 VM ୖࡢࢩࢫࢸ࣒ࢥ࣮ࣝࡢ᳨▱ࢤࢫࢺ OS ࡟࠾ࡅࡿࢩࢫࢸ࣒ࢥ࣮ࣝࡢⓎ⾜ࢆ᳨▱ࡍࡿᡭἲ࡜ࡋ࡚㸪ࢹࣂࢵࢢࣞࢪࢫࢱࢆ⏝࠸࡚ࣁ࣮ࢻ࢙࢘࢔ࣈ࣮ࣞࢡ࣏࢖ࣥࢺࢆタᐃࡍࡿᡭἲࡀ࠶ࡿ㸬ࡇࡢᡭἲ࡛ࡣ㸪ࢹࣂࢵࢢࣞࢪࢫࢱ࡟ࢩࢫࢸ࣒ࢥ࣮ࣝᐇ⾜ฎ⌮ࢆ࿧ࡧฟࡍ๓ࡢ࿨௧ࡢ࢔ࢻࣞࢫ㸦௨㝆㸪᳨▱⟠ᡤ㸧ࢆタᐃࡍࡿ㸬ࡲࡓ㸪ࢹࣂࢵࢢ౛እⓎ⏕᫬࡟ VM exit ࢆⓎ⏕ࡉࡏࡿࡼ࠺タᐃࡍࡿ㸬ࡇࢀ࡟ࡼࡾ㸪ᙜヱ࢔ࢻࣞࢫ࡛࿨௧ࡀᐇ⾜ࡉࢀࡿ࡜ VM exit ࡀⓎ⏕ࡋ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࡢⓎ⾜ࢆ VMM ࡟ࡼࡾ᳨▱࡛ࡁࡿ㸬᝿ᐃ⎔ቃࡣ㸪x86_64 ࢔࣮࢟ࢸࢡࢳࣕࡢ CPU ࢆ⏝࠸࡚᏶඲௬᝿໬ࡉࢀࡓ VM ࡛࠶ࡿ㸬᝿ᐃ⎔ቃ࡛ࡣ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝ
Ⓨ⾜᫬࡟᭱ึ࡟ᐇ⾜ࡉࢀࡿ࿨௧㸦࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ㸧ࡣ㸪
Model Specific Register (MSR)ࡢ 1 ࡘ࡛࠶ࡿ IA32_LSTAR ࡟᱁⣡ࡉࢀࡿ㸬ࡲࡓ㸪ࢤࢫࢺ OS ࡜ࡋ࡚ Linux ࢆ᝿ᐃࡍࡿ㸬᪤Ꮡ◊✲ [1][2] ࡛ࡣ㸪ࢩࢫࢸ࣒ࢥ᳨࣮ࣝ▱ᚋࡢฎ⌮࡟࠾࠸࡚㸪ࣉࣟࢭࢫ࡟㛵ࡍࡿ᝟ሗࢆྲྀᚓࡍࡿᚲせࡀ࠶ࡿ㸬ࣉࣟࢭࢫ࡟㛵ࡍࡿ᝟ሗࡢྲྀᚓ࡟ࡣ㸪࣮࢝ࢿࣝࢫࢱࢵࢡࢆ⏝࠸ࡿ㸬ࢩࢫࢸ࣒ࢥ࣮ࣝⓎ⾜┤ᚋࡣ࣮࢝ࢿࣝࢫࢱࢵࢡ࡟ษࡾ᭰ࢃࡗ࡚࠸࡞࠸㸬ࡇࡢࡓࡵ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ࡛ࡣ࡞ࡃ㸪࣮࢝ࢿࣝࢫࢱࢵࢡ࡬ࡢษࡾ᭰࠼ࢆ᳨▱ࡍࡿᚲせࡀ࠶ࡿ㸬ࡲࡓ㸪᳨▱⟠ᡤ࡟ࡣࢫࢱࢵࢡษࡾ᭰࠼ᚋࡢ࢔ࢻࣞࢫࢆタᐃࡍࡿᚲせࡀ࠶ࡿ㸬᳨▱⟠ᡤࡣ㸪௨ୗࡢ 2 ㏻ࡾࡢᡭἲ࡟ࡼࡾỴᐃ࡛ࡁࡿ㸬㸦ᡭἲ 1㸧࣮࢝ࢿࣝ㉳ືฎ⌮๓࡟ࢯ࣮ࢫࢥ࣮ࢻࢆゎᯒࡍࡿࡇ࡜᳨࡛▱⟠ᡤ࡟タᐃࡍࡿ࢔ࢻࣞࢫࢆィ⟬ࡋỴᐃࡍࡿ㸬㸦ᡭἲ 2㸧ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺࡢ࢔ࢻࣞࢫࢆ IA32_LSTAR ࠿ࡽྲྀᚓࡋ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ
1 ᒸᒣ┴❧኱Ꮫ ኱Ꮫ㝔 ᝟ሗ⣔ᕤᏛ◊✲⛉ Okayama
Prefectural University2 ᒸᒣ┴❧኱Ꮫ ᝟ሗᕤᏛ㒊 Okayama Prefectural University3 ᒸᒣ኱Ꮫ Ꮫ⾡◊✲㝔 ⮬↛⛉ᏛᏛᇦ Okayama Universityᅗ 1 ᥦ᱌ᡭἲࡢฎ⌮ࡢὶࢀ࢖ࣥࢺࡢ࢔ࢻࣞࢫ࠿ࡽ≉ᐃࡋࡓ࿨௧ࡢ࢔ࢻࣞࢫࡲ࡛ࡢ㊥㞳㸦௨㝆㸪࢜ࣇࢭࢵࢺ㸧ࢆ㊊ࡋࡓ್ࢆ᳨▱⟠ᡤ࡜ࡍࡿ㸬࢜ࣇࢭࢵࢺࡣ࣮࢝ࢿࣝࡢࣂ࣮ࢪࣙࣥ࡟ࡼࡗ࡚␗࡞ࡿࡓࡵ㸪࣮࢝ࢿࣝ㉳ືฎ⌮๓࡟ࢯ࣮ࢫࢥ࣮ࢻࢆゎᯒࡋỴᐃࡍࡿ㸬

2.2 ࢩࢫࢸ࣒ࢥ᳨࣮ࣝ▱࡟࠾ࡅࡿㄢ㢟㸦ㄢ㢟 1㸧㐺⏝ྍ⬟࡞ OS ࣂ࣮ࢪࣙࣥࡢ㝈ᐃ
ᡭἲ 1 ࡜ᡭἲ 2 ࡛ࡣ㸪࢜ࣇࢭࢵࢺࡢ್ࡸ࢔ࢻࣞࢫࡣࢯ࣮
ࢫࢥ࣮ࢻࢆᇶ࡟㟼ⓗ࡟Ỵᐃࡍࡿ㸬ࡇࡢࡓࡵ㸪OS ࣂ࣮ࢪࣙࣥࡢ᭦᪂ࡸࢩࢫࢸ࣒ࢥ࣮ࣝฎ⌮ࡢኚ໬࡟ࡼࡾ࢜ࣇࢭࢵࢺࡸ࢔ࢻࣞࢫࡀኚ໬ࡋࡓሙྜ㸪᳨▱⟠ᡤ࡟タᐃࡍࡿ࢔ࢻࣞࢫࡢ෌ィ⟬ࡀᚲせ࡛࠶ࡿ㸬㸦ㄢ㢟 2㸧KASLR ࡟ࡼࡿ௬᝿࢔ࢻࣞࢫ✵㛫ࡢࣛࣥࢲ࣒໬KASLR ࡣ OS ㉳ືẖ࡟࣮࢝ࢿࣝࡢᒎ㛤ඛ࢔ࢻࣞࢫࢆࣛࣥ
ࢲ࣒໬ࡍࡿ㸬KASLR ࡟ࡼࡾ␗࡞ࡿ࢔ࢻࣞࢫ࡟࣮࢝ࢿࣝࡀᒎ㛤ࡉࢀࡿ࡜㸪࣮࢝ࢿࣝ㉳ືฎ⌮๓࡟ィ⟬ࡋࡓ࢔ࢻࣞࢫ࡜ᐇ㝿ࡢ᳨▱⟠ᡤࡀ୍⮴ࡋ࡞࠸㸬ࡇࡢࡓࡵ㸪㸦ᡭἲ 1㸧࡛ࡣ᳨▱࡛ࡁ࡞࠸㸬

3. ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ᳨▱⟠ᡤࡢ᥎ᐃ᳨▱⟠ᡤࢆࢤࢫࢺ OS ࡢ࣓ࣔࣜゎᯒ࡟ࡼࡾ᥎ᐃࡍࡿᡭἲࢆᥦ᱌ࡍࡿ㸬ᥦ᱌ᡭἲࡣ㸪IA32_LSTAR ࡢ್࠿ࡽࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺࢆ≉ᐃࡍࡿ㸬ḟ࡟㸪࢚ࣥࢺ࣏ࣜ
࢖ࣥࢺ࠿ࡽࢤࢫࢺ OS ࡢ࣓ࣔࣜࢆゎᯒࡋ㸪᳨▱࡟㐺ࡋࡓ࿨௧ࢆ᥈⣴ࡋ㸪᳨▱⟠ᡤ࡜ࡋ࡚タᐃࡍࡿ㸬ࡇࡢࡓࡵ㸪ࢤࢫࢺOS ࡢࢯ࣮ࢫࢥ࣮ࢻゎᯒࡣ୙せ࡜࡞ࡿ㸬ࡲࡓ㸪IA32_LSTAR࡟ࡣࣛࣥࢲ࣒໬ᚋࡢ್ࡀ᱁⣡ࡉࢀ࡚࠾ࡾ㸪KASLR ࡟ࡼࡿࣛࣥࢲ࣒໬ࡢᙳ㡪ࢆ↓ど࡛ࡁࡿ㸬ࡇࢀ࡟ࡼࡾ㸪㸦ㄢ㢟 1㸧࡜㸦ㄢ㢟 2㸧࡟ᑐฎࡍࡿ㸬ᥦ᱌ᡭἲ࡟࠾ࡅࡿฎ⌮ࡢὶࢀࢆᅗ 1 ࡟♧ࡍ㸬ᥦ᱌ᡭἲࡣVM ㉳ື᫬ࡢࡳ࡟㐺⏝ࡍࡿ㸬᝿ᐃ⎔ቃ࡛ࡣ㸪IA32_LSTAR࡟್ࡀ᱁⣡ࡉࢀ࡚࠿ࡽ᭱ึ࡟Ⓨ⏕ࡍࡿ VM exit Ⓨ⏕せᅉࡣ㸪
MSR ࡬ ࡢ ᭩ ࡁ ㎸ ࡳ ࡛ ࠶ ࡿ 㸬 ࡇ ࡢ ࡓ ࡵ 㸪 VM ㉳ ື ᫬ ࡟
IA32_LSTAR ࡟್ࡀ᱁⣡ࡉࢀ࡚࠿ࡽ᭱ึ࡟Ⓨ⏕ࡍࡿ MSR
࡬ࡢ᭩ࡁ㎸ࡳࢆ᳨▱ࡋ㸪(2)̾(5)ࡢฎ⌮ࢆ⾜࠺㸬ࡑࢀ௨እࡢ

153
第 4 分冊Copyright © 2022 by
The Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.

FIT2022（第 21 回情報科学技術フォーラム）MSR ࡢ᭩ࡁ㎸ࡳ࿨௧࡛ࡣ㸪(2)̾(5)ࡢฎ⌮ࡣ⾜ࢃ࡞࠸㸬(1) VM ୖ࡛ VM exit ࡀⓎ⏕ࡍࡿ㸬ࡓࡔࡋ㸪VM ㉳ືᚋ㸪
IA32_LSTAR ࡟್ࡀ᱁⣡ࡉࢀࡓᚋ㸪᭱ึ࡟Ⓨ⏕ࡍࡿ VMexit ࡢࡳᥦ᱌ᡭἲࢆ㐺⏝ࡍࡿ㸬(2) Virtual Machine Control Structure (VMCS) ࠿ࡽ
IA32_LSTAR ࡢ್ࢆྲྀᚓࡍࡿ㸬(3) ࢤࢫࢺ OS ࡢ࣓ࣔࣜෆᐜࢆ VMM ࡬ࢥࣆ࣮ࡍࡿ㸬(4) (3)࡛ྲྀᚓࡋࡓࢤࢫࢺ OS ࡢ࣓ࣔࣜෆᐜ࠿ࡽ᳨▱ᑐ㇟ࡢ࿨௧ࢆ᥈⣴ࡍࡿ㸬᳨▱ᑐ㇟ࡢ࿨௧ࢆ≉ᐃࡋࡓ᫬㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ࠿ࡽ≉ᐃࡋࡓ࿨௧ࡲ࡛ࡢ࢜ࣇࢭࢵࢺࢆ฼⏝ࡋ࡚㸪᳨▱⟠ᡤࡢ࢔ࢻࣞࢫࢆỴᐃࡍࡿ㸬(5) (4)࡛ྲྀᚓࡋࡓ࢔ࢻࣞࢫࢆࢹࣂࢵࢢࣞࢪࢫࢱ࡟タᐃࡋ㸪᳨▱⟠ᡤࢆタᐃࡍࡿ㸬᳨▱ᑐ㇟ࡢ࿨௧ࡣ㸪2.1 ⠇࡛㏙࡭ࡓᡭἲࢆᇶ࡟ㄪᰝࡋࡓ⤖ᯝ㸪ࢫࢱࢵࢡษࡾ᭰࠼࿨௧ࡢ movq ࡜ࢫࢱࢵࢡษࡾ᭰࠼ᚋࡢ pushq $__USER_DS ࡜ movq ࡜ࡋࡓ㸬ࢫࢱࢵࢡษࡾ᭰
࠼ᚋࡢ࿨௧ࡣ㸪Linux ࣂ࣮ࢪࣙࣥ࡟࠾ࡅࡿࢩࢫࢸ࣒ࢥ࣮ࣝฎ⌮ࡢ㐪࠸࠿ࡽ 2 ࡘࢆᣦᐃࡋࡓ㸬ࡲࡓ㸪ࢫࢱࢵࢡษࡾ᭰࠼
ᚋࡢ movq ࡣษࡾ᭰࠼ᚋࡣࡌࡵ࡚ᐇ⾜ࡉࢀࡿ movq ࡛࠶ࡿ㸬Linux ࡣ 3.2㸪4.19.18 ࠾ࡼࡧ 5.15.1 ࡟࠾࠸࡚㸪ࢩࢫࢸ࣒ࢥ
࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ࠿ࡽࢩࢫࢸ࣒ࢥ࣮ࣝᐇ⾜ฎ⌮ࡲ࡛ࡢ࢜ࣇࢭࢵࢺࡣ᭱኱࡛ 138 ࣂ࢖ࢺ࡛࠶ࡗࡓ㸬ᥦ᱌ᡭἲ࡛ࡣ
ࢩࢫࢸ࣒ࢥ࣮ࣝᐇ⾜ฎ⌮ࡼࡾࡶ๓࡟᳨▱ࡍࡿࡇ࡜ࢆ᝿ᐃࡋ࡚࠸ࡿ㸬ࡇࡢࡓࡵ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ࠿
ࡽ 138 ࣂ࢖ࢺࢆࢥࣆ࣮ࡍࢀࡤ᳨▱⟠ᡤࢆタᐃ࡛ࡁࡿ㸬࣮࢝ࢿࣝࡢኚ᭦࡟ࡼࡾ࢜ࣇࢭࢵࢺࡀቑຍࡋࡓ࡜ࡋ࡚ࡶ㸪᳨▱ᑐ㇟ࡢ࿨௧Ⓨぢࡲ࡛(3)-(4)ࢆ⧞ࡾ㏉ࡍࡇ࡜࡛ᑐฎ࡛ࡁࡿ㸬4. ホ౯
4.1 ホ౯ࡢ㡯┠࡜⎔ቃホ౯ᑐ㇟ࡣ㸪ࣂ࣮ࢪࣙࣥ࡟ࡼࡿࢩࢫࢸ࣒ࢥ࣮ࣝฎ⌮ࡢ㐪࠸࠿ࡽ Linux 3.2㸪4.19.18, ࠾ࡼࡧ 5.15.1 ࡢ 3 ࡘࢆ⏝ពࡋࡓ㸬VMM ࡟ࡣ Xen 4.13.0 ࢆ⏝࠸ࡓ㸬ホ౯࡟⏝࠸ࡓィ⟬ᶵࡣIntel(R) Core(TM) i7-6700 CPU @ 3.40GHz ࢆᦚ㍕ࡋࡓィ⟬ᶵ࡛࠶ࡾ㸪ホ౯ࡣ㸪⟶⌮⏝ࡢ VM1 ྎ࡜ホ౯ᑐ㇟ࡢ VM1ྎࢆ㉳ືࡋࡓ≧ែ࡛⾜ࡗࡓ㸬ྛ VM ࡟ࡣ 4GB ࡢ࣓ࣔࣜࢆ๭ࡾᙜ࡚ࡓ㸬㸦ホ౯ 1㸧␗࡞ࡿ Linux ࡢࣂ࣮ࢪࣙࣥ࡟࠾ࡅࡿ᳨ド
3 ࡘࡢホ౯ᑐ㇟࡟࠾࠸࡚㸪KASLR ᭷ຠ᫬࡜↓ຠ᫬࡟ࢩࢫ
ࢸ࣒ࢥ࣮ࣝࡢ᳨▱ࡀ࡛ࡁࡿ࠿ࢆ᳨ドࡋ㸪ᥦ᱌ᡭἲࡢ᭷⏝ᛶࢆホ౯ࡍࡿ㸬ࡲࡓ㸪ㄗ᳨▱ࡢྍ⬟ᛶ࡟ࡘ࠸࡚㏙࡭ࡿ㸬㸦ホ౯ 2㸧᳨▱⟠ᡤࡢ᥎ᐃ࡟࠿࠿ࡿฎ⌮᫬㛫ࡢ ᐃᥦ᱌ᡭἲࢆᑟධࡍࡿࡇ࡜࡟ࡼࡗ࡚Ⓨ⏕ࡍࡿ VM ᛶ⬟࡬ࡢᙳ㡪ࢆ ᐃࡋ㸪ホ౯ࡍࡿ㸬ࡲࡓ㸪1 ᅇ࡛ࢥࣆ࣮ࡍࡿ࣓ࣔࣜᐜ㔞࡟ࡘ࠸࡚㸪ฎ⌮᫬㛫ࢆ ᐃࡋỴᐃࡍࡿ㸬

4.2 ␗࡞ࡿ Linux ࡢࣂ࣮ࢪࣙࣥ࡟࠾ࡅࡿ᳨ド
3 ࡘࡢᑐ㇟࡟࠾࠸࡚㸪KASLR ᭷ຠ᫬࡜↓ຠ᫬ࡢࡑࢀࡒࢀ࡟࠾࠸᳨࡚ドࡋࡓ㸬⤖ᯝࡣ㸪KASLR ࡢ᭷↓࡟࠿࠿ࢃࡽࡎ㸪
3 ࡘࡢᑐ㇟ࡍ࡭࡚࡟࠾࠸࡚ࢩࢫࢸ࣒ࢥ࣮ࣝࢆ᳨▱࡛ࡁࡓ㸬

⾲ 1 Linux ࡢࣂ࣮ࢪࣙࣥ࡜࢜ࣇࢭࢵࢺࡢ㛵ಀLinux ࡢࣂ࣮ࢪࣙࣥ
3.2
4.19.18
5.15.1᳨▱⟠ᡤࡲ࡛ࡢ
࢜ࣇࢭࢵࢺ
853741᳨▱ࡋࡓ࿨௧
movqpushq $__USER_DSᅗ 2 ᳨▱⟠ᡤࡢ᥎ᐃ࡟࠿࠿ࡿฎ⌮᫬㛫ࡲࡓ㸪Linux ࡢࣂ࣮ࢪࣙࣥ࡜࢜ࣇࢭࢵࢺࡢ㛵ಀࢆ⾲ 1 ࡟♧ࡍ㸬ࢤࢫࢺ OS ࡢࢩࢫࢸ࣒ࢥ࣮ࣝࡢ࢚ࣥࢺ࣏ࣜ࢖ࣥࢺ࠿ࡽ
⾲ 1 ࡢ࢜ࣇࢭࢵࢺࡲ࡛ࡢ࣓ࣔࣜෆᐜࢆཧ↷ࡋࡓ㸬3 ❶࡛♧ࡋࡓ 3 ࡘࡢ᳨▱ᑐ㇟ࡢ࿨௧ࡣ㸪᳨▱⟠ᡤ௨እ࡟Ꮡᅾࡋ࡞࠸ࡇ࡜࠿ࡽㄗ᳨▱ࡢྍ⬟ᛶࡣప࠸ࡇ࡜ࢆ☜ㄆࡋࡓ㸬

4.3 ᳨▱⟠ᡤࡢ᥎ᐃ࡟࠿࠿ࡿฎ⌮᫬㛫ࡢ ᐃ᳨▱⟠ᡤࡢ᥎ᐃ࡟࠿࠿ࡿฎ⌮᫬㛫ࢆ ᐃࡍࡿ㸬ᥦ᱌ᡭἲࢆ㐺⏝ࡍࡿ㝿ࡢ VM exit ࡢⓎ⏕せᅉࡣ㸪MSR_WRITE ࡛࠶ࡿ㸬ࡇࡢࡓࡵ㸪MSR_WRITE ࡟ࡼࡿ VM exit ࢆ 5 ᅇⓎ⏕ࡉࡏ㸪ฎ⌮᫬㛫ࢆ ᐃࡍࡿ㸬 ᐃ༊㛫ࡣ㸪ᅗ 1 ࡢ(3)࠿ࡽ(5)ࡲ
࡛࡜ࡍࡿ㸬ᅗ 1 ࡢ(2)ࡣ㸪VMM ഃ࡟࠶ࡿ IA32_LSTAR ࡢ್ࢆ᱁⣡ࡋࡓኚᩘࢆࡑࡢࡲࡲ฼⏝ࡍࡿࡓࡵ㸪ฎ⌮᫬㛫ࡣ࠿࠿ࡽ࡞࠸㸬ࡇࡢࡓࡵ㸪 ᐃ༊㛫࠿ࡽ㝖እࡍࡿ㸬 ᐃ࡛ࡣ㸪(3)࡛ 1 ᅇ࡟ࢥࣆ࣮ࡍࡿ࣓ࣔࣜᐜ㔞ࢆኚ໬ࡉࡏ ᐃࡋࡓ㸬ᐃ⤖ᯝࢆᅗ 2 ࡟♧ࡍ㸬 Tc ࡣᅗ 1 ࡢ(3)㸪Ti ࡣ(4)㸪Ts ࡣ(5) ࡟ᑐᛂࡍࡿ㸬1 ᅇ࡟ࢥࣆ࣮ࡍࡿ࣓ࣔࣜᐜ㔞ࡀ 64 ࣂ࢖ࢺ࠿ࡽ 4096 ࣂ࢖ࢺࡢሙྜ㸪ฎ⌮᫬㛫࡟኱ࡁ࡞ኚ໬ࡣ࡞࠸㸬ࡇࢀࡣ㸪2 ࡘ┠ࡢ᳨▱ᑐ㇟ࡢ࿨௧ࡲ࡛ࡢ࢜ࣇࢭࢵࢺࡀ 37 ࣂ࢖ࢺࡢ఩⨨࡛࠶ࡾ㸪64 ࣂ࢖ࢺ௨㝆ࡣ 1 ᅇࡢࢥࣆ࣮࡛࿨௧ࢆ≉ᐃ࡛ࡁࡓ࠿ࡽ࡛࠶ࡿ㸬ฎ⌮᫬㛫ࡣ 256 ࣂ࢖ࢺࡢ࡜ࡁ࡟᭱ࡶ▷ࡃ 7.6 ਫ਼࡛࠶ࡗࡓ㸬ࡇࡢࡓࡵ㸪1 ᗘ࡟ࢥࣆ࣮ࡍࡿ࣓ࣔ
ࣜᐜ㔞ࡣ 256 ࣂ࢖ࢺࡀ㐺ࡋ࡚࠸ࡿ㸬ࡲࡓ㸪ᥦ᱌ᡭἲࡀ VM ࡢᛶ⬟࡬୚࠼ࡿᙳ㡪ࢆホ౯ࡍࡿࡓࡵ࡟ VM ㉳ື᫬㛫ࢆ ᐃࡋࡓ㸬VM ㉳ື᫬㛫ࡣ㸪VM ࢆ㉳ືࡍࡿࢥ࣐ࣥࢻࢆᐇ⾜ࡋ࡚࠿ࡽࢥࣥࢯ࣮ࣝࣟࢢ࢖ࣥࡀྍ⬟࡟࡞ࡿࡲ࡛ࡢ᫬㛫࡜ࡋ㸪5 ᅇ ᐃࡋࡓ㝿ࡢᖹᆒࢆ⏝࠸ࡓ㸬ᐃ⤖ᯝ࠿ࡽ㸪VM ㉳ື᫬㛫ࡣ⣙ 3.75 s ࡛࠶ࡗࡓ㸬ࡇࡢࡓࡵ㸪ᥦ᱌ᡭἲ࡟ࡼࡿ VM ㉳ື᫬㛫࡬ࡢᙳ㡪ࡣ༑ศ࡟ᑠࡉ࠸㸬

5. ࠾ࢃࡾ࡟௬᝿ィ⟬ᶵࣔࢽࢱ࡟ࡼࡾࢩࢫࢸ࣒ࢥ᳨࣮ࣝ▱⟠ᡤࢆ᥎ᐃࡍࡿᡭἲࢆ㏙࡭ࡓ㸬ᥦ᱌ᡭἲ࡟ࡼࡾ㸪OS ࣂ࣮ࢪࣙࣥࡢ᭦᪂㸪ࢩࢫࢸ࣒ࢥ࣮ࣝฎ⌮ࡢኚ᭦㸪࠾ࡼࡧ KASLR ࡢ᭷↓࡟࠿࠿ࢃࡽࡎ㸪ࢩࢫࢸ࣒ࢥ࣮ࣝࢆ᳨▱࡛ࡁࡿࡇ࡜ࢆ♧ࡋࡓ㸬ホ౯࡛ࡣ㸪␗࡞ࡿ Linux ࣂ࣮ࢪࣙࣥ࡟࠾࠸࡚㸪ᥦ᱌ᡭἲ࡟ࡼࡾ᳨▱⟠ᡤࡀ᥎ᐃ࡛ࡁࡿࡇ࡜ࢆ♧ࡋࡓ㸬ࡲࡓ㸪᳨▱⟠ᡤࡢ᥎ᐃ࡟࠿࠿ࡿฎ⌮᫬㛫ࡣ⣙ 7.6 ਫ਼࡛࠶ࡾ㸪ᥦ᱌ᡭἲ࡟
ࡼࡿ VM ㉳ື᫬㛫࡬ࡢᙳ㡪ࡣ༑ศ࡟ᑠࡉ࠸ࡇ࡜ࢆ♧ࡋࡓㅰ㎡ᮏ◊✲ࡢ୍㒊ࡣ JSPS ⛉◊㈝ JP19H04109㸪JP22H03592 ࡢຓᡂࢆཷࡅࡓࡶࡢ࡛ࡍ㸬ཧ⪃ᩥ⊩[1] ዟ⏣ຬ႐㸪బ⸨ᑗஓ㸪㇂ཱྀ⚽ኵ㸪͆㔜せࢧ࣮ࣅࢫࡢືస୙ྍど໬ᡭἲ࡟࠾ࡅࡿࢩࢫࢸ࣒ࢥ࣮ࣝ௦⌮ᐇ⾜ฎ⌮ࡢຠ⋡໬㸪͇᝟ሗฎ⌮Ꮫ఍ㄽᩥㄅ㸪Vol.61㸪No.9㸪pp.1495–1506㸦2020㸧㸬
[2] ⚟ᮏ῟ᩥ㸪ᒣෆ฼ᏹ㸪͆KVM ୖࡢࢤࢫࢺ OS ࡟࠾ࡅࡿᶒ㝈ࡢኚ᭦࡟╔┠ࡋࡓᶒ㝈᪼᱁ᨷᧁ㜵Ṇᡭἲ㸪͇᝟ሗฎ⌮Ꮫ఍ㄽᩥㄅ㸪
Vol.61㸪No.9㸪pp.1507–1518㸦2020㸧㸬

154
第 4 分冊Copyright © 2022 byThe Institute of Electronics, Information and Communication Engineers andInformation Processing Society of Japan All rights reserved.