TL;DR
- exe.dev가 가상 머신(VM) 간 하이퍼스레딩 취약점 악용을 막기 위해 Linux 코어 스케줄링 쿠키를 적용하고, 팀 단위로 쿠키를 공유하는 방식을 도입함.
- 하이퍼스레딩은 하나의 물리 코어에서 두 개의 논리 코어가 독립 프로그램을 동시에 실행하게 해 CPU 자원 활용도를 높이지만, MDS 같은 일시적 실행 취약점에 노출됨.
- exe.dev는 서로 다른 사용자의 VM이 같은 물리 코어의 하이퍼스레드를 공유하지 않도록 보호해야 함.
- VM마다 쿠키를 따로 부여하면 보안은 유지되지만 물리 CPU 코어 활용이 측정 가능한 수준으로 비효율적이므로, 같은 팀의 VM끼리는 쿠키를 공유함.
- 같은 팀 구성원끼리는 서로 신뢰한다고 가정하며, 팀 관리자는
ssh exe.dev team settings core-sharing off명령으로 팀 VM 간 코어 공유를 막을 수 있음.
하이퍼스레딩과 일시적 실행 취약점
- 최신 프로세서는 여러 CPU 코어로 구성되며, 각 물리 CPU 코어에는 두 개의 논리 CPU 코어가 있음. 이 구조를 하이퍼스레딩(hyper-threading)이라고 함.
- 하이퍼스레딩은 하나의 물리 코어에서 두 개의 독립 프로그램을 동시에 실행해 CPU 자원을 더 효율적으로 활용함.
- 동시에 한 하이퍼스레드에서 실행 중인 프로그램이 같은 물리 코어의 다른 하이퍼스레드에서 실행 중인 프로그램의 데이터를 추출할 수 있는 일시적 실행 취약점(transient execution vulnerability)에 노출됨. MDS가 이러한 공격의 사례임.
팀 단위 코어 스케줄링
- exe.dev는 여러 사용자를 대신해 가상 머신(VM)을 실행하며, 한 사용자가 취약점을 악용해 같은 CPU 코어의 다른 하이퍼스레드에서 실행 중인 다른 사용자의 데이터를 추출하는 상황을 막아야 함.
- Linux 커널의 코어 스케줄링 쿠키(core scheduling cookie)는 같은 CPU 코어를 공유할 수 있는 프로세스를 제어함.
- VM마다 독립적인 쿠키를 부여하면 서로 다른 VM은 같은 CPU 코어에서 실행되지 않지만, 실제로 물리 CPU 코어 활용도가 측정 가능한 수준으로 떨어짐.
- 이에 따라 보안은 유지하면서 효율성을 높이는 방식으로 팀별 독립 쿠키를 구현함. 서로 다른 팀의 VM은 같은 CPU 코어에서 실행되지 않으며, 팀에 속하지 않은 사용자의 경우 서로 다른 사용자의 VM이 같은 코어를 공유하지 않음.
- 같은 팀의 VM은 쿠키를 공유하므로 같은 팀 구성원은 서로 신뢰한다고 가정함.
코어 공유 설정
- 일부 팀은 여러 VM 사이에 신뢰 관계가 성립하지 않을 수 있음. 해당 팀의 관리자는
ssh exe.dev team settings core-sharing off명령을 실행해 팀 VM이 CPU 코어를 공유하지 않도록 설정할 수 있음. - 현재 팀에 속하지 않은 VM은 같은 사용자의 다른 VM과도 코어를 공유하지 않음. 향후 이 정책이 바뀌면 개인 사용자를 위한 유사한 설정이 추가될 예정임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요