최상위 10_Wiki/Topic_*였던 4개 카테고리 폴더를 10_Wiki/Topics/Topic_* 로 재배치.
콘텐츠 변경 없음(순수 폴더 이동) — Topics/ 하위 나머지 폴더는 이미 지난 커밋에서
전부 정리된 상태(잔존 항목은 에이전트 운영 상태 및 사용자가 보존을 요청한
업데이트0615/무제 3.canvas 뿐).
"매 speculative execution 의 microarchitectural side-effect leak". 2018 Kocher et al. discovery — branch predictor / BTB 를 mistrained 시켜 out-of-bounds load 의 cache footprint 로 secret 을 추출. 2026 현재 Variant 1/2/4 + Retbleed/Inception 등 8년차 ongoing mitigation arms race.
매 핵심
매 Variants
V1 (Bounds Check Bypass, CVE-2017-5753): speculative array access past bounds.
// Vulnerable: array2 cache state leaks array1[x]
uint8_tarray1[16];uint8_tarray2[256*4096];voidvictim(size_tx){if(x<16){// mistrained branch
uint8_tv=array1[x];// x can be OOB during speculation
uint8_tleak=array2[v*4096];// cache footprint encodes v
}}// Attacker: train with valid x, then call with OOB x,
// flush array2, victim(), then time array2[i*4096] reads.
voidvictim_safe(size_tx){if(x<16){_mm_lfence();// serialize — block speculation
uint8_tv=array1[x];uint8_tleak=array2[v*4096];}}// Cost: ~30-50% perf hit. 매 array_index_nospec() 의 Linux kernel 사용.
V1 mitigation: index masking
// Linux kernel array_index_nospec
staticinlinesize_tmask_idx(size_tidx,size_tsz){size_tmask=~(idx>=sz?~0UL:0);returnidx&mask;// 0 if OOB, idx otherwise — branchless
}voidvictim_masked(size_tx){if(x<16){x=mask_idx(x,16);uint8_tv=array1[x];uint8_tleak=array2[v*4096];}}
V2 mitigation: retpoline
; Replace `jmp *%rax` with retpoline trampoline
retpoline:callset_up_targetcapture:pauselfencejmpcapture; speculation trap
set_up_target:mov%rax,(%rsp); overwrite return addr
ret; predictor uses RSB, not BTB