x86 ใƒ—ใƒญใ‚ปใƒƒใ‚ตใฎๅ‘ฝไปคใ‚ปใƒƒใƒˆใงๆคœๅ‡บใ•ใ‚ŒใŸๆ–‡ๆ›ธๅŒ–ใ•ใ‚Œใฆใ„ใชใ„ใ‚ชใƒšใ‚ณใƒผใƒ‰

Verilave ใฎใƒใƒณใ‚ฌใƒชใƒผไบบใ‚จใƒณใ‚ธใƒ‹ใ‚ข Can Bรถlรผkใฏใ€x86-64 ใƒ—ใƒญใ‚ปใƒƒใ‚ตใฎๅ‘ฝไปคใ‚ปใƒƒใƒˆใซๆœชไฝฟ็”จใงๆ–‡ๆ›ธๅŒ–ใ•ใ‚Œใฆใ„ใชใ„ใ‚ชใƒšใƒฌใƒผใƒ†ใ‚ฃใƒณใ‚ฐ ใ‚ณใƒผใƒ‰ใ‚’่ฆ‹ใคใ‘ใพใ—ใŸใ€‚  





ใใฎใ‚ˆใ†ใชใ‚ชใƒšใ‚ณใƒผใƒ‰ใŒๅญ˜ๅœจใ™ใ‚‹ใ“ใจใŒๅˆคๆ˜Žใ—ใพใ—ใŸ! ใ‚‚ใจใ‚‚ใจๆญป็”ฃใ ใฃใŸใƒใƒผใƒ ใ‚‚ใ‚ใ‚Œใฐใ€ใ‚คใƒผใ‚นใ‚ฟใƒผใ‚จใƒƒใ‚ฐใฎใ‚ˆใ†ใซ่ฆ‹ใˆใ‚‹ใƒใƒผใƒ ใ‚‚ใ‚ใ‚Œใฐใ€ๅฟ˜ใ‚Œใ‚‰ใ‚ŒใŸใƒใ‚ฐใ‚„้ƒจๅˆ†็š„ใซๅฎŸ่ฃ…ใ•ใ‚ŒใŸใƒใƒผใƒ ใฎใ‚ˆใ†ใซ่ฆ‹ใˆใ‚‹ใƒใƒผใƒ ใ‚‚ใ‚ใ‚Šใ€ๆ—ฅใฎ็›ฎใ‚’่ฆ‹ใ‚‹ใ“ใจใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ใพใŸใ€ใ€Œ็ฅžใƒขใƒผใƒ‰ใ€ๅ…จไฝ“ใ‚’้–‹ใใ‚ˆใ†ใซ่ฆ‹ใˆใ‚‹ใ‚ชใƒšใ‚ณใƒผใƒ‰ใŒใ„ใใคใ‹ใ‚ใ‚Šใ€ใƒ—ใƒญใ‚ปใƒƒใ‚ตไฟ่ญทใ‚’ใƒใ‚คใƒ‘ใ‚นใ—ใŸใ‚Šใ€ใƒใƒƒใƒ—ใฎๅ†…้ƒจใƒžใ‚คใ‚ฏใƒญใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใๆ›ใˆใŸใ‚Šใ™ใ‚‹ใ“ใจใ•ใˆใงใใพใ™ใ€‚Bรถlyuk ใฏใใ‚Œใ‚‰ใ‚’ๆคœๅ‡บใ™ใ‚‹ใƒ—ใƒญใ‚ปใ‚นใ‚’่‡ชๅ‹•ๅŒ–ใ—ใ€ๅฝผใฎใ‚ขใƒ—ใƒญใƒผใƒใฏ้žๅธธใซ็‹ฌๅ‰ต็š„ใงใ‚ใ‚‹ใ“ใจใŒๅˆคๆ˜Žใ—ใพใ—ใŸใ€‚





ๆœชไฝฟ็”จใฎใ‚ชใƒšใ‚ณใƒผใƒ‰ใ‚’่ฆ‹ใคใ‘ใ‚‹้š›ใฎๅ•้กŒใฏใ€ใƒ†ใ‚นใƒˆไธญใซ้–ขไฟ‚ใ‚’็‰นๅฎšใ™ใ‚‹ใฎใŒ้›ฃใ—ใ„ใ“ใจใงใ™ใ€‚ๅ‘ฝไปคใฏใ€ไธ€้ƒจใฎใƒฌใ‚ธใ‚นใ‚ฟใงใฏๆฉŸ่ƒฝใ—ใพใ™ใŒใ€ไป–ใฎใƒฌใ‚ธใ‚นใ‚ฟใงใฏๆฉŸ่ƒฝใ—ใพใ›ใ‚“ใ€‚ใƒกใƒขใƒช ใƒขใƒผใƒ‰ใงใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใ‚‹ๅ‘ฝไปคใจใใ†ใงใชใ„ๅ‘ฝไปคใŒใ‚ใ‚Šใพใ™ใ€‚





