타입 혼동 취약점이란 — 크롬이 올해만 여섯 번 긴급 패치를 낸 이유
A type confusion bug is a class of memory-safety flaw in which a program stores a value as one type and later reads the same memory as a different type. The mismatch lets an attacker treat an ordinary number as though it were a memory address, and from there write to places the program never meant to expose. The class matters right now because CVE-2026-85046, a type confusion bug in V8 — Chrome's JavaScript and WebAssembly engine — was patched in the September 3, 2026 stable channel and is the sixth actively exploited Chrome zero-day of 2026. It carries a CVSS score of 8.8, was reported on August 4, 2026 by researcher Salvatore Gulizia for a $1,000 bounty, and lets a remote attacker execute arbitrary code inside the sandbox through a crafted HTML page. CISA added it to the Known Exploited Vulnerabilities catalog on September 4 and set a September 18 patch deadline for US federal civilian agencies. Fixed builds are Chrome 152.0.7977.82 and .83
타입 혼동 취약점은 프로그램이 어떤 값을 A라는 종류로 저장해 놓고 나중에 같은 메모리를 B라는 종류로 읽어 버릴 때 생기는 메모리 안전 결함이다. 종류가 어긋나면 공격자는 평범한 숫자를 메모리 주소인 것처럼 다루게 만들 수 있고, 거기서부터 프로그램이 열어 준 적 없는 자리에 값을 쓸 수 있다. 이 분류가 지금 중요한 이유는 CVE-2026-85046 때문이다. 크롬의 자바스크립트·웹어셈블리 엔진 V8에서 발견된 타입 혼동 결함이고, 2026년 9월 3일 안정 채널 업데이트로 패치됐으며, 2026년 들어 실제 공격에 쓰인 것이 확인된 여섯 번째 크롬 제로데이다. CVSS 점수는 8.8이고, 2026년 8월 4일 연구자 살바토레 굴리치아가 보고해 1,000달러의 포상금을 받았다. 공격자는 조작된 HTML 페이지만으로 샌드박스 안에서 임의 코드를 실행할 수 있다. 미국 사이버보안·인프라보안국(CISA)은 9월 4일 이 취약점을 알려진 악용 취약점 목록에 올리고 연방 민간기관에 9월 18일까지 패치하라고 못박았다. 수정된 버전은 크롬 152.0.7977.82와 .83이다
3줄 요약
- 정의 — 값을 A 종류로 저장하고 B 종류로 읽는 결함. 숫자를 메모리 주소처럼 다루게 만들 수 있다
- 사례 — CVE-2026-85046, 크롬 V8의 타입 혼동. CVSS 8.8, 2026년 여섯 번째 실제 악용 제로데이
- 대응 — 9월 3일 안정 채널 패치. 크롬 152.0.7977.82/.83. CISA 목록 등재, 연방기관 패치 시한 9월 18일
핵심 질문
- 타입 혼동 취약점이 무슨 뜻인가
- **같은 메모리를 서로 다른 종류로 두 번 해석할 때 생기는 결함이다.** 비유가 정확한 편이다. 사물함에 **"3번 칸에 사과 개수를 적어 둔다"** 고 정해 놓고 숫자 **5**를 적었는데, 나중에 다른 코드가 3번 칸을 열면서 **"여기엔 창고 주소가 적혀 있다"** 고 읽는 상황이다. 그러면 **5는 개수가 아니라 5번지가 된다.** | 저장할 때 | 읽을 때 | 결과 | |---|---|---| | 숫자 **5** (값) | 주소 **0x5** (포인터) | 공격자가 주소를 마음대로 정할 수 있다 | | 작은 객체 | 큰 객체 | 남의 메모리까지 읽고 쓴다 | **공격자에게 이 결함이 값진 이유는 '읽기'로 끝나지 않기 때문이다.** 한 번 숫자를 주소로 읽게 만들면, 그다음부터는 **공격자가 고른 주소에 공격자가 고른 값을 쓰는 상태**로 넘어갈 수 있다. 이 상태에 도달하면 사실상 프로그램의 실행 흐름을 가져올 수 있다. 그래서 CVE-2026-85046의 설명이 **"조작된 HTML 페이지를 통한 임의 코드 실행"** 인 것이다 — **웹페이지를 열기만 해도 코드가 돈다.**
- 왜 하필 브라우저 자바스크립트 엔진에서 자주 나오나
- **빠르게 만들려고 종류를 미리 짐작하기 때문이다.** 자바스크립트는 변수에 종류를 선언하지 않는 언어다. `x = 5` 라고 쓰면 그게 정수인지 실수인지 프로그램이 실행 중에 정한다. 이걸 곧이곧대로 매번 확인하면 느리다. 그래서 크롬의 **V8** 같은 현대 엔진은 **JIT(Just-In-Time) 컴파일**을 쓴다. 같은 코드가 반복되면 **"이 자리에는 늘 정수가 온다"** 고 판단하고, 확인 절차를 빼 버린 빠른 기계어를 만든다. | 단계 | 하는 일 | 위험 | |---|---|---| | 해석 실행 | 매번 종류를 확인 | 느리지만 안전 | | **JIT 최적화** | **종류를 가정하고 확인을 생략** | **가정이 깨지면 타입 혼동** | | 가정 무효화 | 가정이 틀리면 되돌린다 | **이 되돌리기에 구멍이 나면 공격 성립** | **즉 이 취약점 분류는 성능 최적화의 그림자다.** 확인을 생략해 얻은 속도가, 생략된 확인을 공격자가 노릴 자리를 만든다. **크롬 제로데이가 유독 V8에서 반복되는 이유가 여기 있고**, 올해 여섯 번이라는 숫자도 이 구조에서 나온다(「제로데이란」).
- 지금 내 크롬은 어떻게 확인하나
- **버전 번호를 보면 된다.** 이번 결함이 고쳐진 빌드는 **크롬 152.0.7977.82**(윈도우·맥·리눅스)와 **152.0.7977.83**(윈도우·맥)이다. 이 숫자보다 낮으면 아직 안 고쳐진 상태다. | 항목 | 값 | |---|---| | 취약점 번호 | **CVE-2026-85046** | | 위치 | **V8** (자바스크립트·웹어셈블리 엔진) | | 분류 | **타입 혼동** | | CVSS | **8.8** | | 보고 | 2026년 **8월 4일**, 살바토레 굴리치아 (포상금 **1,000달러**) | | 패치 | 2026년 **9월 3일** 안정 채널 | | CISA KEV 등재 | 2026년 **9월 4일** | | 미 연방기관 패치 시한 | 2026년 **9월 18일** | **크롬은 자동 업데이트되지만, 브라우저를 다시 시작해야 적용된다.** 몇 주째 창을 안 닫은 사람이 가장 위험하다. 그리고 이 결함은 크롬만의 문제가 아니다. **V8은 크로미움 기반 브라우저 전체가 공유한다** — 엣지, 브레이브, 오페라, 웨일이 모두 같은 엔진을 쓴다. **각 브라우저가 자기 업데이트를 내려야 고쳐진다.** **포상금 1,000달러가 눈에 걸릴 수 있다.** 실제 악용된 원격 코드 실행 결함치고 낮은 금액인데, 이는 굴리치아가 보고한 시점(8월 4일)에는 아직 악용 사실이 확인되지 않았기 때문으로 보인다. 다만 **포상금 산정 근거는 공개되지 않았다.**
웹페이지를 여는 것만으로 코드가 실행된다. 그 일이 가능한 이유는 브라우저가 빨라지려고 확인 한 번을 건너뛰기 때문이다.
1. 한 문장 정의
타입 혼동(type confusion)은 프로그램이 값을 A라는 종류로 저장해 두고, 나중에 같은 메모리를 B라는 종류로 읽는 결함이다.
| 저장할 때 | 읽을 때 | 무슨 일이 |
|---|---|---|
| 숫자 5 | 메모리 주소 0x5 | 공격자가 주소를 정할 수 있다 |
| 작은 객체 | 큰 객체 | 옆 메모리까지 읽고 쓴다 |
숫자를 주소로 읽게 만드는 데 성공하면, 그다음은 "공격자가 고른 자리에 공격자가 고른 값을 쓰기"다. 여기까지 오면 프로그램의 실행 흐름이 공격자에게 넘어간다. CVE-2026-85046의 설명이 "조작된 HTML 페이지를 통한 임의 코드 실행" 인 이유다.
2. 왜 브라우저 엔진에서 반복되나
자바스크립트는 변수에 종류를 선언하지 않는다. x = 5가 정수인지 실수인지 실행 중에 정해진다. 매번 확인하면 느리다.
| 단계 | 하는 일 | 위험 |
|---|---|---|
| 해석 실행 | 매번 종류 확인 | 느리지만 안전 |
| JIT 최적화 | "여긴 늘 정수"라 가정하고 확인 생략 | 가정이 깨지면 타입 혼동 |
| 가정 무효화 | 틀리면 되돌린다 | 되돌리기에 구멍 = 공격 성립 |
이 분류는 성능 최적화의 그림자다. 확인을 생략해 얻은 속도가, 생략된 확인을 노릴 자리를 만든다. 크롬 제로데이가 유독 V8에서 반복되는 구조가 이것이다(「제로데이란」).
3. 이번 건의 사실관계
| 항목 | 값 |
|---|---|
| 번호 | CVE-2026-85046 |
| 위치 | V8 (자바스크립트·웹어셈블리 엔진) |
| 분류 | 타입 혼동 |
| CVSS | 8.8 |
| 보고 | 8월 4일, 살바토레 굴리치아 (포상금 1,000달러) |
| 패치 | 9월 3일 안정 채널 |
| 수정 버전 | 152.0.7977.82 (윈도우·맥·리눅스) / .83 (윈도우·맥) |
| CISA KEV 등재 | 9월 4일 |
| 미 연방기관 시한 | 9월 18일 |
| 2026년 순번 | 여섯 번째 실제 악용 제로데이 |
4. 지금 해야 할 것 두 가지
① 크롬을 다시 시작한다. 크롬은 자동으로 업데이트를 받아 두지만, 브라우저를 껐다 켜야 적용된다. 몇 주째 창을 안 닫은 사람이 가장 오래 노출된다. 버전이 152.0.7977.82 이상이면 고쳐진 것이다.
② 크롬만의 문제가 아니라는 것을 안다. V8은 크로미움 기반 브라우저 전체가 공유하는 엔진이다.
| 브라우저 | 엔진 | 상태 |
|---|---|---|
| 크롬 | V8 | 9월 3일 패치 배포 |
| 엣지·브레이브·오페라·웨일 | V8 (크로미움) | 각자 업데이트를 내야 고쳐진다 |
| 사파리 | JavaScriptCore | 이 CVE 대상 아님 |
| 파이어폭스 | SpiderMonkey | 이 CVE 대상 아님 |
5. 남은 것과 확인되지 않은 것
- 실제 공격의 대상과 시점을 구글이 공개하지 않았다. 구글은 통상 대다수가 패치를 적용할 때까지 상세를 보류한다.
- 어느 JIT 최적화 경로가 문제였는지 공개되지 않았다. 위 2번의 설명은 타입 혼동 분류 일반에 대한 것이지, 이 CVE의 확인된 원인 분석이 아니다.
- 포상금 1,000달러의 산정 근거가 공개되지 않았다. 원격 코드 실행 결함치고는 낮은 금액이다.
- 크로미움 기반 타 브라우저의 배포 시점은 개별 확인하지 않았다.
- '여섯 번째'는 실제 악용이 확인된 제로데이 기준이다. 올해 크롬 보안 패치 전체 건수와는 다르다.
출처
- The Hacker News — Google releases Chrome update to patch actively exploited V8 zero-day
- Help Net Security — Google patches actively exploited Chrome zero-day (CVE-2026-85046)
- Security Affairs — Google fixes the sixth actively exploited Chrome zero-day of 2026
- SOC Prime — CVE-2026-85046: Chrome V8 zero-day exploited
- TechTimes — Chrome patches sixth zero-day of 2026 as V8 compiler exploit hits wild