CVE-2026-87455 (Google Chrome Aura Use-After-Free) 분석

분류: CVE · 브라우저·클라이언트 · RCE · CVE-2026-87455 · [표준]

브라우저는 웹 페이지를 격리된 샌드박스 안에서 렌더링해, 악성 사이트가 운영체제에 손대지 못하게 막습니다. 이 취약점은 Chrome의 UI·창 관리 계층인 Aura에서 이미 해제된 객체를 다시 사용하는 결함(use-after-free)입니다. 조작된 HTML 페이지를 여는 것만으로 그 재사용을 유발해, 원격 공격자가 샌드박스 바깥에서 코드를 실행할 가능성이 있습니다. 흥미로운 점은 Chromium 자체 등급은 “Medium”인데 NVD의 CVSS 점수는 9.6 Critical이라는, 두 평가 체계의 간극입니다.

개요

Chrome은 각 웹 페이지를 제한된 권한의 렌더러 프로세스 안에서 처리하고, 그 프로세스가 시스템에 직접 닿지 못하도록 샌드박스로 가둡니다. 이 취약점의 무게는 바로 그 샌드박스를 넘어설 수 있다는 데 있습니다. 조작된 HTML 페이지를 열도록 사용자를 유도하면(사용자 상호작용 필요), 원격·무인증 공격자가 Aura 계층의 use-after-free를 유발해 샌드박스 밖에서 임의 코드를 실행할 가능성이 있습니다.

근본은 해제 후 사용(CWE-416, Use After Free)으로 분류됩니다. ⚠️미확인(팩트체크 대상) — CWE 매핑은 리서치 재료(집계 사이트) 기준이며 NVD 원본 대조 대상입니다.

  • 영향 범위: 153.0.8010.36 미만 전체의 데스크톱 Chrome(Windows·macOS·Linux). ⚠️미확인 — 리서치 재료 기준, 팩트체커가 NVD·Chrome Releases 원문에서 대조해야 합니다.
  • 수정 버전: 153.0.8010.36 이상. ⚠️미확인 — 다수 집계 출처가 일치했으나 벤더(Chrome Releases) 원문과의 최종 대조가 필요합니다.
  • CVSS: 3.1 기준 9.6 (Critical), 벡터 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H. ⚠️미확인 — 이 점수·벡터는 NVD/CNA-ADP(CISA) 값으로, 아래 벤더 등급과 갈립니다.
  • Chromium 자체 심각도: Medium (Google/Chromium 팀 등급). ⚠️미확인 — 집계 사이트 기준. CVSS 9.6과 이 “Medium”은 서로 다른 평가 체계이며, 같은 것으로 섞어 쓰면 안 됩니다(아래 별도 절 참조).
  • 취약 컴포넌트: Aura — Chromium의 크로스플랫폼 창·이벤트 추상화 계층. ⚠️미확인 — 컴포넌트명은 리서치 재료 기준.
  • 선행 조건: 원격, 사용자 상호작용 필요(조작된 HTML 페이지 방문, UI:R), 무인증(PR:N). 샌드박스 경계를 넘으므로 스코프 변경(S:C).
  • 공개일: 2026-09-09(예약 09-08, 갱신 09-10). ⚠️미확인 — 리서치 재료 기준. 보고자 크레딧·바운티 금액은 확인되지 않았습니다(⚠️미확인 — Chrome 공지 본문 미획득).

한 줄 요약: “브라우저가 이미 반납한 메모리를 다시 붙잡아 쓰면, 페이지 한 장이 샌드박스의 벽을 넘는 지렛대가 된다” — UI 계층의 객체 수명(lifetime) 관리 실수가 격리의 마지막 벽까지 흔든 사례입니다.

기술 배경 — Aura, 샌드박스, 그리고 use-after-free

Aura가 무엇인가. Chromium은 Windows·macOS·Linux에서 창을 그리고 마우스·키보드 이벤트를 다루는 방식이 제각각인 문제를, Aura라는 공통 계층으로 추상화합니다. 창·위젯·이벤트를 하나의 모델로 다뤄, 상위 UI 코드가 운영체제별 차이를 신경 쓰지 않게 해 주는 부분입니다. 소스는 공개 저장소 chromium/src의 ui/aura/ 아래에 있습니다.