Kang Belluk ใฏใ€ใ‚ตใ‚คใƒ‰ ใƒใƒฃใƒใƒซใ‚’ไฝฟ็”จใ—ใฆใ€ใปใผใ™ในใฆใฎใƒ—ใƒญใ‚ปใƒƒใ‚ตๅ‘ฝไปคใ‚’ๆคœๅ‡บใ™ใ‚‹ๆ–นๆณ•ใ‚’้–‹็™บใ—ใพใ—ใŸใ€‚ใ“ใฎๆ–นๆณ•ใฏใ€ใƒ—ใƒญใ‚ปใƒƒใ‚ตใฎ้‡่ฆใชๆฉŸ่ƒฝใซๅฏพๅ‡ฆใ™ใ‚‹ใจใ„ใ†็‚นใง่ˆˆๅ‘ณๆทฑใ„ใ‚‚ใฎใงใ™ใ€‚ๅฎŒๅ…จใชใ‚ณใƒผใƒ‰ใฏใ“ใ“ใงๅ…ฅๆ‰‹ใงใใพใ™:  haruspex.can.ac  /  Githubใ€‚





Kan Belluk ใฏ่‡ช่บซใฎใƒ–ใƒญใ‚ฐใงใ€ๅฝผใฎใ‚ขใƒ—ใƒญใƒผใƒใฎๆœฌ่ณชใซใคใ„ใฆ่ฉณใ—ใ่ชžใฃใฆใ„ใพใ™ใ€‚





ใƒžใ‚คใ‚ฏใƒญๅ‘ฝไปคใฏใฉใ“ใ‹ใ‚‰ๆฅใŸใฎใงใ™ใ‹?

ๆœ€่ฟ‘ใฎใƒ—ใƒญใ‚ปใƒƒใ‚ตใฏใ€้žๅธธใซ่ค‡้›‘ใชใƒžใ‚คใ‚ฏใƒญใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใ‚’ๅ‚™ใˆใฆใ„ใพใ™ใ€‚ๅคใ่‰ฏใใƒ‡ใ‚ณใƒผใƒ€ใƒผใฏใ€ใ‚จใ‚ฐใ‚ผใ‚ฏใƒ†ใ‚ฃใƒ–ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’็›ดๆŽฅใƒ‡ใ‚ณใƒผใƒ‰ใ—ใชใใชใ‚Šใพใ—ใŸใ€‚ใƒ—ใƒญใ‚ปใƒƒใ‚ตใฎใƒžใ‚คใ‚ฏใƒญใ‚ณใƒผใƒ‰ใซๅพ“ใฃใฆใ€ใใ‚Œใ‚‰ใ‚’ใƒžใ‚คใ‚ฏใƒญๅ‘ฝไปคใซใƒ‡ใ‚ณใƒผใƒ‰ใ—ใ€ๅฎŸ่กŒใƒใƒผใƒˆใซ้€ไฟกใ—ใพใ™ใ€‚ๆœ€ๆ–ฐใฎ Intel ใƒ—ใƒญใ‚ปใƒƒใ‚ตใงใฏใ€2 ใคใฎใƒขใ‚ธใƒฅใƒผใƒซใŒใ“ใ‚Œใ‚’่กŒใ„ใพใ™ใ€‚





  • ใƒžใ‚คใ‚ฏใƒญๅ‘ฝไปค็ฟป่จณใ‚จใƒณใ‚ธใƒณ (MITE)  - ๅ˜็ด”ใชใƒฌใ‚ฌใ‚ทใƒผๅ‘ฝไปคใ‚’ 4 ใคไปฅไธ‹ใฎใƒžใ‚คใ‚ฏใƒญๅ‘ฝไปคใซๅค‰ๆ›ใ—ใพใ™ใ€‚





  • (MS) โ€“ , CISC Intel .





(DSB),   iCache. , , Intel. :





, Sandsifter. #UD (, - ), , .





, .  โ€“ , , , . ? โ€“ ! :  (speculative execution). 





? , . . , . . , .





CALL. :





call x
  <speculated code>
x:
  lea        rax,     [rip+z]
  xchg       [rsp],   rax
  ret
z:
      
      



, . XCHG



, , , , . , .  CHG



, MOV



, LOCK



, . .





, , . . , . :





auto ip = ia32::get_ip() & ~63ull;
std::copy_n( ( volatile uint8_t* ) ip, 512, ( volatile uint8_t* ) ip );
ia32::sfence();
for ( size_t n = 0; n != 512; n += 64 )
  ia32::clflush( ip + n );
      
      



.  , .  , , . . -, #SMI



(System Management Interrupt ), , PMC ( ). -, , , . , IA32_MSR_SMI_COUNT



