홈페이지홈페이지 > 소식 > "Collide+Power" 공격으로 성능과 보안이 다시 충돌

"Collide+Power" 공격으로 성능과 보안이 다시 충돌

Oct 05, 2023

또 다른 주, 또 다른 BWAIN!

지난주 팟캐스트를 들어보시면 아시겠지만(힌트, 힌트!) BWAIN은 Bug With An Impressive Name의 약자입니다.

시즌 3 145화: 이름이 인상적인 벌레들!

이는 새로운 사이버 보안 공격을 발견한 사람이 자신의 발견에 너무 기뻐서 PR 친화적인 이름을 부여하고, 가상 도메인 이름을 등록하고, 맞춤형 웹 사이트를 구축하고, 특수 로고를 디자인할 때 적용하는 별명입니다.

이번에 Collide+Power라는 이름에는 성가신 구두점이 포함되어 있는데, 이는 버그 이름 지정에는 플러스이지만 인터넷 도메인 등록에는 마이너스입니다. (아이러니하게도 도메인 이름에는 -를 사용할 수 있지만 +는 사용할 수 없습니다.)

그래서 도메인 이름을 https://collidepower.com으로 약간 줄여야 했지만 웹사이트에서는 추가 기호를 빼더라도 문제에 대한 개요를 어쨌든 제공합니다.

이 새로운 논문의 연구원은 오스트리아 Graz University의 Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss 및 Stefan Mangard와 독일 CISPA Helmholtz 정보 보안 센터의 Lukas Gerlach 및 Michael Schwarz입니다.

측정 방법에 대한 기술적 세부 사항과 이러한 측정에서 추론하는 데 사용되는 수학적 모델링이 복잡하기 때문에 이 공격의 다양한 형태를 길게 설명하지는 않을 것입니다.

그러나 부분적인 말장난을 용서한다면 문제의 핵심은 보이지 않는 자동 성능 향상을 제공하기 위해 최신 프로세서 칩 내부에 묻혀 있는 캐시 메모리입니다.

...생각하는 것만큼 항상 눈에 보이지 않는 것은 아니며 때로는 콘텐츠를 볼 수 없는 프로세스에도 콘텐츠의 일부 또는 전체가 유출될 수 있습니다.

이름에서 알 수 있듯이 캐시 메모리(궁금하신 분들이 계시다면 존경과 명성을 뜻하는 캐시가 아닌 달러와 센트로 현금으로 발음함)는 기존 RAM의 데이터 값에 대한 특별한 복사본을 CPU 내부의 숨겨진 위치에 보관합니다. 칩 그 자체.

CPU가 최근에 사용한 RAM 주소(메모리 위치)를 추적하고 곧 다시 사용할 가능성이 있는 주소를 충분히 추측할 수 있다면 해당 주소를 캐시 메모리에 임시로 보관하여 속도를 크게 높일 수 있습니다. 해당 값에 대한 두 번째 액세스, 세 번째 액세스, 네 번째 등.

예를 들어, 이미지 픽셀을 한 색상 형식에서 다른 색상 형식으로 변환하기 위해 테이블에서 일련의 데이터 값을 조회하는 경우 대부분의 경우 조회 테이블에서 RAM 주소 0x06ABCC00(아마도 "검은색 픽셀"에 대한 특수 코드가 저장된 위치) 또는 주소 0x3E00A040("투명 픽셀" 코드의 위치일 수 있음)입니다.

캐시에 일반적으로 필요한 두 메모리 주소의 값을 자동으로 유지함으로써 CPU는 향후 해당 주소에 액세스하려는 시도를 단락(비유적으로는 말 그대로!)할 수 있으므로 프로세서 외부로 전기 신호를 보낼 필요가 없습니다. 마더보드 전체와 실제 RAM 칩에 저장되어 있는 데이터의 마스터 복사본을 읽어냅니다.

따라서 캐시된 데이터는 일반적으로 마더보드 RAM의 데이터보다 액세스 속도가 훨씬 빠릅니다.

그러나 일반적으로 어떤 RAM 주소를 저장하는 데 어떤 캐시 레지스터를 사용할지 선택할 수 없으며, CPU가 "투명 픽셀 코드" 값 캐싱을 중지하고 다른 프로그램의 값 캐싱을 시작하기로 결정하는 시기도 선택할 수 없습니다. 대신 "초비밀 암호화 키"를 사용하세요.

실제로 캐시에는 다양한 사용자 계정과 권한 수준의 자유로운 혼합에 속하는 RAM 주소의 자유로운 혼합에서 값의 자유로운 혼합이 동시에 포함될 수 있습니다.

이러한 이유로 효율성 및 성능상의 이유와 함께 관리자 수준 프로그램조차도 현재 캐시된 주소 목록을 직접 엿보거나 해당 값을 얻을 수 없어 외부 스누핑으로부터 캐시된 데이터를 보호할 수 없습니다.

프로그래머로서 당신은 여전히 ​​"주소 0x3E00A040에서 투명 픽셀 코드를 읽어라"라는 기계어 명령을 사용하고, 운영 체제는 여전히 숫자 주소 0x3E00A040을 기반으로 해당 데이터에 접근할 수 있는지 여부를 결정합니다. 데이터는 궁극적으로 실제 RAM 주소 0x3E00A040 대신 캐시에서 직접 제공됩니다.