하드웨어 보안의 최신 동향

제어 흐름 무결성을 하드웨어로 지원하는 기능에 대해, 함수에서의 복귀를 보호하는 것과 함수 포인터 등에 의한 간접 호출이나 점프를 보호하는 것의 조합으로 올바른 것은?

  1. A복귀는 섀도 스택이나 포인터 인증, 간접 호출이나 점프는 점프 대상의 맨 앞에 정해진 표식 명령이 있을 것을 요구하는 구조로 보호한다
  2. B복귀는 점프 대상의 맨 앞에 정해진 표식 명령이 있을 것을 요구하는 구조, 간접 호출이나 점프는 섀도 스택으로 보호한다
  3. C복귀는 KPTI(커널 페이지 테이블 격리), 간접 호출이나 점프는 IOMMU에 의한 주소 변환으로 보호한다
정답과 해설 보기

정답: A. 복귀는 섀도 스택이나 포인터 인증, 간접 호출이나 점프는 점프 대상의 맨 앞에 정해진 표식 명령이 있을 것을 요구하는 구조로 보호한다

섀도 스택은 복귀 주소를 복제와 비교하고, 포인터 인증은 복귀 주소에 붙인 인증 코드를 확인하므로, 둘 다 함수에서의 복귀를 보호합니다. 간접 호출이나 점프에 대해서는 Intel의 IBT나 Arm의 분기 대상 식별(Branch Target Identification)이 점프 대상의 맨 앞에 표식 명령(x86에서는 ENDBR64)이 있을 것을 요구하여, 함수 중간 등으로의 분기를 예외로 만듭니다. 다만 표식이 있는 곳이라면 어느 함수로든 점프할 수 있으므로, 타입이 맞는 함수로만 점프 대상을 좁히는 컴파일러의 세밀한 확인과 조합하기도 합니다. KPTI는 Meltdown에 대한 대책, IOMMU는 기기의 DMA를 제한하는 구조로, 제어 흐름은 보호하지 않습니다.

이 분야 연습하기 분야로 돌아가기

하드웨어 보안의 최신 동향의 다른 문제

  1. DRAM의 미세화가 진행될수록 로우해머가 일어나기 쉬워진다고 하는 이유로 올바른 것은?
  2. DRAM 내부의 TRR(타깃 로우 리프레시)에 의한 로우해머 대책이 연구에서 회피된 적이 있는 이유로 올바른 것은?
  3. 'ECC가 있는 메모리를 사용하면 로우해머 걱정은 없다'라는 생각의 문제점으로 올바른 것은?
  4. 2024년에 갱신된 DDR5 규격(JESD79-5C)에 추가된 PRAC(행별 활성화 계수)의 개념으로 올바른 것은?
  5. 같은 뱅크에서 행을 활성화할 수 있는 최단 간격을 간단히 tRC = 50 ns로 한다. 리프레시 주기가 64 ms일 때, 어떤 행이 리프레시된 후 다음에 리프레시될 때까지 이웃한 1개 행을 활성화할 수 있는 횟수는 최대 64 ms ÷ 50 ns가 된다. 리프레시 빈도를 2배로 했을 때 이 최대 횟수는?