기존에 이미 나왔던 내용들인데 정리를 해놔서 복습겸 올려봅니다.
Branch Target Injection을 이용한 KBM 게스트 메모리 읽기
구글의 프로젝트 제로는 인텔, AMD, ARM 등의 여러 CPU에서 성능을 최적화하는데 쓰는 분기 예측 기능에 심각한 취약점이 존재한다고 발표했습니다.
https://googleprojectzero.blogspot.jp/2018/01/reading-privileged-memory-with-side.html
프로젝트 제로의 연구원인 Jann Horn는 악의적인 공격자가 CPU의 분기 예측을 이용해, 원래 액세스 권한이 없는 소프트웨어에 액세스, 시스템 메모리를 읽어오는 것이 가능하다고 밝혔습니다.
하스웰 기반 제온 E5-1650 v3, AMD FX-8320, AMD PRO A8-9600 및 ARM Cortex-A75를 탑재한 넥서스 5x 스마트폰에서 테스트한 결과 하나의 가상 머신에서 이 공격을 이용해 호스트 컴퓨터의 리얼 메모리에 액세스하고, 다른 가상 머신 메모리의 읽기 권한을 취득할 수 있었다고 합니다.
이번에 발견된 취약점은 3종류입니다. 첫번째는 Bounds Check Bypass(CVE-2017-5753) 두번째는 Branch Target Injection(CVE-2017-5715), 세번째는 Rogue Data Cache Load(CVE-2017-5754)입니다. 이 중에 첫번째와 두번째 취약점을 노린 공격 기법을 스펙터(Spectre), 세번째 공격이 멜트다운(Meltdown)라고 합니다.
구글은 2017년 6월에 이 취약점을 인텔, AMD, ARM에 보고하고 문제를 해결하기 위해 노력했습니다. 원래 2018년 1월에 공개할 예정이었으나 일부 언론이 이를 보도하면서 위험이 높아져 지금 공개. 구체적인 공격 방법은 위의 링크를 보세요.
Bounds Check Bypass 공격은 분기 예측이 조건 분기를 할 때, 명령을 실행할지를 알기도 전에 명령을 실행할 수 있다는 점과, 분기 실행은 데이터를 캐싱한다는 점을 악용했습니다. 분기 실행 결과가 정확하면 처리 시간이 짧아지며, 잘못되면 명령을 취소하고 메모리에서 다른 데이터를 불러와 재처리해야 합니다. 이 처리 과정과 데이터 로드에 걸린 시간을 측정해 현재 실행중인 데이터를 예측합니다.
Branch Target Injection은 CPU 내부의 간접 분기 예측 장치를 이용합니다. 조건부 직접 분기에선 분기 실행에 두가지 옵션 뿐이나, 간접 분기에서 가제트를 실행해 악성 코드를 실행시킬 수 있게 됩니다.
Rogue Data Cache Load는 애플리케이션이 커널 메모리를 직접 탐색하는 방법입니다. 일반적으로 이런 작업은 프로그램 오류(페이지 테이블의 권한에 의한 페이지 폴트)가 나오지만, L1 데이터 캐시에 분기 예측 작업 수행을 상주시켜 실행되면 데이터 조회가 가능합니다.
https://newsroom.intel.com/news-releases/intel-issues-updates-protect-systems-security-exploits/
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
인텔은 다음 프로세서에서 이 문제를 해결하고 성능을 강화하며, 기존 제품에선 각각 취약점을 온화해 나갈 것이라 발표했습니다. 지난 5년 간 나온 90% 이상의 CPU에 맞춰 패치를 작업한다네요.
http://www.amd.com/en/corporate/speculative-execution
AMD는 정기적인 소프트웨어 업데이트를 수행해 달라고 설명했습니다.
https://developer.arm.com/support/security-update
ARM은 펌웨어를 제공하고 문제를 해결하며 리눅스 커널 패치를 제공합니다.
http://nvidia.custhelp.com/app/answers/detail/a_id/4609
NVIDIA는 GPU 드라이버를 업데이트, ARM SoC는 분석 중
https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/adv180002
마이크로소프트는 2018년 1월에 업데이트 제공. 일반 소비자가 느끼는 성능 저하는 많지 않을 것.
https://blogs.technet.microsoft.com/jpaztech/2018/01/04/securing-azure-customers-from-cpu-vulnerability/
마이크로소프트 Azure는 이미 대처가 끝났으며 VM을 다시 시작해 패치 적용
https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html
구글은 안드로이드가 최신 보안 업데이트 지원. 구글 앱스/G 슈트는 고객이 신경 쓸 필요 없음. 크롬과 크롬 OS는 업데이트 필요.
https://support.apple.com/en-us/HT208394
애플은 모든 iOS와 맥이 영향을 받으나 iOS 11.2, macOS 10.13.2, tvOS 11.2에서 멜트다운 해결. 애플 워치는 상관 없음.
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
모질라는 파이어폭스 57.0.4에서 해결
https://www.synology.com/ja-jp/support/security/Synology_SA_18_01
시놀로지는 문제를 알고 있으나 아직 대책이 나오진 않음
https://access.redhat.com/security/vulnerabilities/speculativeexecution
레드햇은 리눅스 커널 업데이트로 대응할 것. IBM 시스템 Z, POWER8, POWER9에도 같은 문제가 있음
https://www.suse.com/c/suse-addresses-meltdown-spectre-vulnerabilities/
수세는 리눅스 커널 패치를 내놓을 것.
http://xenbits.xen.org/xsa/advisory-254.html
Xen은 스페터는 해결 방안이 아직 없으며 멜트다우는 게스트를 HVM, PVH 모드에서 실행해 해결 가능.