.  โ€“ #NMI. . #MC, .





, Mod(x)



, . โ€“ , , .  15  NOP



 0xCE



,  #UD



.   0x00-0xFF



,  0x0F



, ,  { 0x66



, 0xF2



, 0xF3



} Intel .  ModR/M, .





: NOP, , 0xCE



, ,  for-real-#UD



.





ยซยป, , for-real-#UD



. . :





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”
โ”‚ (index) โ”‚             decoding             โ”‚ mits โ”‚ ms โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ค
โ”‚   90    โ”‚              'nop'               โ”‚  54  โ”‚ 80 โ”‚ /*Baseline*/
โ”‚  6690   โ”‚           'data16 nop'           โ”‚  53  โ”‚ 67 โ”‚
โ”‚  f290   โ”‚              'nop'               โ”‚  53  โ”‚ 80 โ”‚
โ”‚ f20f90  โ”‚ 'seto byte ptr [rax-0x6f6f6f70]' โ”‚  48  โ”‚ 80 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”˜
      
      



nop , MITE. , MITS , MS . , , ,  0x0F



.  , .  54954 .





const propertyMatch = (i1, i2) => {
  return i2.ms == i1.ms && i2.outOfOrder == i1.outOfOrder && i2.iclass == i1.iclass;
};

// Purge redundant prefixes.
//
for (const k1 of Object.keys(instructions)) {
  // Skip if already deleted.
  //
  const i1 = instructions[k1];
  if (!i1) {
    continue;
  }

  // Iterate each prefix (apart from 0f):
  //
  for (const pfx of prefixList) {
    // If the instruction exists:
    //
    const k2 = pfx + k1;
    if (k2 in instructions) {
      // If the instruction has matching properties as the derived from parent, delete the entry.
      //
      const i2 = instructions[k2];
      if (propertyMatch(i1, i2)) {
        // MITS#1 == MITS#2 can indicate same instruction if instruction halts.
        // Otherwise MITS#1 has to be one more than MITS#2 since it should execute one more NOP.
        //
        if (i1.mits != i2.mits) {
          if (i1.mits != i2.mits + 1) {
            continue;
          }
        } else if (i1.mits > faultBaseline.mits) {
          continue;
        }
        delete instructions[k2];
      }
    }
  }
}
      
      



- 72869 . 1699 , !





// Purge redundant suffixes.
//
for (const k1 of Object.keys(instructions)) {
  // Skip if already deleted or not relevant.
  //
  const i1 = instructions[k1];
  if (!i1 || k1.length <= 2) {
    continue;
  }

  // Find maching entries:
  //
  for (const k2 of Object.keys(instructions)) {
    // If it is matching except the last byte:
    //
    if (k2.startsWith(k1.substr(0, k1.length - 2)) && k2 != k1) {
      // If it has matching properties ignoring the length, erase it
      //
      const i2 = instructions[k2];
      if (propertyMatch(i1, i2)) {
        delete instructions[k2];
      }
    }
  }
}
      
      