샌드박스가 무엇인가. Chrome은 웹 페이지를 처리하는 렌더러를 낮은 권한의 프로세스에 가두고, 시스템 자원 접근을 강하게 제한합니다. 악성 페이지가 렌더러를 장악하더라도 그 프로세스 밖으로 나가지 못하게 하는 것이 목적입니다. 그래서 “샌드박스 바깥에서 코드 실행”은 브라우저 취약점 중에서도 무게가 큰 결과입니다.

use-after-free가 무엇인가. 프로그램이 어떤 객체가 쓰던 메모리를 해제(free)한 뒤에도, 그 객체를 가리키던 낡은 포인터로 다시 접근하면 해제 후 사용이 됩니다. 그 메모리에는 이미 다른 데이터가 들어와 있을 수 있어, 공격자가 그 자리를 원하는 값으로 채워 두면 프로그램의 흐름을 자기 쪽으로 틀 수 있습니다. UI 계층에서는 창·위젯이 닫히거나 이벤트가 비동기로 도착하는 과정에서 객체 수명이 어긋나기 쉬워, 이런 결함이 반복해서 나옵니다.

CVE 분석 요약 — 어느 판단이 원인인가

⚠️중요 제약 — 패치 커밋 SHA·취약 파일·함수를 공개 출처에서 확보하지 못했습니다. Chrome/Chromium은 보안 버그 공개 시점에 CVE별 커밋 SHA와 정확한 파일 경로를 공표하지 않으며, 해당 이슈 트래커 항목은 접근이 제한된 상태입니다(보안 버그는 다수 사용자가 업데이트할 때까지 비공개). 따라서 이 글은 고정 SHA·파일·라인번호를 제시하지 않습니다(지어내지 않습니다). 아래는 리서치 재료가 여러 출처에서 교차 확인한 취약점의 성격에 대한 서술이며, 이 CVE의 실제 취약 코드 인용이 아닙니다.

리서치 재료 기준, 공개적으로 확인되는 것은 다음과 같습니다(모두 ⚠️미확인 — 소스 대조 불가).

  • 결함 유형: Aura 계층 내 use-after-free. 해제된 객체를 가리키는 포인터를 통해 메모리에 다시 접근하는 구조입니다.
  • 유발 경로: 조작된 HTML 페이지가 Aura가 관리하는 창·위젯·이벤트 객체의 수명을 어긋나게 만들어, 해제된 뒤에도 참조가 남게 유도하는 것으로 보입니다(우리 추정 — 정확한 트리거는 비공개).
  • 결과: 재사용된 메모리를 공격자가 제어하면 렌더러 흐름을 장악하고, 나아가 Aura가 브라우저 프로세스 쪽에 걸쳐 있는 성격 때문에 샌드박스 경계를 넘을 가능성(스코프 변경, S:C)이 있습니다.

아래는 use-after-free의 일반 원리를 개념적으로 재구성한 것입니다. 이 CVE의 실제 소스가 아니며, Aura의 특정 코드도 아닙니다.

// 개념용 단순화, 실제 페이로드/원본 코드 아님 (이 CVE의 취약 코드가 아님)
Widget* w = get_active_widget();     // (1) 객체 획득
close_and_delete(w);                 // (2) 어떤 경로에서 객체가 해제됨(free)
// ... 비동기 이벤트/콜백이 낡은 포인터를 들고 도착 ...
w->handle_event(evt);                // (3) 해제된 객체를 다시 사용 → use-after-free
                                     //     (2)와 (3) 사이에 그 메모리가 재점유되면
                                     //     공격자 제어 데이터로 흐름이 바뀔 수 있음

핵심은 객체의 수명(누가 언제 해제하는가)과 그 객체를 참조하는 경로(이벤트·콜백)가 어긋난다는 점입니다. UI 계층은 창이 닫히고 이벤트가 비동기로 도는 특성상 이런 어긋남이 나기 쉽고, 그 결과가 샌드박스 탈출까지 닿을 수 있어 위험도가 높게 매겨집니다.

패치(요지, ⚠️미확인): 리서치 재료 기준 수정 버전은 153.0.8010.36으로 보이나, 커밋 diff를 공개 출처에서 확인할 수 없습니다. 이 부류 결함의 통상적 수정은 (a) 객체 소유권·수명을 명확히 하는 스마트 포인터/약참조 도입, (b) 해제 시점에 남은 참조를 무효화, (c) 이벤트·콜백이 이미 소멸된 객체를 만지지 않도록 방어하는 방향일 것입니다(우리 분석·추정, 팩트로 제시하지 않음).

