몰락, 인텔 프로세서에 영향을 미치고 정보에 액세스하여 데이터를 도용할 수 있는 취약점

몰락

이 취약점은 Intel 프로세서의 메모리 최적화 기능으로 인해 발생합니다.

인텔 프로세서의 투기적 명령어 실행 시스템에서 또다시 취약점이 발견되었으며 , 이번에는 구글 연구원이 "다운폴(Downfall)"이라는 새로운 취약점(이미 CVE-2022-40982 로 등록됨 )을 발견했다고 밝혔습니다.

Downfall은 동일한 CPU 코어에서 AVX 명령어를 실행할 때 다른 프로세스에서 사용되었던 XMM, YMM, ZMM 벡터 레지스터의 내용을 알아낼 수 있도록 하는 취약점입니다 .

몰락에 대하여

해당 취약점과 관련하여, 시스템에서 자신의 코드를 실행할 수 있는 권한을 가진 비특권 공격자가 이 취약점을 이용하여 다른 사용자 프로세스, 시스템 커널, 격리된 Intel SGX 인클레이브 및 가상 머신에서 데이터를 유출할 수 있다고 언급되어 있습니다.

필터링 가능한 벡터 레지스터는 암호화, 메모리 복사 기능 및 문자열 처리에 널리 사용됩니다. 예를 들어 이러한 레지스터는 무엇보다도 memcpy, strcmp 및 strlen 기능의 Glibc 라이브러리에서 사용됩니다. 실제적인 관점에서 이 취약성은 다른 프로세스에서 AES-NI 또는 REP-MOVS 명령(memcpy 기능에 사용됨)에서 처리 중인 데이터를 확인하는 데 악용될 수 있으며, 이로 인해 암호화 키, 민감한 데이터 및 사용자 암호가 유출될 수 있습니다.

이 취약점은 AVX2 및 AVX-512 확장 명령어 세트를 지원하는 인텔 프로세서(즉, 6세대부터 11세대까지의 프로세서)에서 나타나며, Alder Lake, Raptor Lake 및 Sapphire Rapids 마이크로아키텍처 기반의 인텔 프로세서는 영향을 받지 않습니다.

최근에 발견된 AMD Zen2 프로세서에 영향을 미치는 Zenbleed 취약점과 마찬가지로 Downfall에서 취약점의 원인은 동일한 CPU 코어의 모든 애플리케이션 작업에서 로그 콘텐츠를 공유하는 데 사용되는 로그 파일의 데이터 유출입니다.

이 누출은 AVX2 및 AVX-512 확장 기능에서 사용 가능한 GATHER 명령어 실행 중 발생하는 투기적 데이터 전송 때문입니다. GATHER 명령어는 메모리의 서로 다른 데이터에 빠르게 접근하기 위해 설계되었습니다. GATHER 명령어 실행 시, 레지스터 파일의 오래된 데이터가 종속 명령어의 투기적 실행에 사용됩니다. 이 데이터는 소프트웨어 레지스터에 직접 반영되지는 않지만, CPU 캐시에 남아 있는 데이터를 분석하는 등 멜트다운 공격에 사용되는 사이드 채널 공격 기법을 통해 탐지할 수 있습니다.

Downfall 취약점을 악용하기 위해 Gather Data Sampling(GDS)이라는 공격 기법이 개발되었으며, 다른 사용자의 프로세스에서 암호화 키를 추출하거나, memcpy 함수가 데이터를 Linux 커널에 복사한 후 데이터를 유출하거나, 다른 프로세스가 실행된 후 벡터 레지스터에 남아 있는 출력 문자를 가로채는 등의 프로토타입 익스플로잇이 공개되었습니다. 예를 들어, OpenSSL 라이브러리를 사용하여 다른 사용자의 프로세스에서 데이터를 암호화하는 데 사용되는 AES 키를 정의할 수 있음을 보여줍니다.

이 방법은 높은 효율성을 보여주었습니다. 100개의 서로 다른 키를 사용한 실험에서 AES-128 키는 100%, AES-256 키는 86% 성공적으로 식별했으며, 각 시도는 10초 이내에 완료되었습니다. 클라우드 시스템에서 이 공격은 다른 가상 머신에서 처리 중인 데이터를 식별하는 데 사용될 수 있습니다. 이 취약점은 웹 브라우저에서 JavaScript 코드를 실행함으로써 악용될 가능성이 있습니다.

인텔이 작년 (정확히는 6.1.44월)에 이 문제를 인지했고 , 해당 취약점이 올해 블랙햇 USA 컨퍼런스에서 공개되었다는 점을 언급할 필요가 있습니다 . 이 취약점에 대한 수정 사항은 6.4.9 버전부터 4.14.321 버전까지 다양한 리눅스 커널 업데이트에 이미 포함되어 있습니다.

이 외에도 Downfall 취약점에 대한 보호가 성능에 미치는 부정적인 영향을 피하기 위한 가능한 조치 중 컴파일러에서 변경하여 GATHER 문 사용을 비활성화하거나 GATHER LFENCE 바로 뒤에 문을 추가하는 것이 언급됩니다. 모든 이전 커밋이 완료되기 전에 후속 문의 선제 실행을 비활성화합니다.

펌웨어 수정을 사용할 수 없는 시스템의 경우 모든 AVX 확장에 대한 지원이 비활성화되었으며 Intel 마이크로코드 업데이트 부분의 경우 MSR 인터페이스를 사용하여 펌웨어를 선택적으로 비활성화하는 기능도 제공합니다.

마지막으로, 이 주제에 대해 더 자세히 알고 싶으시다면 다음 링크 에서 자세한 내용을 확인하실 수 있습니다.


Google에서 선호하는 검색 엔진으로 추가