€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ+/translations/zh_CN/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/zh_TW/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/pt_BR/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/sp_SP/admin-guide/hw-vuln/rsb”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒE/var/lib/git/docbuild/linux/Documentation/admin-guide/hw-vuln/rsb.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒRSB-related mitigations”h]”hŒRSB-related mitigations”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒwarning”“”)�”}”(hŒ…Please keep this document up-to-date, otherwise you will be volunteered to update it and convert it to a very long comment in bugs.c!”h]”hŒ paragraph”“”)�”}”(hŒ…Please keep this document up-to-date, otherwise you will be volunteered to update it and convert it to a very long comment in bugs.c!”h]”hŒ…Please keep this document up-to-date, otherwise you will be volunteered to update it and convert it to a very long comment in bugs.c!”…”�”}”(hhåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khhßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´Nubhä)�”}”(hŒ¹Since 2018 there have been many Spectre CVEs related to the Return Stack Buffer (RSB) (sometimes referred to as the Return Address Stack (RAS) or Return Address Predictor (RAP) on AMD).”h]”hŒ¹Since 2018 there have been many Spectre CVEs related to the Return Stack Buffer (RSB) (sometimes referred to as the Return Address Stack (RAS) or Return Address Predictor (RAP) on AMD).”…”�”}”(hhùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K hhÊh²hubhä)�”}”(hŒ|Information about these CVEs and how to mitigate them is scattered amongst a myriad of microarchitecture-specific documents.”h]”hŒ|Information about these CVEs and how to mitigate them is scattered amongst a myriad of microarchitecture-specific documents.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhÊh²hubhä)�”}”(hXDThis document attempts to consolidate all the relevant information in once place and clarify the reasoning behind the current RSB-related mitigations. It's meant to be as concise as possible, focused only on the current kernel mitigations: what are the RSB-related attack vectors and how are they currently being mitigated?”h]”hXFThis document attempts to consolidate all the relevant information in once place and clarify the reasoning behind the current RSB-related mitigations. It’s meant to be as concise as possible, focused only on the current kernel mitigations: what are the RSB-related attack vectors and how are they currently being mitigated?”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhÊh²hubhä)�”}”(hŒ•It's *not* meant to describe how the RSB mechanism operates or how the exploits work. More details about those can be found in the references below.”h]”(hŒIt’s ”…”�”}”(hj#h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj#ubhŒ‹ meant to describe how the RSB mechanism operates or how the exploits work. More details about those can be found in the references below.”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhÊh²hubhä)�”}”(hŒØRather, this is basically a glorified comment, but too long to actually be one. So when the next CVE comes along, a kernel developer can quickly refer to this as a refresher to see what we're actually doing and why.”h]”hŒÚRather, this is basically a glorified comment, but too long to actually be one. So when the next CVE comes along, a kernel developer can quickly refer to this as a refresher to see what we’re actually doing and why.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhÊh²hubhä)�”}”(hŒàAt a high level, there are two classes of RSB attacks: RSB poisoning (Intel and AMD) and RSB underflow (Intel only). They must each be considered individually for each attack vector (and microarchitecture where applicable).”h]”hŒàAt a high level, there are two classes of RSB attacks: RSB poisoning (Intel and AMD) and RSB underflow (Intel only). They must each be considered individually for each attack vector (and microarchitecture where applicable).”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K"hhÊh²hubhŒ transition”“”)�”}”(hŒ----”h]”h}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´K'hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRSB poisoning (Intel and AMD)”h]”hŒRSB poisoning (Intel and AMD)”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjmh²hh³hÇh´K*ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ SpectreRSB”h]”hŒ SpectreRSB”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj~h²hh³hÇh´K-ubhä)�”}”(hXRSB poisoning is a technique used by SpectreRSB [#spectre-rsb]_ where an attacker poisons an RSB entry to cause a victim's return instruction to speculate to an attacker-controlled address. This can happen when there are unbalanced CALLs/RETs after a context switch or VMEXIT.”h]”(hŒ0RSB poisoning is a technique used by SpectreRSB ”…”�”}”(hj�h²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[#spectre-rsb]_”h]”hŒ1”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œauto”KŒrefid”Œ spectre-rsb”Œdocname”Œadmin-guide/hw-vuln/rsb”uh1j—hj�Œresolved”KubhŒØ where an attacker poisons an RSB entry to cause a victim’s return instruction to speculate to an attacker-controlled address. This can happen when there are unbalanced CALLs/RETs after a context switch or VMEXIT.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K/hj~h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hX All attack vectors can potentially be mitigated by flushing out any poisoned RSB entries using an RSB filling sequence [#intel-rsb-filling]_ [#amd-rsb-filling]_ when transitioning between untrusted and trusted domains. But this has a performance impact and should be avoided whenever possible. .. DANGER:: **FIXME**: Currently we're flushing 32 entries. However, some CPU models have more than 32 entries. The loop count needs to be increased for those. More detailed information is needed about RSB sizes. ”h]”(hä)�”}”(hX&All attack vectors can potentially be mitigated by flushing out any poisoned RSB entries using an RSB filling sequence [#intel-rsb-filling]_ [#amd-rsb-filling]_ when transitioning between untrusted and trusted domains. But this has a performance impact and should be avoided whenever possible.”h]”(hŒwAll attack vectors can potentially be mitigated by flushing out any poisoned RSB entries using an RSB filling sequence ”…”�”}”(hjÃh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-rsb-filling]_”h]”hŒ2”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-rsb-filling”j«j¬uh1j—hjÃj­KubhŒ ”…”�”}”(hjÃh²hh³Nh´Nubj˜)�”}”(hŒ[#amd-rsb-filling]_”h]”hŒ3”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-rsb-filling”j«j¬uh1j—hjÃj­KubhŒ† when transitioning between untrusted and trusted domains. But this has a performance impact and should be avoided whenever possible.”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K4hj¿ubhŒdanger”“”)�”}”(hŒË**FIXME**: Currently we're flushing 32 entries. However, some CPU models have more than 32 entries. The loop count needs to be increased for those. More detailed information is needed about RSB sizes.”h]”hä)�”}”(hŒË**FIXME**: Currently we're flushing 32 entries. However, some CPU models have more than 32 entries. The loop count needs to be increased for those. More detailed information is needed about RSB sizes.”h]”(hŒstrong”“”)�”}”(hŒ **FIXME**”h]”hŒFIXME”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿubhŒÄ: Currently we’re flushing 32 entries. However, some CPU models have more than 32 entries. The loop count needs to be increased for those. More detailed information is needed about RSB sizes.”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K;hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jùhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºh²hh³Nh´Nubj¾)�”}”(hXdOn context switch, the user->user mitigation requires ensuring the RSB gets filled or cleared whenever IBPB gets written [#cond-ibpb]_ during a context switch: * AMD: On Zen 4+, IBPB (or SBPB [#amd-sbpb]_ if used) clears the RSB. This is indicated by IBPB_RET in CPUID [#amd-ibpb-rsb]_. On Zen < 4, the RSB filling sequence [#amd-rsb-filling]_ must be always be done in addition to IBPB [#amd-ibpb-no-rsb]_. This is indicated by X86_BUG_IBPB_NO_RET. * Intel: IBPB always clears the RSB: "Software that executed before the IBPB command cannot control the predicted targets of indirect branches executed after the command on the same logical processor. The term indirect branch in this context includes near return instructions, so these predicted targets may come from the RSB." [#intel-ibpb-rsb]_ ”h]”(hä)�”}”(hŒŸOn context switch, the user->user mitigation requires ensuring the RSB gets filled or cleared whenever IBPB gets written [#cond-ibpb]_ during a context switch:”h]”(hŒyOn context switch, the user->user mitigation requires ensuring the RSB gets filled or cleared whenever IBPB gets written ”…”�”}”(hj-h²hh³Nh´Nubj˜)�”}”(hŒ [#cond-ibpb]_”h]”hŒ4”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”j¨Kj©Œ cond-ibpb”j«j¬uh1j—hj-j­KubhŒ during a context switch:”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K@hj)ubj¹)�”}”(hhh]”(j¾)�”}”(hX6AMD: On Zen 4+, IBPB (or SBPB [#amd-sbpb]_ if used) clears the RSB. This is indicated by IBPB_RET in CPUID [#amd-ibpb-rsb]_. On Zen < 4, the RSB filling sequence [#amd-rsb-filling]_ must be always be done in addition to IBPB [#amd-ibpb-no-rsb]_. This is indicated by X86_BUG_IBPB_NO_RET. ”h]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hX"AMD: On Zen 4+, IBPB (or SBPB [#amd-sbpb]_ if used) clears the RSB. This is indicated by IBPB_RET in CPUID [#amd-ibpb-rsb]_. On Zen < 4, the RSB filling sequence [#amd-rsb-filling]_ must be always be done in addition to IBPB [#amd-ibpb-no-rsb]_. This is indicated by X86_BUG_IBPB_NO_RET. ”h]”(hŒterm”“”)�”}”(hŒAMD:”h]”hŒAMD:”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´KJhj]ubhŒ definition”“”)�”}”(hhh]”(hä)�”}”(hŒwOn Zen 4+, IBPB (or SBPB [#amd-sbpb]_ if used) clears the RSB. This is indicated by IBPB_RET in CPUID [#amd-ibpb-rsb]_.”h]”(hŒOn Zen 4+, IBPB (or SBPB ”…”�”}”(hjvh²hh³Nh´Nubj˜)�”}”(hŒ [#amd-sbpb]_”h]”hŒ5”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-sbpb”j«j¬uh1j—hjvj­KubhŒA if used) clears the RSB. This is indicated by IBPB_RET in CPUID ”…”�”}”(hjvh²hh³Nh´Nubj˜)�”}”(hŒ[#amd-ibpb-rsb]_”h]”hŒ6”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”j¨Kj©Œ amd-ibpb-rsb”j«j¬uh1j—hjvj­KubhŒ.”…”�”}”(hjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KEhjsubhä)�”}”(hŒ£On Zen < 4, the RSB filling sequence [#amd-rsb-filling]_ must be always be done in addition to IBPB [#amd-ibpb-no-rsb]_. This is indicated by X86_BUG_IBPB_NO_RET.”h]”(hŒ%On Zen < 4, the RSB filling sequence ”…”�”}”(hj¬h²hh³Nh´Nubj˜)�”}”(hŒ[#amd-rsb-filling]_”h]”hŒ3”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”j¨Kj©jîj«j¬uh1j—hj¬j­KubhŒ, must be always be done in addition to IBPB ”…”�”}”(hj¬h²hh³Nh´Nubj˜)�”}”(hŒ[#amd-ibpb-no-rsb]_”h]”hŒ7”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-ibpb-no-rsb”j«j¬uh1j—hj¬j­KubhŒ,. This is indicated by X86_BUG_IBPB_NO_RET.”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KHhjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqhj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´KJhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjOubj¾)�”}”(hXrIntel: IBPB always clears the RSB: "Software that executed before the IBPB command cannot control the predicted targets of indirect branches executed after the command on the same logical processor. The term indirect branch in this context includes near return instructions, so these predicted targets may come from the RSB." [#intel-ibpb-rsb]_ ”h]”jW)�”}”(hhh]”j\)�”}”(hXZIntel: IBPB always clears the RSB: "Software that executed before the IBPB command cannot control the predicted targets of indirect branches executed after the command on the same logical processor. The term indirect branch in this context includes near return instructions, so these predicted targets may come from the RSB." [#intel-ibpb-rsb]_ ”h]”(jb)�”}”(hŒIntel:”h]”hŒIntel:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´KShjubjr)�”}”(hhh]”(hä)�”}”(hŒIBPB always clears the RSB:”h]”hŒIBPB always clears the RSB:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KMhjubhä)�”}”(hX5"Software that executed before the IBPB command cannot control the predicted targets of indirect branches executed after the command on the same logical processor. The term indirect branch in this context includes near return instructions, so these predicted targets may come from the RSB." [#intel-ibpb-rsb]_”h]”(hX'“Software that executed before the IBPB command cannot control the predicted targets of indirect branches executed after the command on the same logical processor. The term indirect branch in this context includes near return instructions, so these predicted targets may come from the RSB.â€� ”…”�”}”(hj#h²hh³Nh´Nubj˜)�”}”(hŒ[#intel-ibpb-rsb]_”h]”hŒ8”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-ibpb-rsb”j«j¬uh1j—hj#j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KOhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jqhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´KShjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjOubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j¸h³hÇh´KDhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºh²hh³Nh´Nubj¾)�”}”(hXÍOn context switch, user->kernel attacks are prevented by SMEP. User space can only insert user space addresses into the RSB. Even non-canonical addresses can't be inserted due to the page gap at the end of the user canonical address space reserved by TASK_SIZE_MAX. A SMEP #PF at instruction fetch prevents the kernel from speculatively executing user space. * AMD: "Finally, branches that are predicted as 'ret' instructions get their predicted targets from the Return Address Predictor (RAP). AMD recommends software use a RAP stuffing sequence (mitigation V2-3 in [2]) and/or Supervisor Mode Execution Protection (SMEP) to ensure that the addresses in the RAP are safe for speculation. Collectively, we refer to these mitigations as "RAP Protection"." [#amd-smep-rsb]_ * Intel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits." [#intel-smep-rsb]_ ”h]”(hä)�”}”(hXhOn context switch, user->kernel attacks are prevented by SMEP. User space can only insert user space addresses into the RSB. Even non-canonical addresses can't be inserted due to the page gap at the end of the user canonical address space reserved by TASK_SIZE_MAX. A SMEP #PF at instruction fetch prevents the kernel from speculatively executing user space.”h]”hXjOn context switch, user->kernel attacks are prevented by SMEP. User space can only insert user space addresses into the RSB. Even non-canonical addresses can’t be inserted due to the page gap at the end of the user canonical address space reserved by TASK_SIZE_MAX. A SMEP #PF at instruction fetch prevents the kernel from speculatively executing user space.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KUhjgubj¹)�”}”(hhh]”(j¾)�”}”(hX·AMD: "Finally, branches that are predicted as 'ret' instructions get their predicted targets from the Return Address Predictor (RAP). AMD recommends software use a RAP stuffing sequence (mitigation V2-3 in [2]) and/or Supervisor Mode Execution Protection (SMEP) to ensure that the addresses in the RAP are safe for speculation. Collectively, we refer to these mitigations as "RAP Protection"." [#amd-smep-rsb]_ ”h]”jW)�”}”(hhh]”j\)�”}”(hX›AMD: "Finally, branches that are predicted as 'ret' instructions get their predicted targets from the Return Address Predictor (RAP). AMD recommends software use a RAP stuffing sequence (mitigation V2-3 in [2]) and/or Supervisor Mode Execution Protection (SMEP) to ensure that the addresses in the RAP are safe for speculation. Collectively, we refer to these mitigations as "RAP Protection"." [#amd-smep-rsb]_ ”h]”(jb)�”}”(hŒAMD:”h]”hŒAMD:”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´Kchjƒubjr)�”}”(hhh]”hä)�”}”(hX•"Finally, branches that are predicted as 'ret' instructions get their predicted targets from the Return Address Predictor (RAP). AMD recommends software use a RAP stuffing sequence (mitigation V2-3 in [2]) and/or Supervisor Mode Execution Protection (SMEP) to ensure that the addresses in the RAP are safe for speculation. Collectively, we refer to these mitigations as "RAP Protection"." [#amd-smep-rsb]_”h]”(hX‘“Finally, branches that are predicted as ‘ret’ instructions get their predicted targets from the Return Address Predictor (RAP). AMD recommends software use a RAP stuffing sequence (mitigation V2-3 in [2]) and/or Supervisor Mode Execution Protection (SMEP) to ensure that the addresses in the RAP are safe for speculation. Collectively, we refer to these mitigations as “RAP Protectionâ€�.â€� ”…”�”}”(hj˜h²hh³Nh´Nubj˜)�”}”(hŒ[#amd-smep-rsb]_”h]”hŒ9”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”j¨Kj©Œ amd-smep-rsb”j«j¬uh1j—hj˜j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K]hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´Kchj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjyubj¾)�”}”(hX�Intel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits." [#intel-smep-rsb]_ ”h]”jW)�”}”(hhh]”j\)�”}”(hXuIntel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits." [#intel-smep-rsb]_ ”h]”(jb)�”}”(hŒIntel:”h]”hŒIntel:”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´KkhjÕubjr)�”}”(hhh]”hä)�”}”(hXm"On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits." [#intel-smep-rsb]_”h]”(hX_“On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits.â€� ”…”�”}”(hjêh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-smep-rsb]_”h]”hŒ10”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-smep-rsb”j«j¬uh1j—hjêj­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kfhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´KkhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjyubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´K\hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºh²hh³Nh´Nubj¾)�”}”(hXûOn VMEXIT, guest->host attacks are mitigated by eIBRS (and PBRSB mitigation if needed): * AMD: "When Automatic IBRS is enabled, the internal return address stack used for return address predictions is cleared on VMEXIT." [#amd-eibrs-vmexit]_ * Intel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits. Processors with enhanced IBRS still support the usage model where IBRS is set only in the OS/VMM for OSes that enable SMEP. To do this, such processors will ensure that guest behavior cannot control the RSB after a VM exit once IBRS is set, even if IBRS was not set at the time of the VM exit." [#intel-eibrs-vmexit]_ Note that some Intel CPUs are susceptible to Post-barrier Return Stack Buffer Predictions (PBRSB) [#intel-pbrsb]_, where the last CALL from the guest can be used to predict the first unbalanced RET. In this case the PBRSB mitigation is needed in addition to eIBRS. ”h]”(hä)�”}”(hŒWOn VMEXIT, guest->host attacks are mitigated by eIBRS (and PBRSB mitigation if needed):”h]”hŒWOn VMEXIT, guest->host attacks are mitigated by eIBRS (and PBRSB mitigation if needed):”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kmhj,ubj¹)�”}”(hhh]”(j¾)�”}”(hŒ¤AMD: "When Automatic IBRS is enabled, the internal return address stack used for return address predictions is cleared on VMEXIT." [#amd-eibrs-vmexit]_ ”h]”jW)�”}”(hhh]”j\)�”}”(hŒ˜AMD: "When Automatic IBRS is enabled, the internal return address stack used for return address predictions is cleared on VMEXIT." [#amd-eibrs-vmexit]_ ”h]”(jb)�”}”(hŒAMD:”h]”hŒAMD:”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´KshjHubjr)�”}”(hhh]”hä)�”}”(hŒ’"When Automatic IBRS is enabled, the internal return address stack used for return address predictions is cleared on VMEXIT." [#amd-eibrs-vmexit]_”h]”(hŒ‚“When Automatic IBRS is enabled, the internal return address stack used for return address predictions is cleared on VMEXIT.â€� ”…”�”}”(hj]h²hh³Nh´Nubj˜)�”}”(hŒ[#amd-eibrs-vmexit]_”h]”hŒ11”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”Œid12”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-eibrs-vmexit”j«j¬uh1j—hj]j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KqhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´KshjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj>ubj¾)�”}”(hXÕIntel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits. Processors with enhanced IBRS still support the usage model where IBRS is set only in the OS/VMM for OSes that enable SMEP. To do this, such processors will ensure that guest behavior cannot control the RSB after a VM exit once IBRS is set, even if IBRS was not set at the time of the VM exit." [#intel-eibrs-vmexit]_ Note that some Intel CPUs are susceptible to Post-barrier Return Stack Buffer Predictions (PBRSB) [#intel-pbrsb]_, where the last CALL from the guest can be used to predict the first unbalanced RET. In this case the PBRSB mitigation is needed in addition to eIBRS. ”h]”(jW)�”}”(hhh]”j\)�”}”(hXŸIntel: "On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits. Processors with enhanced IBRS still support the usage model where IBRS is set only in the OS/VMM for OSes that enable SMEP. To do this, such processors will ensure that guest behavior cannot control the RSB after a VM exit once IBRS is set, even if IBRS was not set at the time of the VM exit." [#intel-eibrs-vmexit]_ ”h]”(jb)�”}”(hŒIntel:”h]”hŒIntel:”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´K€hjšubjr)�”}”(hhh]”hä)�”}”(hX—"On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits. Processors with enhanced IBRS still support the usage model where IBRS is set only in the OS/VMM for OSes that enable SMEP. To do this, such processors will ensure that guest behavior cannot control the RSB after a VM exit once IBRS is set, even if IBRS was not set at the time of the VM exit." [#intel-eibrs-vmexit]_”h]”(hX…“On processors with enhanced IBRS, an RSB overwrite sequence may not suffice to prevent the predicted target of a near return from using an RSB entry created in a less privileged predictor mode. Software can prevent this by enabling SMEP (for transitions from user mode to supervisor mode) and by having IA32_SPEC_CTRL.IBRS set during VM exits. Processors with enhanced IBRS still support the usage model where IBRS is set only in the OS/VMM for OSes that enable SMEP. To do this, such processors will ensure that guest behavior cannot control the RSB after a VM exit once IBRS is set, even if IBRS was not set at the time of the VM exit.â€� ”…”�”}”(hj¯h²hh³Nh´Nubj˜)�”}”(hŒ[#intel-eibrs-vmexit]_”h]”hŒ12”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”Œid13”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-eibrs-vmexit”j«j¬uh1j—hj¯j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kvhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jqhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j[h³hÇh´K€hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jVhj“ubhä)�”}”(hXNote that some Intel CPUs are susceptible to Post-barrier Return Stack Buffer Predictions (PBRSB) [#intel-pbrsb]_, where the last CALL from the guest can be used to predict the first unbalanced RET. In this case the PBRSB mitigation is needed in addition to eIBRS.”h]”(hŒbNote that some Intel CPUs are susceptible to Post-barrier Return Stack Buffer Predictions (PBRSB) ”…”�”}”(hjßh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-pbrsb]_”h]”hŒ13”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”Œid14”ah ]”h"]”h$]”h&]”j¨Kj©Œ intel-pbrsb”j«j¬uh1j—hjßj­KubhŒ—, where the last CALL from the guest can be used to predict the first unbalanced RET. In this case the PBRSB mitigation is needed in addition to eIBRS.”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K‚hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hj>ubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´Kphj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´K4hj~h²hubeh}”(h]”Œ spectrersb”ah ]”h"]”Œ spectrersb”ah$]”h&]”uh1hÈhjmh²hh³hÇh´K-ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ+AMD RETBleed / SRSO / Branch Type Confusion”h]”hŒ+AMD RETBleed / SRSO / Branch Type Confusion”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj!h²hh³hÇh´Kˆubhä)�”}”(hX&On AMD, poisoned RSB entries can also be created by the AMD RETBleed variant [#retbleed-paper]_ [#amd-btc]_ or by Speculative Return Stack Overflow [#amd-srso]_ (Inception [#inception-paper]_). The kernel protects itself by replacing every RET in the kernel with a branch to a single safe RET.”h]”(hŒMOn AMD, poisoned RSB entries can also be created by the AMD RETBleed variant ”…”�”}”(hj2h²hh³Nh´Nubj˜)�”}”(hŒ[#retbleed-paper]_”h]”hŒ14”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”Œid15”ah ]”h"]”h$]”h&]”j¨Kj©Œretbleed-paper”j«j¬uh1j—hj2j­KubhŒ ”…”�”}”(hj2h²hh³Nh´Nubj˜)�”}”(hŒ [#amd-btc]_”h]”hŒ15”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”Œid16”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-btc”j«j¬uh1j—hj2j­KubhŒ) or by Speculative Return Stack Overflow ”…”�”}”(hj2h²hh³Nh´Nubj˜)�”}”(hŒ [#amd-srso]_”h]”hŒ16”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”Œid17”ah ]”h"]”h$]”h&]”j¨Kj©Œamd-srso”j«j¬uh1j—hj2j­KubhŒ (Inception ”…”�”}”(hj2h²hh³Nh´Nubj˜)�”}”(hŒ[#inception-paper]_”h]”hŒ17”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”Œid18”ah ]”h"]”h$]”h&]”j¨Kj©Œinception-paper”j«j¬uh1j—hj2j­KubhŒg). The kernel protects itself by replacing every RET in the kernel with a branch to a single safe RET.”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KŠhj!h²hubeh}”(h]”Œ'amd-retbleed-srso-branch-type-confusion”ah ]”h"]”Œ+amd retbleed / srso / branch type confusion”ah$]”h&]”uh1hÈhjmh²hh³hÇh´Kˆubeh}”(h]”Œrsb-poisoning-intel-and-amd”ah ]”h"]”Œrsb poisoning (intel and amd)”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K*ubjb)�”}”(hŒ----”h]”h}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´K�hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒRSB underflow (Intel only)”h]”hŒRSB underflow (Intel only)”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjªh²hh³hÇh´K“ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ'RSB Alternate (RSBA) ("Intel Retbleed")”h]”hŒ+RSB Alternate (RSBA) (“Intel Retbleedâ€�)”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj»h²hh³hÇh´K–ubhä)�”}”(hX½Some Intel Skylake-generation CPUs are susceptible to the Intel variant of RETBleed [#retbleed-paper]_ (Return Stack Buffer Underflow [#intel-rsbu]_). If a RET is executed when the RSB buffer is empty due to mismatched CALLs/RETs or returning from a deep call stack, the branch predictor can fall back to using the Branch Target Buffer (BTB). If a user forces a BTB collision then the RET can speculatively branch to a user-controlled address.”h]”(hŒTSome Intel Skylake-generation CPUs are susceptible to the Intel variant of RETBleed ”…”�”}”(hjÌh²hh³Nh´Nubj˜)�”}”(hŒ[#retbleed-paper]_”h]”hŒ14”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”Œid19”ah ]”h"]”h$]”h&]”j¨Kj©jIj«j¬uh1j—hjÌj­KubhŒ (Return Stack Buffer Underflow ”…”�”}”(hjÌh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-rsbu]_”h]”hŒ18”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”Œid20”ah ]”h"]”h$]”h&]”j¨Kj©Œ intel-rsbu”j«j¬uh1j—hjÌj­KubhX)). If a RET is executed when the RSB buffer is empty due to mismatched CALLs/RETs or returning from a deep call stack, the branch predictor can fall back to using the Branch Target Buffer (BTB). If a user forces a BTB collision then the RET can speculatively branch to a user-controlled address.”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K˜hj»h²hubj¹)�”}”(hhh]”(j¾)�”}”(hŒ¨Note that RSB filling doesn't fully mitigate this issue. If there are enough unbalanced RETs, the RSB may still underflow and fall back to using a poisoned BTB entry. ”h]”hä)�”}”(hŒ§Note that RSB filling doesn't fully mitigate this issue. If there are enough unbalanced RETs, the RSB may still underflow and fall back to using a poisoned BTB entry.”h]”hŒ©Note that RSB filling doesn’t fully mitigate this issue. If there are enough unbalanced RETs, the RSB may still underflow and fall back to using a poisoned BTB entry.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjh²hh³hÇh´Nubj¾)�”}”(hXÔOn context switch, user->user underflow attacks are mitigated by the conditional IBPB [#cond-ibpb]_ on context switch which effectively clears the BTB: * "The indirect branch predictor barrier (IBPB) is an indirect branch control mechanism that establishes a barrier, preventing software that executed before the barrier from controlling the predicted targets of indirect branches executed after the barrier on the same logical processor." [#intel-ibpb-btb]_ ”h]”(hä)�”}”(hŒ—On context switch, user->user underflow attacks are mitigated by the conditional IBPB [#cond-ibpb]_ on context switch which effectively clears the BTB:”h]”(hŒVOn context switch, user->user underflow attacks are mitigated by the conditional IBPB ”…”�”}”(hj h²hh³Nh´Nubj˜)�”}”(hŒ [#cond-ibpb]_”h]”hŒ4”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”Œid21”ah ]”h"]”h$]”h&]”j¨Kj©jDj«j¬uh1j—hj j­KubhŒ4 on context switch which effectively clears the BTB:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K¤hjubj¹)�”}”(hhh]”j¾)�”}”(hX1"The indirect branch predictor barrier (IBPB) is an indirect branch control mechanism that establishes a barrier, preventing software that executed before the barrier from controlling the predicted targets of indirect branches executed after the barrier on the same logical processor." [#intel-ibpb-btb]_ ”h]”hä)�”}”(hX0"The indirect branch predictor barrier (IBPB) is an indirect branch control mechanism that establishes a barrier, preventing software that executed before the barrier from controlling the predicted targets of indirect branches executed after the barrier on the same logical processor." [#intel-ibpb-btb]_”h]”(hX"“The indirect branch predictor barrier (IBPB) is an indirect branch control mechanism that establishes a barrier, preventing software that executed before the barrier from controlling the predicted targets of indirect branches executed after the barrier on the same logical processor.â€� ”…”�”}”(hjHh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-ibpb-btb]_”h]”hŒ19”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”Œid22”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-ibpb-btb”j«j¬uh1j—hjHj­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K¨hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjAubah}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´K¨hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjh²hh³Nh´Nubj¾)�”}”(hXÇOn context switch and VMEXIT, user->kernel and guest->host RSB underflows are mitigated by IBRS or eIBRS: * "Enabling IBRS (including enhanced IBRS) will mitigate the "RSBU" attack demonstrated by the researchers. As previously documented, Intel recommends the use of enhanced IBRS, where supported. This includes any processor that enumerates RRSBA but not RRSBA_DIS_S." [#intel-rsbu]_ However, note that eIBRS and IBRS do not mitigate intra-mode attacks. Like RRSBA below, this is mitigated by clearing the BHB on kernel entry. As an alternative to classic IBRS, call depth tracking (combined with retpolines) can be used to track kernel returns and fill the RSB when it gets close to being empty. ”h]”(hä)�”}”(hŒiOn context switch and VMEXIT, user->kernel and guest->host RSB underflows are mitigated by IBRS or eIBRS:”h]”hŒiOn context switch and VMEXIT, user->kernel and guest->host RSB underflows are mitigated by IBRS or eIBRS:”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K®hjxubj¹)�”}”(hhh]”j¾)�”}”(hX"Enabling IBRS (including enhanced IBRS) will mitigate the "RSBU" attack demonstrated by the researchers. As previously documented, Intel recommends the use of enhanced IBRS, where supported. This includes any processor that enumerates RRSBA but not RRSBA_DIS_S." [#intel-rsbu]_ ”h]”hä)�”}”(hX"Enabling IBRS (including enhanced IBRS) will mitigate the "RSBU" attack demonstrated by the researchers. As previously documented, Intel recommends the use of enhanced IBRS, where supported. This includes any processor that enumerates RRSBA but not RRSBA_DIS_S." [#intel-rsbu]_”h]”(hX“Enabling IBRS (including enhanced IBRS) will mitigate the “RSBUâ€� attack demonstrated by the researchers. As previously documented, Intel recommends the use of enhanced IBRS, where supported. This includes any processor that enumerates RRSBA but not RRSBA_DIS_S.â€� ”…”�”}”(hj‘h²hh³Nh´Nubj˜)�”}”(hŒ[#intel-rsbu]_”h]”hŒ18”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”Œid23”ah ]”h"]”h$]”h&]”j¨Kj©jöj«j¬uh1j—hj‘j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K±hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hjŠubah}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´K±hjxubhä)�”}”(hŒŽHowever, note that eIBRS and IBRS do not mitigate intra-mode attacks. Like RRSBA below, this is mitigated by clearing the BHB on kernel entry.”h]”hŒŽHowever, note that eIBRS and IBRS do not mitigate intra-mode attacks. Like RRSBA below, this is mitigated by clearing the BHB on kernel entry.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K·hjxubhä)�”}”(hŒ©As an alternative to classic IBRS, call depth tracking (combined with retpolines) can be used to track kernel returns and fill the RSB when it gets close to being empty.”h]”hŒ©As an alternative to classic IBRS, call depth tracking (combined with retpolines) can be used to track kernel returns and fill the RSB when it gets close to being empty.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K»hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j½hjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´K hj»h²hubeh}”(h]”Œ!rsb-alternate-rsba-intel-retbleed”ah ]”h"]”Œ'rsb alternate (rsba) ("intel retbleed")”ah$]”h&]”uh1hÈhjªh²hh³hÇh´K–ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Restricted RSB Alternate (RRSBA)”h]”hŒ Restricted RSB Alternate (RRSBA)”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjêh²hh³hÇh´KÀubhä)�”}”(hXSome newer Intel CPUs have Restricted RSB Alternate (RRSBA) behavior, which, similar to RSBA described above, also falls back to using the BTB on RSB underflow. The only difference is that the predicted targets are restricted to the current domain when eIBRS is enabled:”h]”hXSome newer Intel CPUs have Restricted RSB Alternate (RRSBA) behavior, which, similar to RSBA described above, also falls back to using the BTB on RSB underflow. The only difference is that the predicted targets are restricted to the current domain when eIBRS is enabled:”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÂhjêh²hubj¹)�”}”(hhh]”j¾)�”}”(hXX"Restricted RSB Alternate (RRSBA) behavior allows alternate branch predictors to be used by near RET instructions when the RSB is empty. When eIBRS is enabled, the predicted targets of these alternate predictors are restricted to those belonging to the indirect branch predictor entries of the current prediction domain. [#intel-eibrs-rrsba]_ ”h]”hä)�”}”(hXW"Restricted RSB Alternate (RRSBA) behavior allows alternate branch predictors to be used by near RET instructions when the RSB is empty. When eIBRS is enabled, the predicted targets of these alternate predictors are restricted to those belonging to the indirect branch predictor entries of the current prediction domain. [#intel-eibrs-rrsba]_”h]”(hXD“Restricted RSB Alternate (RRSBA) behavior allows alternate branch predictors to be used by near RET instructions when the RSB is empty. When eIBRS is enabled, the predicted targets of these alternate predictors are restricted to those belonging to the indirect branch predictor entries of the current prediction domain. ”…”�”}”(hjh²hh³Nh´Nubj˜)�”}”(hŒ[#intel-eibrs-rrsba]_”h]”hŒ20”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid24”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-eibrs-rrsba”j«j¬uh1j—hjj­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÇhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´KÇhjêh²hubhä)�”}”(hŒÑWhen a CPU with RRSBA is vulnerable to Branch History Injection [#bhi-paper]_ [#intel-bhi]_, an RSB underflow could be used for an intra-mode BTI attack. This is mitigated by clearing the BHB on kernel entry.”h]”(hŒ@When a CPU with RRSBA is vulnerable to Branch History Injection ”…”�”}”(hj:h²hh³Nh´Nubj˜)�”}”(hŒ [#bhi-paper]_”h]”hŒ21”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”Œid25”ah ]”h"]”h$]”h&]”j¨Kj©Œ bhi-paper”j«j¬uh1j—hj:j­KubhŒ ”…”�”}”(hj:h²hh³Nh´Nubj˜)�”}”(hŒ [#intel-bhi]_”h]”hŒ22”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”Œid26”ah ]”h"]”h$]”h&]”j¨Kj©Œ intel-bhi”j«j¬uh1j—hj:j­KubhŒv, an RSB underflow could be used for an intra-mode BTI attack. This is mitigated by clearing the BHB on kernel entry.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÎhjêh²hubhä)�”}”(hŒRHowever if the kernel uses retpolines instead of eIBRS, it needs to disable RRSBA:”h]”hŒRHowever if the kernel uses retpolines instead of eIBRS, it needs to disable RRSBA:”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÓhjêh²hubj¹)�”}”(hhh]”j¾)�”}”(hŒÕ"Where software is using retpoline as a mitigation for BHI or intra-mode BTI, and the processor both enumerates RRSBA and enumerates RRSBA_DIS controls, it should disable this behavior." [#intel-retpoline-rrsba]_ ”h]”hä)�”}”(hŒÔ"Where software is using retpoline as a mitigation for BHI or intra-mode BTI, and the processor both enumerates RRSBA and enumerates RRSBA_DIS controls, it should disable this behavior." [#intel-retpoline-rrsba]_”h]”(hŒ¿â€œWhere software is using retpoline as a mitigation for BHI or intra-mode BTI, and the processor both enumerates RRSBA and enumerates RRSBA_DIS controls, it should disable this behavior.â€� ”…”�”}”(hj…h²hh³Nh´Nubj˜)�”}”(hŒ[#intel-retpoline-rrsba]_”h]”hŒ23”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid27”ah ]”h"]”h$]”h&]”j¨Kj©Œintel-retpoline-rrsba”j«j¬uh1j—hj…j­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KÖhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j½hj~h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j_j`uh1j¸h³hÇh´KÖhjêh²hubeh}”(h]”Œrestricted-rsb-alternate-rrsba”ah ]”h"]”Œ restricted rsb alternate (rrsba)”ah$]”h&]”uh1hÈhjªh²hh³hÇh´KÀubeh}”(h]”Œrsb-underflow-intel-only”ah ]”h"]”Œrsb underflow (intel only)”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K“ubjb)�”}”(hŒ----”h]”h}”(h]”h ]”h"]”h$]”h&]”uh1jah³hÇh´KÛhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ References”h]”hŒ References”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÉh²hh³hÇh´KÞubhŒfootnote”“”)�”}”(hŒm`Spectre Returns! Speculation Attacks using the Return Stack Buffer `_ ”h]”(hŒlabel”“”)�”}”(hhh]”hŒ1”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjÜh²hh³Nh´Nubhä)�”}”(hŒl`Spectre Returns! Speculation Attacks using the Return Stack Buffer `_”h]”(hŒ reference”“”)�”}”(hjñh]”hŒBSpectre Returns! Speculation Attacks using the Return Stack Buffer”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒBSpectre Returns! Speculation Attacks using the Return Stack Buffer”Œrefuri”Œ$https://arxiv.org/pdf/1807.07940.pdf”uh1jóhjïubhŒtarget”“”)�”}”(hŒ' ”h]”h}”(h]”ŒAspectre-returns-speculation-attacks-using-the-return-stack-buffer”ah ]”h"]”ŒBspectre returns! speculation attacks using the return stack buffer”ah$]”h&]”Œrefuri”juh1jŒ referenced”Khjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KàhjÜubeh}”(h]”jªah ]”h"]”Œ spectre-rsb”ah$]”h&]”j£aj¨Kj«j¬uh1jÚh³hÇh´KàhjÉh²hubjÛ)�”}”(hX"Empty RSB Mitigation on Skylake-generation" in `Retpoline: A Branch Target Injection Mitigation `_ ”h]”(já)�”}”(hhh]”hŒ2”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj#h²hh³Nh´Nubhä)�”}”(hX"Empty RSB Mitigation on Skylake-generation" in `Retpoline: A Branch Target Injection Mitigation `_”h]”(hŒ4“Empty RSB Mitigation on Skylake-generationâ€� in ”…”�”}”(hj4h²hh³Nh´Nubjô)�”}”(hŒí`Retpoline: A Branch Target Injection Mitigation `_”h]”hŒ/Retpoline: A Branch Target Injection Mitigation”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ/Retpoline: A Branch Target Injection Mitigation”jŒ¸https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/retpoline-branch-target-injection-mitigation.html#inpage-nav-5-1”uh1jóhj4ubj)�”}”(hŒ» ”h]”h}”(h]”Œ.retpoline-a-branch-target-injection-mitigation”ah ]”h"]”Œ/retpoline: a branch target injection mitigation”ah$]”h&]”Œrefuri”jLuh1jjKhj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kâhj#ubeh}”(h]”jÚah ]”h"]”Œintel-rsb-filling”ah$]”h&]”jÕaj¨Kj«j¬uh1jÚh³hÇh´KâhjÉh²hubjÛ)�”}”(hŒÓ"Mitigation V2-3" in `Software Techniques for Managing Speculation `_ ”h]”(já)�”}”(hhh]”hŒ3”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjgh²hh³Nh´Nubhä)�”}”(hŒÒ"Mitigation V2-3" in `Software Techniques for Managing Speculation `_”h]”(hŒ“Mitigation V2-3â€� in ”…”�”}”(hjxh²hh³Nh´Nubjô)�”}”(hŒ½`Software Techniques for Managing Speculation `_”h]”hŒ,Software Techniques for Managing Speculation”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ,Software Techniques for Managing Speculation”jŒ‹https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/software-techniques-for-managing-speculation.pdf”uh1jóhjxubj)�”}”(hŒŽ ”h]”h}”(h]”Œ,software-techniques-for-managing-speculation”ah ]”h"]”Œ,software techniques for managing speculation”ah$]”h&]”Œrefuri”j�uh1jjKhjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kähjgubeh}”(h]”jîah ]”h"]”Œamd-rsb-filling”ah$]”h&]”(jéj¾ej¨Kj«j¬uh1jÚh³hÇh´KähjÉh²hubjÛ)�”}”(hX)Whether IBPB is written depends on whether the prev and/or next task is protected from Spectre attacks. It typically requires opting in per task or system-wide. For more details see the documentation for the ``spectre_v2_user`` cmdline option in Documentation/admin-guide/kernel-parameters.txt. ”h]”(já)�”}”(hhh]”hŒ4”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj«h²hh³Nh´Nubhä)�”}”(hX(Whether IBPB is written depends on whether the prev and/or next task is protected from Spectre attacks. It typically requires opting in per task or system-wide. For more details see the documentation for the ``spectre_v2_user`` cmdline option in Documentation/admin-guide/kernel-parameters.txt.”h]”(hŒÒWhether IBPB is written depends on whether the prev and/or next task is protected from Spectre attacks. It typically requires opting in per task or system-wide. For more details see the documentation for the ”…”�”}”(hj¼h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``spectre_v2_user``”h]”hŒspectre_v2_user”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÄhj¼ubhŒC cmdline option in Documentation/admin-guide/kernel-parameters.txt.”…”�”}”(hj¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kæhj«ubeh}”(h]”jDah ]”h"]”Œ cond-ibpb”ah$]”h&]”(j?j2ej¨Kj«j¬uh1jÚh³hÇh´KæhjÉh²hubjÛ)�”}”(hŒHIBPB without flushing of branch type predictions. Only exists for AMD. ”h]”(já)�”}”(hhh]”hŒ5”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjåh²hh³Nh´Nubhä)�”}”(hŒGIBPB without flushing of branch type predictions. Only exists for AMD.”h]”hŒGIBPB without flushing of branch type predictions. Only exists for AMD.”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kèhjåubeh}”(h]”j�ah ]”h"]”Œamd-sbpb”ah$]”h&]”jˆaj¨Kj«j¬uh1jÚh³hÇh´KèhjÉh²hubjÛ)�”}”(hX™"Function 8000_0008h -- Processor Capacity Parameters and Extended Feature Identification" in `AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions `_. SBPB behaves the same way according to `this email `_. ”h]”(já)�”}”(hhh]”hŒ6”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj h²hh³Nh´Nubhä)�”}”(hX˜"Function 8000_0008h -- Processor Capacity Parameters and Extended Feature Identification" in `AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions `_. SBPB behaves the same way according to `this email `_.”h]”(hŒb“Function 8000_0008h -- Processor Capacity Parameters and Extended Feature Identificationâ€� in ”…”�”}”(hj h²hh³Nh´Nubjô)�”}”(hŒÂ`AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions `_”h]”hŒZAMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒXAMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions”jŒdhttps://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24594.pdf”uh1jóhj ubj)�”}”(hŒg ”h]”h}”(h]”ŒWamd64-architecture-programmer-s-manual-volume-3-general-purpose-and-system-instructions”ah ]”h"]”ŒXamd64 architecture programmer's manual volume 3: general-purpose and system instructions”ah$]”h&]”Œrefuri”j4 uh1jjKhj ubhŒ*. SBPB behaves the same way according to ”…”�”}”(hj h²hh³Nh´Nubjô)�”}”(hŒM`this email `_”h]”hŒ this email”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ this email”jŒ=https://lore.kernel.org/5175b163a3736ca5fd01cedf406735636c99a”uh1jóhj ubj)�”}”(hŒ@ ”h]”h}”(h]”Œ this-email”ah ]”h"]”Œ this email”ah$]”h&]”Œrefuri”jV uh1jjKhj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kêhj ubeh}”(h]”j¡ah ]”h"]”Œ amd-ibpb-rsb”ah$]”h&]”jœaj¨Kj«j¬uh1jÚh³hÇh´KêhjÉh²hubjÛ)�”}”(hŒm`Spectre Attacks: Exploiting Speculative Execution `_ ”h]”(já)�”}”(hhh]”hŒ7”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhju h²hh³Nh´Nubhä)�”}”(hŒl`Spectre Attacks: Exploiting Speculative Execution `_”h]”(jô)�”}”(hjˆ h]”hŒ1Spectre Attacks: Exploiting Speculative Execution”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ1Spectre Attacks: Exploiting Speculative Execution”jŒ5https://comsec.ethz.ch/wp-content/files/ibpb_sp25.pdf”uh1jóhj† ubj)�”}”(hŒ8 ”h]”h}”(h]”Œ0spectre-attacks-exploiting-speculative-execution”ah ]”h"]”Œ1spectre attacks: exploiting speculative execution”ah$]”h&]”Œrefuri”j™ uh1jjKhj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kìhju ubeh}”(h]”jÖah ]”h"]”Œamd-ibpb-no-rsb”ah$]”h&]”jÑaj¨Kj«j¬uh1jÚh³hÇh´KìhjÉh²hubjÛ)�”}”(hX "Introduction" in `Post-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706 `_ ”h]”(já)�”}”(hhh]”hŒ8”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj´ h²hh³Nh´Nubhä)�”}”(hX "Introduction" in `Post-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706 `_”h]”(hŒ“Introductionâ€� in ”…”�”}”(hjÅ h²hh³Nh´Nubjô)�”}”(hŒ÷`Post-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706 `_”h]”hŒNPost-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒNPost-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706”jŒ£https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/post-barrier-return-stack-buffer-predictions.html”uh1jóhjÅ ubj)�”}”(hŒ¦ ”h]”h}”(h]”ŒJpost-barrier-return-stack-buffer-predictions-cve-2022-26373-intel-sa-00706”ah ]”h"]”ŒNpost-barrier return stack buffer predictions / cve-2022-26373 / intel-sa-00706”ah$]”h&]”Œrefuri”jÝ uh1jjKhjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kîhj´ ubeh}”(h]”j:ah ]”h"]”Œintel-ibpb-rsb”ah$]”h&]”j5aj¨Kj«j¬uh1jÚh³hÇh´KîhjÉh²hubjÛ)�”}”(hŒÎ"Existing Mitigations" in `Technical Guidance for Mitigating Branch Type Confusion `_ ”h]”(já)�”}”(hhh]”hŒ9”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjø h²hh³Nh´Nubhä)�”}”(hŒÍ"Existing Mitigations" in `Technical Guidance for Mitigating Branch Type Confusion `_”h]”(hŒ“Existing Mitigationsâ€� in ”…”�”}”(hj h²hh³Nh´Nubjô)�”}”(hŒ³`Technical Guidance for Mitigating Branch Type Confusion `_”h]”hŒ7Technical Guidance for Mitigating Branch Type Confusion”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ7Technical Guidance for Mitigating Branch Type Confusion”jŒvhttps://www.amd.com/content/dam/amd/en/documents/resources/technical-guidance-for-mitigating-branch-type-confusion.pdf”uh1jóhj ubj)�”}”(hŒy ”h]”h}”(h]”Œ7technical-guidance-for-mitigating-branch-type-confusion”ah ]”h"]”Œ7technical guidance for mitigating branch type confusion”ah$]”h&]”Œrefuri”j! uh1jjKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kðhjø ubeh}”(h]”j¯ah ]”h"]”Œ amd-smep-rsb”ah$]”h&]”jªaj¨Kj«j¬uh1jÚh³hÇh´KðhjÉh²hubjÛ)�”}”(hŒã"Enhanced IBRS" in `Indirect Branch Restricted Speculation `_ ”h]”(já)�”}”(hhh]”hŒ10”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj< h²hh³Nh´Nubhä)�”}”(hŒâ"Enhanced IBRS" in `Indirect Branch Restricted Speculation `_”h]”(hŒ“Enhanced IBRSâ€� in ”…”�”}”(hjM h²hh³Nh´Nubjô)�”}”(hŒÏ`Indirect Branch Restricted Speculation `_”h]”hŒ&Indirect Branch Restricted Speculation”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ&Indirect Branch Restricted Speculation”jŒ£https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/indirect-branch-restricted-speculation.html”uh1jóhjM ubj)�”}”(hŒ¦ ”h]”h}”(h]”Œ&indirect-branch-restricted-speculation”ah ]”h"]”Œ&indirect branch restricted speculation”ah$]”h&]”Œrefuri”je uh1jjKhjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kòhj< ubeh}”(h]”jah ]”h"]”Œintel-smep-rsb”ah$]”h&]”jüaj¨Kj«j¬uh1jÚh³hÇh´KòhjÉh²hubjÛ)�”}”(hŒÛ"Extended Feature Enable Register (EFER)" in `AMD64 Architecture Programmer's Manual Volume 2: System Programming `_ ”h]”(já)�”}”(hhh]”hŒ11”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj€ h²hh³Nh´Nubhä)�”}”(hŒÚ"Extended Feature Enable Register (EFER)" in `AMD64 Architecture Programmer's Manual Volume 2: System Programming `_”h]”(hŒ1“Extended Feature Enable Register (EFER)â€� in ”…”�”}”(hj‘ h²hh³Nh´Nubjô)�”}”(hŒ­`AMD64 Architecture Programmer's Manual Volume 2: System Programming `_”h]”hŒEAMD64 Architecture Programmer’s Manual Volume 2: System Programming”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒCAMD64 Architecture Programmer's Manual Volume 2: System Programming”jŒdhttps://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/programmer-references/24593.pdf”uh1jóhj‘ ubj)�”}”(hŒg ”h]”h}”(h]”ŒBamd64-architecture-programmer-s-manual-volume-2-system-programming”ah ]”h"]”ŒCamd64 architecture programmer's manual volume 2: system programming”ah$]”h&]”Œrefuri”j© uh1jjKhj‘ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kôhj€ ubeh}”(h]”jtah ]”h"]”Œamd-eibrs-vmexit”ah$]”h&]”joaj¨Kj«j¬uh1jÚh³hÇh´KôhjÉh²hubjÛ)�”}”(hŒã"Enhanced IBRS" in `Indirect Branch Restricted Speculation `_ ”h]”(já)�”}”(hhh]”hŒ12”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjÄ h²hh³Nh´Nubhä)�”}”(hŒâ"Enhanced IBRS" in `Indirect Branch Restricted Speculation `_”h]”(hŒ“Enhanced IBRSâ€� in ”…”�”}”(hjÕ h²hh³Nh´Nubjô)�”}”(hŒÏ`Indirect Branch Restricted Speculation `_”h]”hŒ&Indirect Branch Restricted Speculation”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ&Indirect Branch Restricted Speculation”jŒ£https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/indirect-branch-restricted-speculation.html”uh1jóhjÕ ubj)�”}”(hŒ¦ ”h]”h}”(h]”Œid28”ah ]”h"]”h$]”Œ&indirect branch restricted speculation”ah&]”Œrefuri”jí uh1jjKhjÕ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KöhjÄ ubeh}”(h]”jÆah ]”h"]”Œintel-eibrs-vmexit”ah$]”h&]”jÁaj¨Kj«j¬uh1jÚh³hÇh´KöhjÉh²hubjÛ)�”}”(hŒø`Post-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706 `_ ”h]”(já)�”}”(hhh]”hŒ13”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj h²hh³Nh´Nubhä)�”}”(hŒ÷`Post-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706 `_”h]”(jô)�”}”(hj h]”hŒNPost-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒNPost-barrier Return Stack Buffer Predictions / CVE-2022-26373 / INTEL-SA-00706”jŒ£https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/post-barrier-return-stack-buffer-predictions.html”uh1jóhj ubj)�”}”(hŒ¦ ”h]”h}”(h]”Œid29”ah ]”h"]”h$]”ŒNpost-barrier return stack buffer predictions / cve-2022-26373 / intel-sa-00706”ah&]”Œrefuri”j, uh1j•7XjKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Køhj ubeh}”(h]”jöah ]”h"]”Œ intel-pbrsb”ah$]”h&]”jñaj¨Kj«j¬uh1jÚh³hÇh´KøhjÉh²hubjÛ)�”}”(hŒ‡`RETBleed: Arbitrary Speculative Code Execution with Return Instruction `_ ”h]”(já)�”}”(hhh]”hŒ14”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjG h²hh³Nh´Nubhä)�”}”(hŒ†`RETBleed: Arbitrary Speculative Code Execution with Return Instruction `_”h]”(jô)�”}”(hjZ h]”hŒFRETBleed: Arbitrary Speculative Code Execution with Return Instruction”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒFRETBleed: Arbitrary Speculative Code Execution with Return Instruction”jŒ:https://comsec.ethz.ch/wp-content/files/retbleed_sec22.pdf”uh1jóhjX ubj)�”}”(hŒ= ”h]”h}”(h]”ŒEretbleed-arbitrary-speculative-code-execution-with-return-instruction”ah ]”h"]”ŒFretbleed: arbitrary speculative code execution with return instruction”ah$]”h&]”Œrefuri”jk uh1jjKhjX ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KúhjG ubeh}”(h]”jIah ]”h"]”Œretbleed-paper”ah$]”h&]”(jDjÞej¨Kj«j¬uh1jÚh³hÇh´KúhjÉh²hubjÛ)�”}”(hŒ´`Technical Guidance for Mitigating Branch Type Confusion `_ ”h]”(já)�”}”(hhh]”hŒ15”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj† h²hh³Nh´Nubhä)�”}”(hŒ³`Technical Guidance for Mitigating Branch Type Confusion `_”h]”(jô)�”}”(hj™ h]”hŒ7Technical Guidance for Mitigating Branch Type Confusion”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ7Technical Guidance for Mitigating Branch Type Confusion”jŒvhttps://www.amd.com/content/dam/amd/en/documents/resources/technical-guidance-for-mitigating-branch-type-confusion.pdf”uh1jóhj— ubj)�”}”(hŒy ”h]”h}”(h]”Œid30”ah ]”h"]”h$]”Œ7technical guidance for mitigating branch type confusion”ah&]”Œrefuri”jª uh1jjKhj— ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kühj† ubeh}”(h]”j]ah ]”h"]”Œamd-btc”ah$]”h&]”jXaj¨Kj«j¬uh1jÚh³hÇh´KühjÉh²hubjÛ)�”}”(hŒ±`Technical Update Regarding Speculative Return Stack Overflow `_ ”h]”(já)�”}”(hhh]”hŒ16”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjÅ h²hh³Nh´Nubhä)�”}”(hŒ°`Technical Update Regarding Speculative Return Stack Overflow `_”h]”(jô)�”}”(hjØ h]”hŒ”h]”h}”(h]”Œ`_ ”h]”(já)�”}”(hhh]”hŒ17”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj h²hh³Nh´Nubhä)�”}”(hŒ�`Inception: Exposing New Attack Surfaces with Training in Transient Execution `_”h]”(jô)�”}”(hj h]”hŒLInception: Exposing New Attack Surfaces with Training in Transient Execution”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLInception: Exposing New Attack Surfaces with Training in Transient Execution”jŒ;https://comsec.ethz.ch/wp-content/files/inception_sec23.pdf”uh1jóhj ubj)�”}”(hŒ> ”h]”h}”(h]”ŒKinception-exposing-new-attack-surfaces-with-training-in-transient-execution”ah ]”h"]”ŒLinception: exposing new attack surfaces with training in transient execution”ah$]”h&]”Œrefuri”j( uh1jjKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj ubeh}”(h]”j…ah ]”h"]”Œinception-paper”ah$]”h&]”j€aj¨Kj«j¬uh1jÚh³hÇh´MhjÉh²hubjÛ)�”}”(hX `Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 `_ ”h]”(já)�”}”(hhh]”hŒ18”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjC h²hh³Nh´Nubhä)�”}”(hX `Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 `_”h]”(jô)�”}”(hjV h]”hŒoReturn Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒoReturn Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702”jŒ”https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/return-stack-buffer-underflow.html”uh1jóhjT ubj)�”}”(hŒ— ”h]”h}”(h]”Œhreturn-stack-buffer-underflow-return-stack-buffer-underflow-cve-2022-29901-cve-2022-28693-intel-sa-00702”ah ]”h"]”Œoreturn stack buffer underflow / return stack buffer underflow / cve-2022-29901, cve-2022-28693 / intel-sa-00702”ah$]”h&]”Œrefuri”jg uh1jjKhjT ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjC ubeh}”(h]”jöah ]”h"]”Œ intel-rsbu”ah$]”h&]”(jñj£ej¨Kj«j¬uh1jÚh³hÇh´MhjÉh²hubjÛ)�”}”(hŒÇ`Indirect Branch Predictor Barrier' `_ ”h]”(já)�”}”(hhh]”hŒ19”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj‚ h²hh³Nh´Nubhä)�”}”(hŒÆ`Indirect Branch Predictor Barrier' `_”h]”(jô)�”}”(hj• h]”hŒ$Indirect Branch Predictor Barrier’”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ"Indirect Branch Predictor Barrier'”jŒžhttps://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/indirect-branch-predictor-barrier.html”uh1jóhj“ ubj)�”}”(hŒ¡ ”h]”h}”(h]”Œ!indirect-branch-predictor-barrier”ah ]”h"]”Œ"indirect branch predictor barrier'”ah$]”h&]”Œrefuri”j¦ uh1jjKhj“ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj‚ ubeh}”(h]”j_ah ]”h"]”Œintel-ibpb-btb”ah$]”h&]”jZaj¨Kj«j¬uh1jÚh³hÇh´MhjÉh²hubjÛ)�”}”(hX!"Guidance for RSBU" in `Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 `_ ”h]”(já)�”}”(hhh]”hŒ20”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjÁ h²hh³Nh´Nubhä)�”}”(hX "Guidance for RSBU" in `Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 `_”h]”(hŒ“Guidance for RSBUâ€� in ”…”�”}”(hjÒ h²hh³Nh´Nubjô)�”}”(hX `Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702 `_”h]”hŒoReturn Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒoReturn Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702”jŒ”https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/return-stack-buffer-underflow.html”uh1jóhjÒ ubj)�”}”(hŒ— ”h]”h}”(h]”Œid31”ah ]”h"]”h$]”Œoreturn stack buffer underflow / return stack buffer underflow / cve-2022-29901, cve-2022-28693 / intel-sa-00702”ah&]”Œrefuri”jê uh1jjKhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÁ ubeh}”(h]”j'ah ]”h"]”Œintel-eibrs-rrsba”ah$]”h&]”j"aj¨Kj«j¬uh1jÚh³hÇh´MhjÉh²hubjÛ)�”}”(hŒ²`Branch History Injection: On the Effectiveness of Hardware Mitigations Against Cross-Privilege Spectre-v2 Attacks `_ ”h]”(já)�”}”(hhh]”hŒ21”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhj h²hh³Nh´Nubhä)�”}”(hŒ±`Branch History Injection: On the Effectiveness of Hardware Mitigations Against Cross-Privilege Spectre-v2 Attacks `_”h]”(jô)�”}”(hj h]”hŒqBranch History Injection: On the Effectiveness of Hardware Mitigations Against Cross-Privilege Spectre-v2 Attacks”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒqBranch History Injection: On the Effectiveness of Hardware Mitigations Against Cross-Privilege Spectre-v2 Attacks”jŒ:http://download.vusec.net/papers/bhi-spectre-bhb_sec22.pdf”uh1jóhj ubj)�”}”(hŒ= ”h]”h}”(h]”Œpbranch-history-injection-on-the-effectiveness-of-hardware-mitigations-against-cross-privilege-spectre-v2-attacks”ah ]”h"]”Œqbranch history injection: on the effectiveness of hardware mitigations against cross-privilege spectre-v2 attacks”ah$]”h&]”Œrefuri”j) uh1jjKhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mhj ubeh}”(h]”jQah ]”h"]”Œ bhi-paper”ah$]”h&]”jLaj¨Kj«j¬uh1jÚh³hÇh´MhjÉh²hubjÛ)�”}”(hX `Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598 `_ ”h]”(já)�”}”(hhh]”hŒ22”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjD h²hh³Nh´Nubhä)�”}”(hX `Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598 `_”h]”(jô)�”}”(hjW h]”hŒoBranch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒoBranch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598”jŒ•https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html”uh1jóhjU ubj)�”}”(hŒ˜ ”h]”h}”(h]”Œjbranch-history-injection-and-intra-mode-branch-target-injection-cve-2022-0001-cve-2022-0002-intel-sa-00598”ah ]”h"]”Œobranch history injection and intra-mode branch target injection / cve-2022-0001, cve-2022-0002 / intel-sa-00598”ah$]”h&]”Œrefuri”jh uh1jjKhjU ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjD ubeh}”(h]”jeah ]”h"]”Œ intel-bhi”ah$]”h&]”j`aj¨Kj«j¬uh1jÚh³hÇh´M hjÉh²hubjÛ)�”}”(hX"Retpoline" in `Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598 `_”h]”(já)�”}”(hhh]”hŒ23”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jàhjƒ h²hh³Nh´Nubhä)�”}”(hj… h]”(hŒ“Retpolineâ€� in ”…”�”}”(hj” h²hh³Nh´Nubjô)�”}”(hX `Branch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598 `_”h]”hŒoBranch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒoBranch History Injection and Intra-mode Branch Target Injection / CVE-2022-0001, CVE-2022-0002 / INTEL-SA-00598”jŒ•https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html”uh1jóhj” ubj)�”}”(hŒ˜ ”h]”h}”(h]”Œid32”ah ]”h"]”h$]”Œobranch history injection and intra-mode branch target injection / cve-2022-0001, cve-2022-0002 / intel-sa-00598”ah&]”Œrefuri”j« uh1jjKhj” ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M hjƒ ubeh}”(h]”jœah ]”h"]”Œintel-retpoline-rrsba”ah$]”h&]”j—aj¨Kj«j¬uh1jÚh³hÇh´M hjÉh²hubeh}”(h]”Œ references”ah ]”h"]”Œ references”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KÞubeh}”(h]”Œrsb-related-mitigations”ah ]”h"]”Œrsb-related mitigations”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jù Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œ spectre-rsb”]”j™aŒintel-rsb-filling”]”jËaŒamd-rsb-filling”]”(jßj´eŒ cond-ibpb”]”(j5j(eŒamd-sbpb”]”j~aŒ amd-ibpb-rsb”]”j’aŒamd-ibpb-no-rsb”]”jÇaŒintel-ibpb-rsb”]”j+aŒ amd-smep-rsb”]”j aŒintel-smep-rsb”]”jòaŒamd-eibrs-vmexit”]”jeaŒintel-eibrs-vmexit”]”j·aŒ intel-pbrsb”]”jçaŒretbleed-paper”]”(j:jÔeŒamd-btc”]”jNaŒamd-srso”]”jbaŒinception-paper”]”jvaŒ intel-rsbu”]”(jçj™eŒintel-ibpb-btb”]”jPaŒintel-eibrs-rrsba”]”jaŒ bhi-paper”]”jBaŒ intel-bhi”]”jVaŒintel-retpoline-rrsba”]”j�auŒrefids”}”(jª]”j™ajÚ]”jËajî]”(jßj´ejD]”(j5j(ej�]”j~aj¡]”j’ajÖ]”jÇaj:]”j+aj¯]”j aj]”jòajt]”jeajÆ]”j·ajö]”jçajI]”(j:jÔej]]”jNajq]”jbaj…]”jvajö]”(jçj™ej_]”jPaj']”jajQ]”jBaje]”jVajœ]”j�auŒnameids”}”(jÓ jÐ j�jšjjj•j’j¼j¹jçjäj´j±jË jÈ j jªjjjdjÚjVjSj¨jîjšj—jâjDj j�jr j¡j> j; j` j] j± jÖj£ j  jõ j:jç jä j9 j¯j+ j( j} jjo jl jÁ jtj³ j° j jÆjD jöjƒ jIju jr j j]j jqjó jð j@ j…j2 j/ j jöjq jn j¾ j_j° j­ j j'jA jQj3 j0 j€ jejr jo jà jœuŒ nametypes”}”(jÓ ‰j�‰j‰j•‰j¼‰jç‰j´‰jË ‰j ˆjˆjdˆjVˆj¨ˆjšˆjâˆj ˆjr ˆj> ˆj` ˆj± ˆj£ ˆjõ ˆjç ˆj9 ˆj+ ˆj} ˆjo ˆjÁ ˆj³ ˆj ˆjD ˆjƒ ˆju ˆj ˆj ˆjó ˆj@ ˆj2 ˆj ˆjq ˆj¾ ˆj° ˆj ˆjA ˆj3 ˆj€ ˆjr ˆjà ˆuh}”(jÐ hÊjšjmjj~j£j™jÕjËjéjßj?j5jˆj~jœj’j¾j´jÑjÇj5j+jªj jüjòjojejÁj·jñjçj’j!jDj:jXjNjljbj€jvj¹jªjäj»jÞjÔjñjçj2j(jZjPj£j™j±jêj"jjLjBj`jVj—j�jÈ jÉjªjÜjjjÚj#jSjMjîjgj—j‘jDj«j�jåj¡j j; j5 j] jW jÖju j  jš j:j´ jä jÞ j¯jø j( j" jj< jl jf jtj€ j° jª jÆjÄ jô jî jöj j3 j- jIjG jr jl j]j† j± j« jqjÅ jð jê j…j j/ j) jöjC jn jh j_j‚ j­ j§ j'jÁ jñ jë jQj j0 j* jejD jo ji jœjƒ j² j¬ uŒ footnote_refs”}”(j9]”j™aj;]”jËaj=]”(jßj´ej?]”(j5j(ejA]”j~ajC]”j’ajE]”jÇajG]”j+ajI]”j ajK]”jòajM]”jeajO]”j·ajQ]”jçajS]”(j:jÔejU]”jNajW]”jbajY]”jvaj[]”(jçj™ej]]”jPaj_]”jaja]”jBajc]”jVaje]”j�auŒ citation_refs”}”Œ autofootnotes”]”(jÜj#jgj«jåj ju j´ jø j< j€ jÄ j jG j† jÅ j jC j‚ jÁ j jD jƒ eŒautofootnote_refs”]”(j™jËjßj5j~j’j´jÇj+j jòjej·jçj:jNjbjvjÔjçj(jPj™jjBjVj�eŒsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jK s…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hä)�”}”(hŒIDuplicate explicit target name: "indirect branch restricted speculation".”h]”hŒMDuplicate explicit target name: “indirect branch restricted speculationâ€�.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhj¹ubah}”(h]”h ]”h"]”h$]”h&]”jô aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j·hjÄ ubj¸)�”}”(hhh]”hä)�”}”(hŒqDuplicate explicit target name: "post-barrier return stack buffer predictions / cve-2022-26373 / intel-sa-00706".”h]”hŒuDuplicate explicit target name: “post-barrier return stack buffer predictions / cve-2022-26373 / intel-sa-00706â€�.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhjÕubah}”(h]”h ]”h"]”h$]”h&]”j3 aŒlevel”KŒtype”jÒŒsource”hÇŒline”Kuh1j·hj ubj¸)�”}”(hhh]”hä)�”}”(hŒZDuplicate explicit target name: "technical guidance for mitigating branch type confusion".”h]”hŒ^Duplicate explicit target name: “technical guidance for mitigating branch type confusionâ€�.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhjðubah}”(h]”h ]”h"]”h$]”h&]”j± aŒlevel”KŒtype”jÒŒsource”hÇŒline”Kuh1j·hj† ubj¸)�”}”(hhh]”hä)�”}”(hŒ’Duplicate explicit target name: "return stack buffer underflow / return stack buffer underflow / cve-2022-29901, cve-2022-28693 / intel-sa-00702".”h]”hŒ–Duplicate explicit target name: “return stack buffer underflow / return stack buffer underflow / cve-2022-29901, cve-2022-28693 / intel-sa-00702â€�.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhj ubah}”(h]”h ]”h"]”h$]”h&]”jñ aŒlevel”KŒtype”jÒŒsource”hÇŒline”Kuh1j·hjÁ ubj¸)�”}”(hhh]”hä)�”}”(hŒ’Duplicate explicit target name: "branch history injection and intra-mode branch target injection / cve-2022-0001, cve-2022-0002 / intel-sa-00598".”h]”hŒ–Duplicate explicit target name: “branch history injection and intra-mode branch target injection / cve-2022-0001, cve-2022-0002 / intel-sa-00598â€�.”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãhj&ubah}”(h]”h ]”h"]”h$]”h&]”j² aŒlevel”KŒtype”jÒŒsource”hÇŒline”Kuh1j·hjƒ ubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.