등급이 갈린다 — “Medium”과 9.6 Critical은 다른 자다

이 CVE에서 반드시 짚어야 할 것은 두 심각도 표기가 서로 다른 체계라는 점입니다. Google/Chromium 팀이 붙인 자체 등급은 Medium인 반면, NVD·CNA-ADP가 산정한 CVSS 점수는 9.6 Critical입니다.

이 둘은 모순이 아니라 측정 대상이 다릅니다. Chromium의 자체 severity(Low/Medium/High/Critical)는 벤더가 익스플로잇 난도·기본 완화·실제 도달 가능성 등을 종합해 매기는 내부 등급입니다. 반면 CVSS는 결과의 최악값(샌드박스 밖 코드 실행 = 기밀성·무결성·가용성 모두 High, 스코프 변경)을 기계적으로 벡터로 환산합니다. 그래서 “결과가 심각하나 유발 조건이 까다로운” 브라우저 버그는 CVSS가 벤더 자체 등급보다 높게 나오는 일이 흔합니다.

독자에게 실무적 함의: Chrome 공지에 “Medium”이라 적혀 있다고 해서 방치해도 되는 버그가 아닙니다. 결과는 샌드박스 탈출급이므로 업데이트 우선순위는 높게 잡는 것이 안전합니다. 반대로 CVSS 9.6만 보고 “실제로 원격에서 손쉽게 뚫린다”고 단정해서도 안 됩니다 — 사용자 상호작용이 필요하고(UI:R), 실제 안정적 익스플로잇은 별개의 난도입니다(우리 논평).

공격 시나리오 · 영향도 + 대응방안

공격 시나리오 (단계 압축, 완성형 페이로드 없음):

  1. 공격자가 조작된 HTML 페이지를 준비하고, 피해자가 취약 버전 Chrome으로 그 페이지를 열도록 유도합니다(악성 링크·광고·워터링홀 등). 로그인은 필요 없습니다.
  2. 페이지가 Aura가 관리하는 UI 객체의 수명을 어긋나게 만들어, 해제된 객체가 다시 참조되는 상황을 유발합니다.
  3. 재사용된 메모리를 공격자 제어 데이터로 채워 실행 흐름을 장악하고, 샌드박스 경계를 넘어 코드를 실행할 가능성으로 이어집니다.

영향도: 확인된 성격은 원격·무인증 공격자가 사용자 상호작용을 매개로 유발하는 use-after-free이며, 성공 시 샌드박스 밖 임의 코드 실행 가능성입니다(CVSS 기밀성·무결성·가용성 모두 High, 스코프 변경). 다만 이 CVE에 대한 실제 악용 관측은 보고되지 않았습니다(⚠️미확인 — 다만 같은 릴리스에서 별도로 실제 악용된 0-day가 있으니 아래 혼동 주의 참조). 안정적 익스플로잇은 사용자 상호작용과 메모리 배치 조건에 달려 있습니다.

대응방안:

  1. 근본: Chrome을 수정 버전(153.0.8010.36 이상)으로 업데이트합니다(⚠️미확인·재확인 필요 — 벤더 Chrome Releases 공지에서 정확한 안전 버전 확인). Chrome은 자동 업데이트되지만, 적용은 브라우저를 완전히 재시작해야 완료됩니다. 조직에서는 최신 stable 채널로의 강제 배포를 점검합니다.
  2. 차선(즉시 업데이트 불가 시):
    • 신뢰할 수 없는 링크·페이지 방문을 자제하고, 사용자 교육으로 조작된 페이지 클릭을 줄입니다(이 취약점은 UI:R, 즉 사용자 동작이 매개입니다).
    • 광고·스크립트 차단, 격리 브라우징(별도 프로필·컨테이너) 등으로 노출 표면을 줄입니다.
    • Chromium 계열 다른 브라우저(Edge·Brave 등)도 같은 Aura 코드를 공유할 수 있으므로, 각 벤더의 대응 버전 배포 여부를 함께 확인합니다(⚠️미확인 — 파생 브라우저 영향은 각 벤더 공지 확인 필요).
  3. 탐지 관점: 조직 환경에서는 구버전 Chrome이 남아 있는 엔드포인트를 인벤토리로 식별하고 강제 업데이트를 유도합니다. 브라우저 크래시(렌더러 비정상 종료) 급증은 메모리 손상 유발 시도의 신호일 수 있으므로, 크래시 리포트를 모니터링합니다.

