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)입니다.
오픈소스 PBX 소프트웨어 Issabel의 웹 프레임워크(Issabel Framework)가 REST API 인증에 쓰는 JWT 서명 키를 소스코드에 상수로 박아두고 전 설치가 동일하게 사용해온 결함입니다(CVSS 9.8). 이 글은 취약 버전의 실제 소스와 패치 커밋을 직접 열어, "검증 로직은 멀쩡한데 왜 뚫리는가"를 코드 레벨로 분석합니다.
Issabel, an open-source PBX (private branch exchange) platform, ships a REST API whose JWT signing key was a literal string baked into the source code and shared by every installation (CVSS 9.8). This post opens the vulnerable source and the patch commit directly to explain why perfectly ordinary-looking signature verification code still failed.
WSO2 API Manager 등 4개 제품의 REST API 인증에서, 지원되지 않는 서명 알고리즘의 JWT가 만드는 예외를 인터셉터가 그냥 삼켜버려 인증 자체가 우회되는 취약점입니다(CVSS 3.1 = 10.0/9.8). 이 글은 원 어드바이저리를 재구성하고, 취약 버전의 실제 소스와 패치 diff를 직접 열어 "검증 로직은 멀쩡한데 왜 뚫리는가"를 코드 레벨로 분석합니다.
REST API authentication in WSO2 API Manager and three sibling products silently swallows the exception raised by an unsupported JWT signing algorithm, letting the request through unauthenticated (CVSS 3.1 = 10.0 / 9.8). This piece reconstructs the vendor advisory and reads the vulnerable source and the patch diff directly to explain, at the code level, why a signature check that clearly rejects the token still fails to stop the request.
포럼 소프트웨어 MyBB의 관리자 컨트롤 패널(ACP) 설정 관리 기능에서, "타입이 php로 시작하는지"를 저장할 때 한 번, 화면에 그릴 때 또 한 번 서로 다른 규칙으로 검사한 탓에 두 검사가 어긋나는 값이 존재합니다(CVSS 7.2, CWE-94). 이 값을 통과시키면 설정값의 나머지 부분이 검증 없이 eval()에 그대로 들어가 실행됩니다. 다만 이 취약점은 "설정 관리" 권한을 가진 인증된 관리자만 트리거할 수 있는 post-auth RCE입니다 — 비인증 공격자가 바로 서버를 장악하는 구조는 아닙니다. 이 글은 MyBB 오픈소스 저장소의 실제 취약 커밋(태그 mybb_1829)과 공식 패치 커밋을 직접 대조해 근본원인과 흐름을 분석합니다.
오픈소스 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) 태그 기준으로 직접 대조해, ''왜 배열 검사가 있었는데도 뚫렸는지'' 프레임워크 차원의 근본원인을 재구성합니다.
500만 개 이상 사이트에 깔린 워드프레스(WordPress) 페이지 빌더 Elementor가, 로그인만 한 최하위 권한(Subscriber) 계정에게도 관리자 전용 기능을 통째로 열어준 사건입니다(CVE-2022-1329, CVSS 8.8). 문을 여는 열쇠는 새로 만든 게 아니라, 이미 모든 로그인 사용자에게 나눠준 열쇠(nonce)를 관리자용 열쇠로 착각해서 받아준 것이었습니다. 이 글은 원 발견자(Wordfence)의 분석을 재구성하고, Elementor의 실제 오픈소스를 고정 커밋 기준으로 직접 열어 근본원인·호출 흐름·패치를 분석합니다.
Jenkins 내장 명령줄 인터페이스(CLI)의 인자 파서에서 발생한 CVSS 9.8 임의 파일 읽기 취약점(CVE-2024-23897)입니다. 인증 없이도 실행되는 두 명령과, 그 인자 파싱 단계에 기본으로 켜져 있던 '파일 대신 읽기' 기능이 만나는 지점을 실제 오픈소스 코드와 패치 커밋을 대조해 분석합니다.
리눅스 커널 넷필터(netfilter)의 nf_tables 컴포넌트에서, 패킷을 '버리라(drop)'는 판정값 하나가 동시에 '받아들이라(accept)'는 판정으로도 읽히는 CVSS 7.8의 더블프리(double-free) 취약점입니다(CVE-2024-1086). 2014년에 들어간 코드 한 줄이 10년 뒤인 2024년에야 되돌려졌고, 2024년 5월 CISA 긴급취약점 목록(KEV)에 등재된 데 이어 2025년 10월에는 실제 랜섬웨어 공격에 쓰인 사실이 확인됐습니다. 이 글은 원 발견자(Notselwyn)의 분석을 재구성하고, 실제 리눅스 커널 오픈소스를 고정 커밋 기준으로 직접 열어 근본원인·호출 흐름·패치를 분석합니다.
CVE-2022-0847, 이름하여 'Dirty Pipe'는 리눅스 커널의 파이프 버퍼 구조체가 재사용될 때 flags 필드를 초기화하지 않아, 읽기전용 파일의 페이지캐시를 일반 사용자가 직접 덮어쓸 수 있게 된 권한상승 취약점입니다. 이 글은 발견자 본인의 공개 기술 문서를 재구성하고, 실제 커널 소스와 딱 두 줄짜리 패치 커밋을 라인 단위로 직접 대조해 근본원인과 흐름을 분석합니다.
CVE-2021-4034(PwnKit)는 리눅스 polkit의 SUID-root 프로그램 pkexec가 인자 개수(argc)가 0인 호출을 검증하지 않아, 존재하지 않는 인자 자리를 읽고 쓰다 환경변수 배열을 침범하는 로컬 권한상승 취약점입니다. 2009년부터 있었던 이 결함은 2022년 공개 직후 실제 악용이 확인돼 CISA 긴급 대응 목록에 올랐습니다. 이 글은 원 분석을 재구성하고, polkit의 실제 소스와 패치 커밋을 고정 커밋 SHA 기준으로 직접 열어 근본원인·흐름·영향을 우리 관점에서 분석합니다.
React2Shell(CVE-2025-55182) — 인증 없이 요청 한 번으로 서버에서 임의 코드가 실행되는 CVSS 10.0 취약점. 왜 성립하는지를 코드가 도는 순서대로 분석합니다.
fast-jwt(CVE-2026-34950) — 약 2년 4개월 전 패치된 JWT 알고리즘 혼동 공격이, 공개키 앞의 공백 한 글자로 그대로 되살아났습니다. 이 글은 공개된 권고문과 오픈소스 저장소의 실제 커밋을 직접 대조해, 왜 첫 패치가 불완전했는지를 우리 관점에서 분석합니다.
CVE-2024-0517 — Chrome V8의 JIT 컴파일러 Maglev가 클래스 상속을 최적화하다 힙 경계를 벗어나 쓰는 취약점입니다. 이 글은 원 분석을 재구성하고, 할당 최적화와 가비지 컬렉션이 왜 서로의 규칙을 몰랐는지를 코드 흐름을 따라 직접 분석합니다.
Apache Struts 2 파일 업로드 처리에서 발생한 CVSS 9.8 경로순회 취약점(CVE-2023-50164 · S2-066)입니다. 정제된 파일명과 공격자가 심은 원본 파일명이 대소문자만 다른 이름으로 나란히 살아남는 지점을, 실제 오픈소스 코드와 패치 커밋을 대조해 분석합니다.