콘텐츠로 이동

Chrome V8 zero-day CVE-2026-85046

Chrome V8 zero-day CVE-2026-85046 thumbnail
Google은 2026-09-03 V8의 type confusion 취약점 CVE-2026-85046을 수정했다. 악성 HTML 페이지를 열면 Chrome sandbox 내부에서 임의 코드 실행으로 이어질 수 있는 High 등급 취약점이다. Google은 exploit이 실제 악용(in the wild)되고 있다고 확인했으며, CISA는 2026-09-04...

요약

Google은 2026-09-03 V8의 type confusion 취약점 CVE-2026-85046을 수정했다. 악성 HTML 페이지를 열면 Chrome sandbox 내부에서 임의 코드 실행으로 이어질 수 있는 High 등급 취약점이다. Google은 exploit이 실제 악용(in the wild)되고 있다고 확인했으며, CISA는 2026-09-04 KEV 카탈로그에 등재했다.

데스크톱 수정 버전은 Windows와 macOS의 152.0.7977.82/.83, Linux의 152.0.7977.82다. 공개된 V8 patch는 Array.prototype.sort() 최적화 과정에서 배열의 elements kind가 바뀌어도 기존 map 검사가 통과하던 문제를 차단한다.

항목 내용
CVE CVE-2026-85046
컴포넌트 V8 JavaScript 엔진
취약점 유형 Type confusion, CWE-843
심각도 High
공격 조건 조작된 HTML 페이지 렌더링
직접 영향 Chrome sandbox 내부 임의 코드 실행
실제 악용 Google 확인
신고일 2026-08-04
벤더 공지·patch 배포일 2026-09-03
KEV 등재일 2026-09-04
수정 버전 Windows/macOS 152.0.7977.82/.83, Linux 152.0.7977.82

브라우저 재시작 필요

업데이트된 바이너리가 설치돼도 실행 중인 Chrome 프로세스에는 이전 V8 코드가 남는다. Chrome을 완전히 종료한 뒤 다시 실행하고 실제 실행 버전을 확인한다.

취약 메커니즘

문제는 V8의 Maglev와 TurboFan compiler가 Array.prototype.sort()를 inline하는 경로에 있었다. 최적화된 정렬은 배열 요소를 임시 저장한 뒤 사용자 정의 comparator를 실행하고, 정렬 결과를 원래 배열에 다시 기록한다.

JavaScript comparator는 정렬 중에도 원본 배열을 변경할 수 있다. 공개된 regression test에서는 comparator 안에서 fill(0)을 호출해 배열의 elements kind를 PACKED_ELEMENTS에서 PACKED_SMI_ELEMENTS로 전환한다.

취약한 흐름은 다음과 같다.

  1. 최적화 과정이 객체를 담은 배열과 해당 map 집합을 기준으로 sort()를 inline한다.
  2. 정렬할 요소를 snapshot으로 보관한다.
  3. comparator가 원본 배열을 정수로 채워 elements kind를 PACKED_SMI_ELEMENTS로 바꾼다.
  4. 정렬 후 검사는 변경된 map이 기존 피드백 집합에 포함되는지만 확인한다.
  5. snapshot에 남은 HeapObject가 Smi 전용 배열로 복사된다.
  6. 이후 Smi 처리 경로가 객체 포인터를 정수처럼 읽거나 write barrier 없이 이동한다.

이 type confusion은 JavaScript heap의 객체 주소 노출과 메모리 읽기·쓰기 primitive를 구성하는 기반이 된다. CVE 설명이 명시하는 보안 경계는 Chrome sandbox 내부다. 공개된 자료에서는 실제 공격에 사용된 sandbox escape나 전체 exploit chain이 확인되지 않는다.

Patch 분석

수정은 다음 파일에 반영됐다.

  • src/compiler/js-call-reducer.cc
  • src/maglev/maglev-graph-builder.cc
  • test/mjsunit/regress/regress-crbug-542403045.js

Maglev와 TurboFan은 Array.prototype.sort()를 inline하기 전에 receiver map들의 elements kind가 모두 같은지 검사한다. 서로 다른 elements kind가 섞인 polymorphic call site는 최적화된 inline 경로를 사용하지 않고 generic builtin으로 fallback한다.