결론

브라우저의 샌드박스는 마지막 벽입니다. 그 벽을 세우는 것도, 흔드는 것도 결국 UI 계층이 객체를 언제 놓아주느냐 하는 사소해 보이는 판단입니다.

이 부류의 사고가 반복되는 이유는 분명합니다. UI·창 관리 계층은 창이 닫히고 이벤트가 비동기로 도는 특성상 객체 수명과 참조 경로가 어긋나기 쉽고, 그 어긋남 하나가 메모리 손상을 거쳐 샌드박스 탈출까지 닿을 수 있기 때문입니다. Chrome이 매 릴리스마다 use-after-free를 다수 고치는 것도 같은 이유입니다. 이 결함은 우리가 다룬 다른 해제 후 사용(CWE-416) 계열, 그리고 메모리 안전 언어로의 이행 논의와 같은 뿌리를 공유합니다. 정석은 소유권·수명을 타입 수준에서 강제하고(스마트 포인터·약참조), 다층 방어로 렌더러 장악이 곧 시스템 장악이 되지 않게 하는 것입니다. 이 한 버그는 업데이트로 닫히겠지만, “객체를 놓아준 뒤에도 누군가 그 손잡이를 쥐고 있지 않은지”라는 질문은 다음 창, 다음 이벤트 루프에서 또 시험대에 오릅니다. 그래서 우리는 도구가 아니라 방법을 남깁니다.

References / 참고자료

  1. NVD, “CVE-2026-87455 Detail” — 이 글이 재구성한 1차 정본(취약점 설명·CVSS·CWE). 리서치 단계에서 JS 렌더로 본문 미획득, 식별자·존재만 확인. 팩트체크 재확인 대상. https://nvd.nist.gov/vuln/detail/CVE-2026-87455
  2. Chrome Releases (Google), “Stable Channel Update for Desktop” — 벤더 advisory 원문(수정 버전·Chromium 자체 등급 정본). ⚠️정확한 URL은 출처 간 변형이 있어(문서 하단 참조) 발행 전 재확인 필요. https://chromereleases.googleblog.com/2026/09/stable-channel-update-for-desktop_0808145027.html
  3. Chromium Issue Tracker, issue 542565481 — 해당 보안 버그 항목(접근 제한 상태, 본문 미확보 — 존재만 확인). https://issues.chromium.org/issues/542565481
  4. OpenCVE, “CVE-2026-87455” — 제품·버전·CWE-416·CVSS·컴포넌트(Aura) 교차 확인. https://app.opencve.io/cve/CVE-2026-87455
  5. OSV / Debian, “DEBIAN-CVE-2026-87455” — 영향/수정 버전 교차 확인. https://osv.dev/vulnerability/DEBIAN-CVE-2026-87455
  6. THREATINT, “CVE-2026-87455” — CVSS 벡터·CWE·타임라인(공개일) 교차 확인. https://cve.threatint.com/CVE/CVE-2026-87455

이 글은 위 원 자료를 우리 관점에서 다시 쓰고 논평을 더한 것입니다. 특정 문장·코드를 그대로 옮기지 않았으며, 자세한 재현 절차는 원문을 참고하세요. 이 CVE는 패치 커밋 SHA·취약 파일/함수가 공개되지 않아(이슈 트래커 접근 제한 + 벤더 미공표), 코드 인용은 use-after-free 일반 원리의 개념 재구성이며 파일/라인 단정을 하지 않았습니다. ⚠️미확인 표시가 붙은 사실 주장(특히 영향/수정 버전·CWE·CVSS 벡터·컴포넌트·근본원인·공개일)은 발행 전 독립 팩트체크로 1차출처 대조가 끝나야 확정됩니다. 혼동 주의: CVE-2026-79290도 “Use after free in Aura”에 CVSS 9.6으로 매우 유사하나 별개 CVE입니다. 또한 같은 153.0.8010.36 릴리스에서 실제 악용된 0-day는 CVE-2026-87491(별개)이며, 본건(87455)은 악용 보고가 없습니다. Chrome Releases 벤더 URL은 ..._0808145027.html과 ..._01882797386.html 두 변형이 관측되어 발행 전 확인이 필요합니다.