, , , .  MS nop, , , . MITS , , , , ( , MS MITS, ), ( NOP ).





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index)  โ”‚                          decoding                          โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  668690  โ”‚            'xchg byte ptr [rax-0x6f6f6f70], dl'            โ”‚  47  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚    6c    โ”‚                          'insb '                           โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚    6d    โ”‚                          'insd '                           โ”‚  39  โ”‚ 99  โ”‚    true     โ”‚       true       โ”‚
โ”‚    6e    โ”‚                          'outsb '                          โ”‚  39  โ”‚ 98  โ”‚    true     โ”‚       true       โ”‚
โ”‚    6f    โ”‚                          'outsd '                          โ”‚  39  โ”‚ 98  โ”‚    true     โ”‚       true       โ”‚
โ”‚   8e90   โ”‚            'mov ss, word ptr [rax-0x6f6f6f70]'             โ”‚  42  โ”‚ 86  โ”‚    true     โ”‚       true       โ”‚
โ”‚   c290   โ”‚                        'ret 0x9090'                        โ”‚  43  โ”‚ 107 โ”‚    true     โ”‚       true       โ”‚ // <---  Likely errors since
โ”‚    c3    โ”‚                           'ret '                           โ”‚  41  โ”‚ 106 โ”‚    true     โ”‚       true       โ”‚ // <-/   CF will be interrupted
โ”‚   ca90   โ”‚                      'ret far 0x9090'                      โ”‚  39  โ”‚ 145 โ”‚    true     โ”‚       true       โ”‚ //       but will continue from a valid IP.
โ”‚    cb    โ”‚                         'ret far '                         โ”‚  39  โ”‚ 145 โ”‚    true     โ”‚       true       โ”‚
โ”‚    cc    โ”‚                          'int3 '                           โ”‚  39  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚   cd90   โ”‚                         'int 0x90'                         โ”‚  39  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚    cf    โ”‚                          'iretd '                          โ”‚  39  โ”‚ 136 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e490   โ”‚                       'in al, 0x90'                        โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e590   โ”‚                       'in eax, 0x90'                       โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e690   โ”‚                       'out 0x90, al'                       โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e790   โ”‚                      'out 0x90, eax'                       โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ec    โ”‚                        'in al, dx'                         โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ed    โ”‚                        'in eax, dx'                        โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ee    โ”‚                        'out dx, al'                        โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ef    โ”‚                       'out dx, eax'                        โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    f1    โ”‚                          'int1 '                           โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚    f4    โ”‚                           'hlt'                            โ”‚  39  โ”‚ 124 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0090  โ”‚              'lldt word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 93  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0098  โ”‚              'ltr word ptr [rax-0x6f6f6f70]'               โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0080  โ”‚              'sldt word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0081  โ”‚              'sldt word ptr [rcx-0x6f6f6f70]'              โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0088  โ”‚              'str word ptr [rax-0x6f6f6f70]'               โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f00a0  โ”‚              'verr word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f00a8  โ”‚              'verw word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f00d8  โ”‚                          'ltr ax'                          โ”‚  39  โ”‚ 108 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0190  โ”‚                'lgdt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0198  โ”‚                'lidt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0180  โ”‚                'sgdt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 89  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0188  โ”‚                'sidt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f01b0  โ”‚              'lmsw word ptr [rax-0x6f6f6f70]'              โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01b8  โ”‚             'invlpg byte ptr [rax-0x6f6f6f70]'             โ”‚  39  โ”‚ 114 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01a0  โ”‚              'smsw word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 85  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f20f22a4 โ”‚                       'mov cr4, rsp'                       โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f20f2396 โ”‚                       'mov dr2, rsi'                       โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f20f2380 โ”‚                       'mov dr0, rax'                       โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f20fc788 โ”‚           'cmpxchg8b qword ptr [rax-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f20fc78a โ”‚           'cmpxchg8b qword ptr [rdx-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ”‚  f38690  โ”‚       'xrelease xchg byte ptr [rax-0x6f6f6f70], dl'        โ”‚  47  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚  f38790  โ”‚      'xrelease xchg dword ptr [rax-0x6f6f6f70], edx'       โ”‚  47  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚  f38890  โ”‚        'xrelease mov byte ptr [rax-0x6f6f6f70], dl'        โ”‚  47  โ”‚ 84  โ”‚    true     โ”‚      false       โ”‚
โ”‚  f38990  โ”‚       'xrelease mov dword ptr [rax-0x6f6f6f70], edx'       โ”‚  47  โ”‚ 84  โ”‚    true     โ”‚      false       โ”‚
โ”‚   f36c   โ”‚                        'rep insb '                         โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚   f36d   โ”‚                        'rep insd '                         โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚   f36e   โ”‚                        'rep outsb '                        โ”‚  39  โ”‚ 111 โ”‚    true     โ”‚       true       โ”‚
โ”‚   f36f   โ”‚                        'rep outsd '                        โ”‚  39  โ”‚ 111 โ”‚    true     โ”‚       true       โ”‚
โ”‚   f3a4   โ”‚         'rep movsb byte ptr [rdi], byte ptr [rsi]'         โ”‚  43  โ”‚ 118 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚   f3a6   โ”‚         'rep cmpsb byte ptr [rsi], byte ptr [rdi]'         โ”‚  43  โ”‚ 123 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚   f3a7   โ”‚        'rep cmpsd dword ptr [rsi], dword ptr [rdi]'        โ”‚  43  โ”‚ 123 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚   f3aa   โ”‚                 'rep stosb byte ptr [rdi]'                 โ”‚  43  โ”‚ 125 โ”‚    true     โ”‚       true       โ”‚ // Likely errors since
โ”‚   f3ac   โ”‚                 'rep lodsb byte ptr [rsi]'                 โ”‚  43  โ”‚ 106 โ”‚    true     โ”‚       true       โ”‚ // rcx is undefined.
โ”‚   f3ad   โ”‚                'rep lodsd dword ptr [rsi]'                 โ”‚  43  โ”‚ 106 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚   f3ae   โ”‚                 'rep scasb byte ptr [rdi]'                 โ”‚  43  โ”‚ 123 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚   f3af   โ”‚                'rep scasd dword ptr [rdi]'                 โ”‚  43  โ”‚ 123 โ”‚    true     โ”‚       true       โ”‚ //
โ”‚ f30f0082 โ”‚              'sldt word ptr [rdx-0x6f6f6f70]'              โ”‚  46  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f0088 โ”‚              'str word ptr [rax-0x6f6f6f70]'               โ”‚  46  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f0180 โ”‚                'sgdt ptr [rax-0x6f6f6f70]'                 โ”‚  46  โ”‚ 89  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f018a โ”‚                'sidt ptr [rdx-0x6f6f6f70]'                 โ”‚  46  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f01a1 โ”‚              'smsw word ptr [rcx-0x6f6f6f70]'              โ”‚  46  โ”‚ 85  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f2190 โ”‚                       'mov rax, dr2'                       โ”‚  39  โ”‚ 107 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f22a4 โ”‚                       'mov cr4, rsp'                       โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f2380 โ”‚                       'mov dr0, rax'                       โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f238e โ”‚                       'mov dr1, rsi'                       โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f7890 โ”‚                             ''                             โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f7990 โ”‚                             ''                             โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30fc789 โ”‚           'cmpxchg8b qword ptr [rcx-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30fc78f โ”‚           'cmpxchg8b qword ptr [rdi-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30fc7b0 โ”‚             'vmxon qword ptr [rax-0x6f6f6f70]'             โ”‚  39  โ”‚ 116 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30fc733 โ”‚                  'vmxon qword ptr [rbx]'                   โ”‚  39  โ”‚ 119 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30fc776 โ”‚                'vmxon qword ptr [rsi-0x70]'                โ”‚  39  โ”‚ 120 โ”‚    true     โ”‚       true       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



ยซSpeculation Fenceยป ( ) ?  , , :





?  , .  . , . 





 divps xmm4, xmm5  #UD'ing, 0xCE , . .  :





vmovups    ymm0,    [temp]
vmovups    ymm1,    [temp]
vmovups    ymm2,    [temp]
vmovups    ymm3,    [temp]
vzeroupper
addps      xmm0,    xmm1
vaddps     ymm2,    ymm0,    ymm3
vaddps     ymm1,    ymm0,    ymm2
vaddps     ymm3,    ymm0,    ymm1
vaddps     ymm0,    ymm0,    [temp]
vaddps     ymm1,    ymm0,    [temp]
vaddps     ymm2,    ymm0,    [temp]
vaddps     ymm3,    ymm0,    [temp]
vaddps     ymm0,    ymm0,    ymm1
vaddps     ymm2,    ymm0,    ymm3
vaddps     ymm1,    ymm0,    ymm2
vaddps     ymm3,    ymm0,    ymm1
vaddps     ymm0,    ymm0,    [temp]
vaddps     ymm1,    ymm0,    [temp]
vaddps     ymm2,    ymm0,    [temp]
vaddps     ymm3,    ymm0,    [temp]
vaddps     ymm0,    ymm0,    ymm1
vaddps     ymm2,    ymm0,    ymm3
vaddps     ymm1,    ymm0,    ymm2
vaddps     ymm3,    ymm0,    ymm1
vaddps     ymm0,    ymm0,    [temp]
vaddps     ymm1,    ymm0,    [temp]
vaddps     ymm2,    ymm0,    [temp]
vaddps     ymm3,    ymm0,    [temp]
vaddps     ymm0,    ymm0,    ymm1
vaddps     ymm2,    ymm0,    ymm3
vaddps     ymm1,    ymm0,    ymm2
vaddps     ymm3,    ymm0,    ymm1
lea        rax,     [rip+z]
xchg       [rsp],   rax
ret
      
      



, ยซยป, , , . , :





-- These indeed leak data under speculative execution:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index)  โ”‚                          decoding                          โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   8690   โ”‚            'xchg byte ptr [rax-0x6f6f6f70], dl'            โ”‚  48  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚   e090   โ”‚                'loopne 0xffffffffffffff92'                 โ”‚  56  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚    fb    โ”‚                           'sti '                           โ”‚  56  โ”‚ 83  โ”‚    false    โ”‚      false       โ”‚
โ”‚    fc    โ”‚                           'cld '                           โ”‚  53  โ”‚ 83  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f0080  โ”‚              'sldt word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0081  โ”‚              'sldt word ptr [rcx-0x6f6f6f70]'              โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0088  โ”‚              'str word ptr [rax-0x6f6f6f70]'               โ”‚  47  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f00c0  โ”‚                         'sldt eax'                         โ”‚  51  โ”‚ 85  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f00c8  โ”‚                         'str eax'                          โ”‚  51  โ”‚ 85  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f0009  โ”‚                    'str word ptr [rcx]'                    โ”‚  51  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f0180  โ”‚                'sgdt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 89  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f0188  โ”‚                'sidt ptr [rax-0x6f6f6f70]'                 โ”‚  47  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f01a0  โ”‚              'smsw word ptr [rax-0x6f6f6f70]'              โ”‚  47  โ”‚ 85  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f01a1  โ”‚              'smsw word ptr [rcx-0x6f6f6f70]'              โ”‚  47  โ”‚ 85  โ”‚    true     โ”‚      false       โ”‚
โ”‚  0f01d0  โ”‚                         'xgetbv '                          โ”‚  51  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f01d5  โ”‚                           'xend'                           โ”‚  51  โ”‚ 84  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f01e0  โ”‚                         'smsw eax'                         โ”‚  51  โ”‚ 84  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f010f  โ”‚                      'sidt ptr [rdi]'                      โ”‚  51  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f0140  โ”‚                   'sgdt ptr [rax-0x70]'                    โ”‚  50  โ”‚ 89  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f2098  โ”‚                       'mov rax, cr3'                       โ”‚  51  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f2080  โ”‚                       'mov rax, cr0'                       โ”‚  51  โ”‚ 85  โ”‚    false    โ”‚      false       โ”‚
โ”‚   0f31   โ”‚                          'rdtsc '                          โ”‚  52  โ”‚ 93  โ”‚    false    โ”‚      false       โ”‚
โ”‚   0f77   โ”‚                           'emms'                           โ”‚  52  โ”‚ 111 โ”‚    false    โ”‚      false       โ”‚
โ”‚   0fa1   โ”‚                          'pop fs'                          โ”‚  52  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0fa390  โ”‚            'bt dword ptr [rax-0x6f6f6f70], edx'            โ”‚  51  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
                             ...
โ”‚ f30f0082 โ”‚              'sldt word ptr [rdx-0x6f6f6f70]'              โ”‚  46  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f0088 โ”‚              'str word ptr [rax-0x6f6f6f70]'               โ”‚  46  โ”‚ 87  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f0006 โ”‚                   'sldt word ptr [rsi]'                    โ”‚  50  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30f000a โ”‚                    'str word ptr [rdx]'                    โ”‚  50  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30f0180 โ”‚                'sgdt ptr [rax-0x6f6f6f70]'                 โ”‚  46  โ”‚ 89  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f018a โ”‚                'sidt ptr [rdx-0x6f6f6f70]'                 โ”‚  46  โ”‚ 88  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f01a1 โ”‚              'smsw word ptr [rcx-0x6f6f6f70]'              โ”‚  46  โ”‚ 85  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30f010f โ”‚                      'sidt ptr [rdi]'                      โ”‚  50  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30f0126 โ”‚                   'smsw word ptr [rsi]'                    โ”‚  50  โ”‚ 85  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30f0140 โ”‚                   'sgdt ptr [rax-0x70]'                    โ”‚  49  โ”‚ 89  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30faed0 โ”‚                       'wrfsbase eax'                       โ”‚  50  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30faed8 โ”‚                       'wrgsbase eax'                       โ”‚  50  โ”‚ 87  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30faec0 โ”‚                       'rdfsbase eax'                       โ”‚  50  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30faec8 โ”‚                       'rdgsbase eax'                       โ”‚  50  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30fb391 โ”‚           'btr dword ptr [rcx-0x6f6f6f70], edx'            โ”‚  50  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30fb39f โ”‚           'btr dword ptr [rdi-0x6f6f6f70], ebx'            โ”‚  50  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30fbb92 โ”‚           'btc dword ptr [rdx-0x6f6f6f70], edx'            โ”‚  50  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30fbb94 โ”‚        'btc dword ptr [rax+rdx*4-0x6f6f6f70], edx'         โ”‚  49  โ”‚ 86  โ”‚    false    โ”‚      false       โ”‚
โ”‚ f30fc789 โ”‚           'cmpxchg8b qword ptr [rcx-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ”‚ f30fc78f โ”‚           'cmpxchg8b qword ptr [rdi-0x6f6f6f70]'           โ”‚  46  โ”‚ 95  โ”‚    true     โ”‚      false       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

-- Yet these do not:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index)  โ”‚                    decoding                     โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    6c    โ”‚                     'insb '                     โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚    6d    โ”‚                     'insd '                     โ”‚  39  โ”‚ 99  โ”‚    true     โ”‚       true       โ”‚
โ”‚    6e    โ”‚                    'outsb '                     โ”‚  39  โ”‚ 98  โ”‚    true     โ”‚       true       โ”‚
โ”‚    6f    โ”‚                    'outsd '                     โ”‚  39  โ”‚ 98  โ”‚    true     โ”‚       true       โ”‚
โ”‚   8e90   โ”‚       'mov ss, word ptr [rax-0x6f6f6f70]'       โ”‚  42  โ”‚ 86  โ”‚    true     โ”‚       true       โ”‚
โ”‚    9d    โ”‚                    'popfq '                     โ”‚  55  โ”‚ 87  โ”‚    false    โ”‚       true       โ”‚
โ”‚   c290   โ”‚                  'ret 0x9090'                   โ”‚  43  โ”‚ 107 โ”‚    true     โ”‚       true       โ”‚
โ”‚    c3    โ”‚                     'ret '                      โ”‚  41  โ”‚ 106 โ”‚    true     โ”‚       true       โ”‚
โ”‚   c890   โ”‚              'enter 0x9090, 0x90'               โ”‚  50  โ”‚ 93  โ”‚    false    โ”‚       true       โ”‚
โ”‚   ca90   โ”‚                'ret far 0x9090'                 โ”‚  39  โ”‚ 145 โ”‚    true     โ”‚       true       โ”‚
โ”‚    cb    โ”‚                   'ret far '                    โ”‚  39  โ”‚ 145 โ”‚    true     โ”‚       true       โ”‚
โ”‚    cc    โ”‚                     'int3 '                     โ”‚  39  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚   cd90   โ”‚                   'int 0x90'                    โ”‚  39  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚    cf    โ”‚                    'iretd '                     โ”‚  39  โ”‚ 136 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e190   โ”‚           'loope 0xffffffffffffff92'            โ”‚  64  โ”‚ 83  โ”‚    false    โ”‚       true       โ”‚
โ”‚   e490   โ”‚                  'in al, 0x90'                  โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e590   โ”‚                 'in eax, 0x90'                  โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e690   โ”‚                 'out 0x90, al'                  โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚   e790   โ”‚                 'out 0x90, eax'                 โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ec    โ”‚                   'in al, dx'                   โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ed    โ”‚                  'in eax, dx'                   โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ee    โ”‚                  'out dx, al'                   โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    ef    โ”‚                  'out dx, eax'                  โ”‚  39  โ”‚ 109 โ”‚    true     โ”‚       true       โ”‚
โ”‚    f1    โ”‚                     'int1 '                     โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ”‚   f390   โ”‚                     'pause'                     โ”‚  52  โ”‚ 86  โ”‚    false    โ”‚       true       โ”‚
โ”‚    f4    โ”‚                      'hlt'                      โ”‚  39  โ”‚ 124 โ”‚    true     โ”‚       true       โ”‚
โ”‚    fd    โ”‚                     'std '                      โ”‚  53  โ”‚ 83  โ”‚    false    โ”‚       true       โ”‚
โ”‚  0f0090  โ”‚        'lldt word ptr [rax-0x6f6f6f70]'         โ”‚  47  โ”‚ 93  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0098  โ”‚         'ltr word ptr [rax-0x6f6f6f70]'         โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f00a0  โ”‚        'verr word ptr [rax-0x6f6f6f70]'         โ”‚  47  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f00a8  โ”‚        'verw word ptr [rax-0x6f6f6f70]'         โ”‚  47  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f00d0  โ”‚                    'lldt ax'                    โ”‚  51  โ”‚ 91  โ”‚    false    โ”‚       true       โ”‚
โ”‚  0f00d8  โ”‚                    'ltr ax'                     โ”‚  39  โ”‚ 108 โ”‚    true     โ”‚       true       โ”‚
                                                     ...
