CVE-2026-111497 (node2shell) 분석
Node.js가 자기 안에 품고 있던 Brotli 압축 해제기에서, 잘못 만든 압축 데이터 하나가 메모리 경계 밖에 쓰기를 일으킬 수 있었습니다. Node.js는 이를 "원격 코드 실행(RCE)을 허용"하는 High 취약점으로 분류했습니다. 이 글은 실제 패치 커밋을 열어, 패치가 정확히 무엇을 바꿨는지(그리고 공개된 범위에서 무엇이 아직 모르는 부분인지)를 정직하게 가려 봅니다.
Node.js가 자기 안에 품고 있던 Brotli 압축 해제기에서, 잘못 만든 압축 데이터 하나가 메모리 경계 밖에 쓰기를 일으킬 수 있었습니다. Node.js는 이를 "원격 코드 실행(RCE)을 허용"하는 High 취약점으로 분류했습니다. 이 글은 실제 패치 커밋을 열어, 패치가 정확히 무엇을 바꿨는지(그리고 공개된 범위에서 무엇이 아직 모르는 부분인지)를 정직하게 가려 봅니다.
공개 저장소에 올린 .org 문서 파일 하나로, 로그인 없이 GitLab 서버에서 코드를 실행할 수 있었습니다. 원인은 멀리 있지 않았습니다 — 사용자가 적어 넣은 한 "단어"가 그대로 정규식(regular expression)이 되어, 정규식 엔진 안의 16비트짜리 작은 칸을 넘겨 버린 것입니다. 이 글은 공개된 org-ruby 소스와 GitLab이 직접 낸 탐지 문서를 열어, 이 CVSS 10.0 취약점의 근본원인·공격 흐름·영향을 우리 관점에서 분석합니다.
PHP는 요청마다 새로 뜨는 프로그램이 아닙니다. 워커(worker) 하나가 요청을 수백~수천 번 재사용합니다. 그래서 "이번 요청이 끝나면 전부 치운다"는 전제가 깨지는 순간, 지난 요청의 메모리가 다음 요청에 그대로 남을 수 있습니다. 이 글은 2026년 10월 21일 PHP가 긴급 패치한 두 취약점 — 메모리 부족(OOM) 처리 중 상태가 망가지는 CVE-2026-109618과, 요청이 끝나도 전역 상태가 리셋되지 않는 CVE-2026-109619 — 를 GHSA와 실제 패치 커밋을 직접 열어 분석합니다. 둘 다 애플리케이션 코드가 한 줄도 실행되기 전에 터지는 미인증 원격 코드 실행(RCE)입니다.
브라우저는 웹 페이지를 격리된 샌드박스 안에서 렌더링해, 악성 사이트가 운영체제에 손대지 못하게 막습니다. 이 취약점은 Chrome의 UI·창 관리 계층인 Aura에서 이미 해제된 객체를 다시 사용하는 결함(use-after-free)입니다. 조작된 HTML 페이지를 여는 것만으로 그 재사용을 유발해, 원격 공격자가 샌드박스 **바깥**에서 코드를 실행할 가능성이 있습니다. 흥미로운 점은 Chromium 자체 등급은 "Medium"인데 NVD의 CVSS 점수는 9.6 Critical이라는, 두 평가 체계의 간극입니다.
브라우저는 신뢰할 수 없는 웹페이지를 샌드박스라는 격리 상자 안에서 실행합니다. 그 상자 안에서 그래픽을 그리는 WebGL 코드가 경계 밖으로 한 번 잘못 쓰면, 상자 자체가 깨질 수 있습니다. 이번 취약점은 조작된 HTML 페이지 하나로 Chrome의 WebGL에서 메모리 경계 밖 쓰기를 일으켜, **샌드박스 바깥에서** 임의 코드 실행으로 이어질 수 있는 결함으로 보고됐습니다.
스위치는 네트워크의 배관입니다. 배관을 쥐면 그 위를 흐르는 모든 것을 본다는 뜻이라, 관리 인터페이스는 특히 단단해야 합니다. Zyxel GS1900 시리즈 스마트 스위치의 웹 관리 프로그램은 그 반대였습니다. 인증 없이 보낸 한 번의 과대 HTTP 요청이 고정 크기 스택 버퍼를 넘겨, LAN 인접 공격자가 장비에서 OS 명령을 실행할 수 있었습니다. 패치가 나온 뒤에도 미패치 장비가 실환경에서 대량으로 침해됐습니다.
파일 업로드 필터는 대개 "이 확장자는 허용, 저 확장자는 금지"라는 목록 하나에 기댑니다. 문제는 그 목록을 만드는 방식이 느슨할 때 생깁니다. WordPress용 "Drag and Drop File Upload for Elementor Forms" 플러그인은 어떤 확장자를 허용할지를 **요청 파라미터로 받아** 목록에 넣었고(공식 advisory 기준 `type` 파라미터가 MIME 허용목록 키로 쓰이는 점이 근본), 그 목록을 만드는 절차의 빈틈이 겹쳐 검사를 우회할 수 있었습니다. 그 결과 로그인하지 않은 공격자가 PHP 파일을 올려 서버에서 코드를 실행할 수 있었습니다.
오픈소스 CRM SuiteCRM의 ''예약 리포트(Scheduled Reports)'' 모듈이, 이메일 수신자 목록을 저장하는 필드 하나를 검증 없이 역직렬화(unserialize)해 PHP 객체 주입(PHP Object Injection)으로 이어지는 CVSS 8.8의 원격코드실행 취약점입니다(CVE-2022-23940, CWE-502). 다만 원격·비인증이 아니라, 예약 리포트를 만들 수 있는 인증된 계정이 전제조건입니다. 이 글은 벤더 권고문·NVD·SuiteCRM 오픈소스를 취약 버전(7.12.4)과 패치 버전(7.12.5) 태그 기준으로 직접 대조해, ''왜 배열 검사가 있었는데도 뚫렸는지'' 프레임워크 차원의 근본원인을 재구성합니다.