Google 공개 며칠 전 다양한 익스플로잇 프로토 타입 취약점 악용 가능성을 보여주는 브라우저에서 JavaScript 코드를 실행할 때 Spectre 클래스의 위에 추가 된 보안 방법을 거치지 않고
익스플로잇은 프로세스의 메모리에 액세스하는 데 사용될 수 있습니다. 웹 콘텐츠를 처리하는 현재 탭에서. 익스플로잇의 작동을 테스트하기 위해 누출 페이지에 대한 웹 사이트가 시작되었고 작동 로직을 설명하는 코드가 GitHub에 게시되었습니다.
제안 된 프로토 타입은 공격 시스템 Linux 및 Chrome 7 환경의 Intel Core i6500-88U 프로세서, 이것은 다른 환경에서 익스플로잇을 사용하기 위해 변경 될 수 있다는 것을 배제하지는 않습니다.
작동 방법은 다음에 국한되지 않습니다. 프로세서 인텔 : 적절한 적응 후 이 익스플로잇은 ARM 아키텍처 기반의 Apple M1을 포함하여 타사 CPU가있는 시스템에서 작동하는 것으로 확인되었습니다. 사소한 조정 후 익스플로잇은 Chromium 엔진을 기반으로하는 다른 운영 체제 및 기타 브라우저에서도 작동합니다.
표준 Chrome 88 및 Intel Skylake 프로세서를 기반으로하는 환경에서 현재 Chrome 탭 (렌더링 프로세스)의 웹 콘텐츠 렌더링을 담당하는 프로세스에서 초당 1KB의 속도로 데이터 유출이 발생했습니다. 또한 대체 프로토 타입 (예 : 8 마이크로 초 (5 밀리 초)의 정밀도로 performance.now () 타이머를 사용할 때 안정성이 저하 된 비용으로 누출 률을 0.005kB / s로 증가시킬 수있는 익스플로잇)이 개발되었습니다. ). 또한 60 밀리 초의 타이머 정밀도로 작동하는 변형도 개발되었으며, 이는 초당 약 XNUMX 바이트의 속도로 다른 프로세스의 메모리에 대한 액세스를 구성하는 데 사용할 수 있습니다.
게시 된 데모 코드는 다음 세 부분으로 구성됩니다.
- 첫 번째 부분 실행 시간을 추정하기 위해 타이머를 보정하십시오. CPU 명령의 예측 실행의 결과로 프로세서 캐시에 남아있는 데이터를 검색하는 데 필요한 작업
- 두 번째 부분 JavaScript 배열을 할당 할 때 사용되는 메모리 레이아웃을 정의합니다.
- 세 번째 부분 Spectre 취약점을 직접 악용하여 메모리 콘텐츠를 확인합니다. 특정 작업의 예측 실행을위한 조건 생성의 결과로 현재 프로세스의 결과는 실패한 예측을 결정한 후 프로세서에 의해 삭제되지만 실행 추적은 공유 캐시에 정착되며 다음을 사용하여 복원 할 수 있습니다. 캐시 된 데이터와 캐시되지 않은 데이터에 대한 액세스 시간의 변화를 분석하는 타사 채널을 사용하여 캐시의 내용을 확인하는 방법.
제안 된 착취 기법 고정밀 타이머 제거 performance.now () API를 통해 사용할 수 있으며 SharedArrayBuffer 유형에 대한 지원없이 공유 메모리에 배열을 만들 수 있습니다.
이 익스플로잇에는 제어 된 추측 코드 실행을 유발하는 Spectre 장치와 추측 실행 중에 어떤 데이터가 캐시되었는지 확인하는 부 채널 누출 분석기가 포함됩니다.
가젯은 자바 스크립트 배열을 사용하여 구현됩니다. 어느 버퍼의 한계를 벗어난 영역에 액세스하려는 시도이는 컴파일러에 의해 추가 된 버퍼 크기 검사의 존재로 인해 분기 예측 블록의 상태에 영향을줍니다 (프로세서는 미리 액세스를 추측 적으로 수행하지만 검사 후에 상태를 되돌립니다).
타이머 정밀도가 불충분 한 조건에서 캐시의 내용을 분석하기 위해 프로세서에서 사용하는 Tree-PLRU 캐시 데이터 제거 전략을 속여서주기 수를 늘려 값의 차이 시간을 크게 늘릴 수있는 방법을 제안했습니다. 캐시에서 값이없는 경우 캐시에서 반환됩니다.
Google은 공격의 가능성을 보여주기 위해 익스플로잇의 프로토 타입을 게시했습니다. Spectre 클래스 취약점 사용 웹 개발자가 그러한 공격의 위험을 최소화하는 기술을 사용하도록 권장합니다.
동시에 Google은 제안 된 프로토 타입을 대대적으로 수정하지 않으면 데모뿐만 아니라 널리 사용할 수있는 범용 공격을 생성하는 것이 불가능하다고 생각합니다.
출처 : https://security.googleblog.com