โ”‚  0f00e0  โ”‚                    'verr ax'                    โ”‚  51  โ”‚ 90  โ”‚    false    โ”‚       true       โ”‚
โ”‚  0f00e8  โ”‚                    'verw ax'                    โ”‚  51  โ”‚ 90  โ”‚    false    โ”‚       true       โ”‚
โ”‚  0f0190  โ”‚           'lgdt ptr [rax-0x6f6f6f70]'           โ”‚  47  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0198  โ”‚           'lidt ptr [rax-0x6f6f6f70]'           โ”‚  47  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01b0  โ”‚        'lmsw word ptr [rax-0x6f6f6f70]'         โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01b8  โ”‚       'invlpg byte ptr [rax-0x6f6f6f70]'        โ”‚  39  โ”‚ 114 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01d1  โ”‚                    'xsetbv '                    โ”‚  51  โ”‚ 117 โ”‚    false    โ”‚       true       โ”‚
โ”‚  0f01d2  โ”‚                       ''                        โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01d4  โ”‚                    'vmfunc '                    โ”‚  39  โ”‚ 83  โ”‚    true     โ”‚       true       โ”‚
โ”‚ 0f2193   โ”‚                 'mov rbx, dr2'                  โ”‚  39  โ”‚ 107 โ”‚    true     โ”‚       true       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