동일한 elements kind를 공유하는 polymorphic map과 monomorphic feedback은 계속 최적화할 수 있다. 핵심 변경점은 정렬 후 map 집합만 확인하는 방식에 의존하지 않고, inline 결정 단계에서 mixed elements kind를 배제한 것이다.

영향 범위

CVE 설명은 152.0.7977.82 미만의 Google Chrome을 영향 버전으로 지정한다. Google의 2026-09-03 Stable Channel 업데이트에는 이 취약점을 포함한 보안 수정 12건이 들어갔다.

Chromium 기반 브라우저에는 Chrome 버전 번호를 그대로 적용할 수 없다. 제품별 advisory에서 CVE-2026-85046 반영 여부와 수정 빌드를 확인해야 한다. V8을 내장한 별도 애플리케이션이나 runtime도 사용 중인 V8 revision에 patch가 포함됐는지 점검 대상에 넣는다.

자산 식별

EMS 또는 브라우저 인벤토리에서 데스크톱 Chrome 152.0.7977.82 미만을 조회한다.

SELECT
  hostname,
  browser_name,
  browser_version,
  last_seen
FROM browser_inventory
WHERE browser_name = 'Google Chrome'
  AND version_compare(browser_version, '152.0.7977.82') < 0;

Windows에서는 실행 파일의 버전을 직접 확인할 수 있다.

(Get-Item "${env:ProgramFiles}\Google\Chrome\Application\chrome.exe").VersionInfo.ProductVersion

사용자별 설치본도 별도로 확인한다.

(Get-Item "${env:LOCALAPPDATA}\Google\Chrome\Application\chrome.exe").VersionInfo.ProductVersion

설치된 파일 버전과 실행 중인 프로세스가 사용하는 경로가 다를 수 있으므로 두 정보를 함께 수집한다.

Get-CimInstance Win32_Process -Filter "Name = 'chrome.exe'" |
  Select-Object ProcessId, ExecutablePath

탐지 포인트

고정 URL, payload signature, 공격 인프라와 같은 IOC는 공개되지 않았다. 단일 이벤트보다 취약 버전의 브라우저 충돌, 방문 기록, 후속 프로세스 및 네트워크 활동을 같은 시간대에 연결해 본다.

네트워크

  • 렌더러 충돌 직전 접속한 URL과 redirect chain
  • 같은 URL을 연 여러 엔드포인트에서 반복되는 Chrome 충돌
  • Chrome 프로세스에서 시작된 신규 또는 평소와 다른 목적지 연결
  • 웹페이지 방문 직후 발생한 실행 파일, archive 또는 script 다운로드

엔드포인트

  • 152.0.7977.82 미만 Chrome에서 발생한 V8·renderer process crash
  • 페이지 방문 직후 반복되는 renderer 비정상 종료
  • Chrome 자식 프로세스로 생성된 shell, script interpreter 또는 사용자 경로의 실행 파일
  • Chrome 프로세스와 시간적으로 인접한 파일 생성, 권한 변경 또는 persistence 등록
  • 업데이트 설치 후에도 남아 있는 구버전 Chrome 프로세스

렌더러 충돌만으로 exploit을 확정할 수는 없다. 충돌 시각을 기준으로 URL, DNS, proxy, 다운로드, 자식 프로세스와 파일 생성 기록을 결합한다.

서버

  • EMS와 브라우저 관리 서버에서 수정 버전 미만으로 남은 자산
  • 업데이트 정책은 적용됐지만 마지막 재시작 시각이 patch 설치보다 앞선 시스템
  • 장기간 check-in하지 않거나 업데이트 실패 상태가 반복되는 엔드포인트
  • 동일 URL 방문 이후 여러 장비에서 수집된 공통 crash signature

대응

  1. 데스크톱 Chrome을 Windows/macOS 152.0.7977.82/.83, Linux 152.0.7977.82 이상으로 업데이트한다.
  2. 모든 Chrome 창과 background process를 종료한 뒤 다시 실행한다.
  3. 설치 파일 버전, 실행 경로, 실행 중인 프로세스 버전을 검증한다.
  4. Chromium 기반 제품은 해당 벤더 advisory에 명시된 수정 빌드를 적용한다.
  5. patch 이전 기간의 V8·renderer crash와 비정상 자식 프로세스를 조사한다.
  6. 의심 URL이 식별되면 같은 URL을 연 사용자와 엔드포인트로 조사 범위를 확장한다.

참고 자료