-, i7 6850k:





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index)  โ”‚ decoding โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  0f01d2  โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01c6  โ”‚    ''    โ”‚  39  โ”‚ 83  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f01cc  โ”‚    ''    โ”‚  39  โ”‚ 104 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f0c90  โ”‚    ''    โ”‚  39  โ”‚ 138 โ”‚    true     โ”‚       true       โ”‚ /* Recent CRBUS leaking instruction, 90 is the next NOP. */
โ”‚   0f0e   โ”‚ 'femms'  โ”‚  52  โ”‚ 101 โ”‚    false    โ”‚       true       โ”‚ /* Recent CRBUS leaking instruction */
โ”‚  0faed0  โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚  0fc790  โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ 660f3883 โ”‚    ''    โ”‚  39  โ”‚ 81  โ”‚    true     โ”‚       true       โ”‚
โ”‚ 660f3860 โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ 660f3a80 โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f7890 โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f7990 โ”‚    ''    โ”‚  39  โ”‚ 87  โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30fe7fc โ”‚    ''    โ”‚  73  โ”‚ 80  โ”‚    false    โ”‚       true       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



mov cr2



, reg



  .





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index)  โ”‚    decoding    โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  0f2090  โ”‚ 'mov rax, cr2' โ”‚  51  โ”‚ 83  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f2098  โ”‚ 'mov rax, cr3' โ”‚  51  โ”‚ 88  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f2080  โ”‚ 'mov rax, cr0' โ”‚  51  โ”‚ 85  โ”‚    false    โ”‚      false       โ”‚
โ”‚  0f2290  โ”‚ 'mov cr2, rax' โ”‚  51  โ”‚ 87  โ”‚    false    โ”‚       true       โ”‚ /* ! */
โ”‚  0f2298  โ”‚ 'mov cr3, rax' โ”‚  39  โ”‚ 161 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f2299  โ”‚ 'mov cr3, rcx' โ”‚  39  โ”‚ 151 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f229b  โ”‚ 'mov cr3, rbx' โ”‚  39  โ”‚ 155 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f2280  โ”‚ 'mov cr0, rax' โ”‚  39  โ”‚ 110 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f2281  โ”‚ 'mov cr0, rcx' โ”‚  39  โ”‚ 153 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f22a0  โ”‚ 'mov cr4, rax' โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f22a1  โ”‚ 'mov cr4, rcx' โ”‚  39  โ”‚ 120 โ”‚    true     โ”‚       true       โ”‚
โ”‚  0f22a4  โ”‚ 'mov cr4, rsp' โ”‚  39  โ”‚ 104 โ”‚    true     โ”‚       true       โ”‚
โ”‚ 660f22a4 โ”‚ 'mov cr4, rsp' โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f20f22a4 โ”‚ 'mov cr4, rsp' โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ”‚ f30f22a4 โ”‚ 'mov cr4, rsp' โ”‚  39  โ”‚ 103 โ”‚    true     โ”‚       true       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



CPL  int imm8



int1



  .





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index) โ”‚  decoding  โ”‚ mits โ”‚ ms  โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚   cc    โ”‚  'int3 '   โ”‚  39  โ”‚ 94  โ”‚    true     โ”‚       true       โ”‚
โ”‚  cd90   โ”‚ 'int 0x90' โ”‚  39  โ”‚ 91  โ”‚    true     โ”‚       true       โ”‚
โ”‚   f1    โ”‚  'int1 '   โ”‚  39  โ”‚ 112 โ”‚    true     โ”‚       true       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



mov ss



 โ€“ ,  cli



 โ€“ . lss



  , lgs



  .





โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ (index) โ”‚                    decoding                    โ”‚ mits โ”‚ ms โ”‚ serializing โ”‚ speculationFence โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  8890   โ”‚      'mov byte ptr [rax-0x6f6f6f70], dl'       โ”‚  49  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚  8990   โ”‚     'mov dword ptr [rax-0x6f6f6f70], edx'      โ”‚  49  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚ 668890  โ”‚      'mov byte ptr [rax-0x6f6f6f70], dl'       โ”‚  48  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚  8a90   โ”‚      'mov dl, byte ptr [rax-0x6f6f6f70]'       โ”‚  49  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚  8b90   โ”‚     'mov edx, dword ptr [rax-0x6f6f6f70]'      โ”‚  49  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚  8c90   โ”‚      'mov word ptr [rax-0x6f6f6f70], ss'       โ”‚  50  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚  8e90   โ”‚      'mov ss, word ptr [rax-0x6f6f6f70]'       โ”‚  42  โ”‚ 86 โ”‚    true     โ”‚       true       โ”‚ /* ! */
โ”‚   fa    โ”‚                     'cli '                     โ”‚  56  โ”‚ 80 โ”‚    false    โ”‚      false       โ”‚
โ”‚ 0fb290  โ”‚        'lss edx, ptr [rax-0x6f6f6f70]'         โ”‚  39  โ”‚ 89 โ”‚    true     โ”‚       true       โ”‚ /* ! */
โ”‚ 0fb590  โ”‚        'lgs edx, ptr [rax-0x6f6f6f70]'         โ”‚  47  โ”‚ 89 โ”‚    true     โ”‚      false       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
      
      



 






 Cloud4Y





โ†’  Nginx, - -





โ†’  :





โ†’  : vCloud API





โ†’  vApp VMware vCenter + ESXi





โ†’ 





 Telegram-, . .








All Articles