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)입니다.
무인증 원격 요청 하나가 TOTOLINK A3002MU 라우터의 웹 관리 인터페이스(Boa 서비스)를 응답 불능으로 만듭니다. 무선 WDS 설정 핸들러가 사용자 입력 길이를 확인하지 않고 고정 크기 버퍼로 복사하면서 생긴 고전적 경계 위반입니다. CVSS는 v3.1 기준 최고 등급 10.0으로 매겨졌지만 연구자 원 PoC에서 실증된 것은 서비스 마비(DoS)까지이며, 그 간극이 이 글의 논점입니다.
임베디드 네트워크 장비의 관리 CGI가 사용자 입력을 셸(shell)에 그대로 흘려보내면, 인증된 관리자 화면 하나가 곧 웹 서버 프로세스 권한의 원격 명령 실행 통로가 됩니다. 이번 CVE-2026-90847은 EFM Networks의 ipTIME C200E(제조사 분류상 IP 카메라) 펌웨어 1.094에서, 시스템 설정 처리를 담당하는 `iux_set.cgi`가 바로 그 실수를 저지른 사례로 보고되었습니다. 공개 시점 기준 확인된 수정 펌웨어는 없고, 개념 증명(PoC, Proof-of-Concept)은 이미 외부에 공개된 상태입니다.
가정용 기가 무선 공유기 Totolink A3002MU의 관리 웹서버에서, IPv6 설정을 저장하는 요청 하나가 고정 크기 버퍼를 넘겨 씁니다. 인증된 사용자가 `static_ipv6` 값을 길게 밀어 넣으면 웹서버 프로세스가 무너지고, 관리 화면이 마비됩니다. 오래된 임베디드 웹 스택에서 되풀이되는 "입력 길이를 안 재고 복사하는" 고전적 실수의 최신 사례입니다.
방문자가 남긴 별점 후기 한 줄이, 레시피 페이지가 다시 그려질 때마다 서버에서 숏코드로 실행됩니다. WordPress 요리 플러그인 WP Recipe Maker가 후기 본문을 구조화 데이터에 넣기 전에 숏코드를 "지우는" 대신 "실행"하면서 벌어진 일입니다. 계정도 필요 없고, 후기가 한 번 승인되기만 하면 그 뒤로는 모든 방문자에게 자동으로 트리거됩니다.
브라우저는 웹 페이지를 격리된 샌드박스 안에서 렌더링해, 악성 사이트가 운영체제에 손대지 못하게 막습니다. 이 취약점은 Chrome의 UI·창 관리 계층인 Aura에서 이미 해제된 객체를 다시 사용하는 결함(use-after-free)입니다. 조작된 HTML 페이지를 여는 것만으로 그 재사용을 유발해, 원격 공격자가 샌드박스 **바깥**에서 코드를 실행할 가능성이 있습니다. 흥미로운 점은 Chromium 자체 등급은 "Medium"인데 NVD의 CVSS 점수는 9.6 Critical이라는, 두 평가 체계의 간극입니다.
브라우저는 신뢰할 수 없는 웹페이지를 샌드박스라는 격리 상자 안에서 실행합니다. 그 상자 안에서 그래픽을 그리는 WebGL 코드가 경계 밖으로 한 번 잘못 쓰면, 상자 자체가 깨질 수 있습니다. 이번 취약점은 조작된 HTML 페이지 하나로 Chrome의 WebGL에서 메모리 경계 밖 쓰기를 일으켜, **샌드박스 바깥에서** 임의 코드 실행으로 이어질 수 있는 결함으로 보고됐습니다.
인증 없이, 같은 네트워크에 붙어 있기만 하면 라우터의 DHCP 서버를 스택 오버플로로 무너뜨릴 수 있는 취약점입니다. 문제의 코드는 표준 DHCP 파싱이 아니라 D-Link가 관리용으로 덧붙인 **TR-111 Option 125** 처리부에 있습니다. 그리고 대상 기기는 이미 지원이 끝난(EOL) 제품이라 **고쳐줄 패치가 나오지 않습니다** — 그래서 이 글은 "언제 고쳐지나"가 아니라 "왜 이런 자리에서 같은 버그가 반복되나"에 관한 기록입니다.
템플릿 엔진에 "이 언어로 표시해 주세요"라고 부탁하는 값 하나가, 알고 보니 파일 경로의 일부로 그대로 이어붙여지고 있었습니다. Apache FreeMarker는 사용자 언어(locale)에 맞는 템플릿을 자동으로 찾아주는 기능에서, 그 언어 이름을 검증 없이 경로에 삽입했습니다. 언어 이름 자리에 `..`를 채워 넣을 수 있다면, 그건 더 이상 언어 이름이 아니라 경로 탈출 명령이 됩니다.
셀카(셀피) 사진으로 로그인하게 해 주는 워드프레스 플러그인 하나가 "무인증 인증 우회" 결함으로 공개됐습니다. 이 플러그인은 **자기가 로그인시켜 달라고 요청받은 신원이 진짜인지 서버에서 전혀 확인하지 않아서**, 아무 권한 없는 공격자가 **관리자를 포함한 어떤 등록 계정으로든** 로그인할 수 있습니다. 로그인의 겉모습(얼굴 인식)은 화려한데, 그 얼굴이 실제로 통과했는지 확인하는 문지기가 빠진 사례입니다.
워드프레스 소셜 로그인 플러그인 하나가 "무인증 인증 우회" 결함으로 공개됐습니다. 문제의 로그인 처리부에는 **인증·인가·논스(요청 위조 방지 토큰) 검사가 하나도 없어서**, 아무 권한 없는 공격자가 그 처리부를 그대로 호출하는 것만으로 다른 사용자의 유효한 로그인 세션을 손에 넣습니다. 로그인의 UX만 붙였을 뿐, 그 로그인이 진짜인지 확인하는 문지기를 빼먹은 사례입니다.
ServiceNow AI Platform에서, 인증 없이도 네트워크로 임의 SQL 문을 실행할 수 있는 틈이 보고됐습니다. 문제가 지목된 자리는 인스턴스마다 달라지는 "동적 스키마"를 다루는 쿼리의 정렬(ORDER BY) 절입니다. 사용자 입력이 이 절에 충분히 걸러지지 않은 채 들어가면서, 쿼리의 구조 자체를 공격자가 바꿀 수 있게 됩니다. ServiceNow는 다수 기업이 업무 데이터를 올리는 SaaS(Software-as-a-Service, 클라우드 구독형 소프트웨어) 플랫폼이라, 이런 틈은 개별 커스터마이징 문제가 아니라 플랫폼 전반의 데이터 신뢰 기준을 흔듭니다.
스위치는 네트워크의 배관입니다. 배관을 쥐면 그 위를 흐르는 모든 것을 본다는 뜻이라, 관리 인터페이스는 특히 단단해야 합니다. Zyxel GS1900 시리즈 스마트 스위치의 웹 관리 프로그램은 그 반대였습니다. 인증 없이 보낸 한 번의 과대 HTTP 요청이 고정 크기 스택 버퍼를 넘겨, LAN 인접 공격자가 장비에서 OS 명령을 실행할 수 있었습니다. 패치가 나온 뒤에도 미패치 장비가 실환경에서 대량으로 침해됐습니다.
우리는 대개 "서버가 클라이언트를 조심해야 한다"고 배웁니다. 그런데 반대 방향도 위험합니다. 클라이언트가 서버(백엔드)의 지시를 무조건 믿으면, 그 서버가 공격자의 것일 때 클라이언트가 무너집니다. SAP GUI for Java는 연결된 백엔드가 부르는 특정 기능에 대해 신뢰 수준 정책을 제대로 강제하지 않았습니다. 그 결과 조작된 백엔드가 피해자의 워크스테이션에서 명령을 실행시킬 수 있었습니다.
큰 시스템일수록 내부 구성원끼리는 서로를 믿습니다. SAP NetWeaver의 애플리케이션 서버들은 "메시지 서버(Message Server)"라는 중앙 교환대에 자신을 등록하며 하나의 클러스터로 묶입니다. 그런데 이 교환대가 "등록하려는 쪽이 정말 우리 편인가"를 충분히 확인하지 않았습니다. 그 결과 로그인하지 않은 외부 공격자가 자기를 정당한 내부 컴포넌트인 척 등록해, 클러스터의 신뢰를 통째로 빌려 쓸 수 있었습니다. 연구자들은 이 결함에 **S4GET**이라는 이름을 붙였습니다.
Linux 커널에서 "이 패킷을 읽어도 안전하다"와 "이 패킷에 써도 안전하다"는 서로 다른 보증입니다. 브리지 방화벽(ebtables)의 출발지 MAC 변환(SNAT) 기능은 이더넷 헤더를 고칠 때는 쓰기 가능 여부를 확인했지만, 옵션으로 함께 고치는 ARP 본문 6바이트에는 같은 확인을 하지 않았습니다. 그 6바이트가 하필 파일에서 빌려 온 메모리 페이지 위에 놓여 있으면, 커널은 패킷이 아니라 그 페이지에 직접 값을 써 버립니다.
클러스터를 이루는 메시징 브로커들은 서로를 처음 찾아낼 때부터 신뢰 관계를 맺습니다. 문제는 "찾아내는 것"과 "인증하는 것"이 같은 순간에 일어나지 않을 때 생깁니다. Apache ActiveMQ Artemis는 브로커가 클러스터 피어를 discovery(자동 탐색)로 찾아 처음 연결을 맺는 바로 그 핸드셰이크 구간에서, 상대가 누구인지 확인하기 전에 관리자 자격증명이 오갈 수 있는 틈을 남겼습니다. 그 결과 네트워크에 발만 걸칠 수 있으면 로그인 없이도 클러스터 관리 자격증명을 가로챌 수 있었습니다.
엔드포인트 포렌식 도구 Velociraptor는 위험한 작업일수록 별도 권한(`EXECVE`)을 따로 요구하도록 설계돼 있습니다. 그런데 같은 작업을 "클라이언트 모니터링"이라는 다른 경로로 예약하면, 그 권한 검사 자체가 통째로 빠져 있었습니다. 검사관(investigator) 등급 정도의 제한된 계정으로 로그인한 사용자가 이 우회로를 타면, 감시 대상 엔드포인트에서 임의 명령을 실행할 수 있었습니다.
기업용 SaaS 플랫폼인 ServiceNow AI Platform(Now Platform)의 **GraphQL Composite Data API**에서, 인증 없이 크래프팅된 요청 하나로 서버 측 코드가 실행될 수 있는 취약점이 보고됐습니다. CVSS 최고점(v4.0 10.0)이 붙은 이유는 단순합니다 — 로그인도, 클릭 한 번도 필요 없이, 데이터를 조회·조합하라고 만든 API 자리에서 코드가 실행되기 때문입니다. 이 글은 GraphQL API가 "질의 언어"에서 "실행 경로"로 뒤집히는 이 부류의 사례로 이 CVE를 읽습니다.
파일 업로드 필터는 대개 "이 확장자는 허용, 저 확장자는 금지"라는 목록 하나에 기댑니다. 문제는 그 목록을 만드는 방식이 느슨할 때 생깁니다. WordPress용 "Drag and Drop File Upload for Elementor Forms" 플러그인은 어떤 확장자를 허용할지를 **요청 파라미터로 받아** 목록에 넣었고(공식 advisory 기준 `type` 파라미터가 MIME 허용목록 키로 쓰이는 점이 근본), 그 목록을 만드는 절차의 빈틈이 겹쳐 검사를 우회할 수 있었습니다. 그 결과 로그인하지 않은 공격자가 PHP 파일을 올려 서버에서 코드를 실행할 수 있었습니다.
오픈소스 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의 실제 오픈소스를 고정 커밋 기준으로 직접 열어 근본원인·호출 흐름·패치를 분석합니다.
AI가 코드를 대신 짜주는 플랫폼이 늘면서, 그 코드를 미리 보여주는 "정적 리소스 서빙" 엔드포인트가 새로운 공격면이 되고 있습니다. Yu AI Code Mother의 미리보기 엔드포인트는 사용자가 준 경로를 서버 파일시스템 경로에 그대로 이어 붙였고, 정규화도 상위 디렉토리 필터도 없었습니다. 그래서 인증조차 필요 없는 공격자가 `../`를 실어 미리보기 폴더 바깥의 파일을 읽어낼 수 있습니다.
관리자 화면을 지키는 첫 관문은 "이 사람이 로그인했는가"를 묻는 것입니다. Ebyte NA111-M의 웹 관리 인터페이스는 그 물음을 일관되게 던지지 않았습니다. 일부 관리 기능이 인증 확인을 거치지 않고 노출되어, 로그인조차 하지 않은 원격 공격자가 설정을 읽고 바꾸고 장치를 마비시킬 수 있습니다. 인증도 사용자 개입도 필요 없어 CISA는 이 결함에 CVSS 9.8을 매겼습니다.
로그인 검사를 브라우저에게 맡기면, 브라우저를 쓰지 않는 공격자는 검사를 통째로 건너뜁니다. Ebyte의 산업용 시리얼-이더넷 게이트웨이 두 종은 관리자 인증 판정을 서버가 아닌 클라이언트 쪽에 두었습니다. 그래서 미인증 원격 공격자가 그 판정 로직을 그대로 재현해 유효한 인증 요청을 만들고, 관리자 접근을 손에 넣을 수 있습니다. 인증도 사용자 개입도 필요 없어 CISA는 이 결함에 CVSS 9.8을 매겼습니다.
자격증명을 지키는 가장 기본적인 약속은 "선을 타고 흐르는 동안 아무도 못 읽는다"입니다. Ebyte NA111-M의 MQTT 통신은 그 약속을 하지 않았습니다. 브로커에 붙는 자격증명과 제어 트래픽이 암호화 없이 평문으로 오가서, 트래픽을 엿볼 수 있는 위치의 공격자가 로그인 정보를 그대로 주워 담고 장치를 사칭할 수 있습니다. 코드 한 줄의 버그가 아니라 전송 암호화를 넣지 않은 설계 자체가 원인입니다.
Apache Log4j2의 취약 버전은 로그 메시지 본문에서 ${...} 조회식(lookup)을 기본으로 해석했고, jndi 조회식(JndiLookup/JndiManager)이 스킴·호스트 검증 없이 원격 InitialContext#lookup 을 수행해, 공격자가 통제하는 문자열을 로그로 남기기만 해도 무인증 원격 코드 실행이 발생했습니다(Log4Shell). 영향 범위는 2.0-beta9부터 2.14.1까지이며, 2.15.0은 불완전 패치(CVE-2021-45046)라 안전 버전은 2.16.0 이상(백포트 2.12.2·2.12.3·2.3.1)입니다(CVSS 3.1 10.0 CRITICAL — NVD·GHSA 확인).
출력·인쇄 관리 소프트웨어 PaperCut NG/MF의 데이터베이스 연결 유틸리티가, 설정 가능한 드라이버 이름으로 DB 드라이버 클래스를 리플렉션으로 인스턴스화하면서 승인된 allowlist로 검증하지 않습니다. 그 결과 시스템 설정 파라미터를 조작할 수 있는 공격자가 클래스패스에 존재하는 임의 Java 바이트코드를 서버 권한으로 실행할 수 있습니다(안전하지 않은 리플렉션, NVD 확정 CWE-470). NVD 확정 등급은 CVSS 3.1 Base 9.1(CRITICAL, PR:H·S:C)이며, CISA KEV에 등재(등재일 2026-08-31)돼 실제 악용 중이고 공개 익스플로잇 모듈까지 존재합니다.
출력·인쇄 관리 소프트웨어 PaperCut NG/MF에서, 관리 기능을 겨냥한 무인증 원격 요청이 접근 검증이 완료되기 전에 백엔드 동작을 트리거해 공격자가 특정 시스템 설정을 변경할 수 있습니다(NVD 확정 분류 CWE-305 Authentication Bypass — 검사가 아예 없는 게 아니라 순서·경로가 우회되는 형태). NVD 확정 등급은 CVSS 4.0 Base 8.8(HIGH)이며, 안전 버전은 각 트랙에서 24.1.9 / 25.0.12 / 26.0.4 이상, MF·NG 둘 다 영향받습니다. 같은 날 공개된 형제 CVE-2026-82078은 CISA KEV에 등재됐습니다.
4MOSAn Security Technology의 4MOSAn GCB Doctor 제품에서, 운영 배포 시 제거됐어야 할 ADOdb 시험용(test) 페이지가 서버에 남아, 그 파라미터를 통해 인증받지 않은 원격 공격자가 임의의 시스템 명령을 실행할 수 있습니다(OS 커맨드 인젝션, CWE-78 계열). '지웠어야 할 진단용 자산을 안 지운' 배포 위생 실패와 셸로 흘러가는 미검증 입력이 겹친 자리로, 무인증·원격·임의 명령 실행이라는 가장 무거운 조합입니다.
EFM Networks의 ipTIME T24000M 유선 공유기의 웹 관리 인터페이스에서, 세션의 정당성을 판정하는 검증 핸들러 함수 `httpcon_check_session_url`이 요청을 제대로 판정하지 못해 원격 공격자가 정상 인증 없이 보호된 관리 기능에 도달할 수 있습니다(부적절한 인증, CWE-287 계열). 개별 페이지 하나의 버그가 아니라 세션 검증이라는 '문지기 코드' 자체가 우회되는 유형이라, 관리 인터페이스 전반의 접근 통제가 흔들립니다. 영향 버전은 14.20.0까지로 보고됐습니다(NVD 요약 기준).
리눅스·유닉스 계열 표준 권한 상승 도구 sudo의 set_cmnd() 함수에서, 명령줄 인자를 이스케이프하는 조건(MODE_RUN && MODE_SHELL)과 다시 풀어내는 조건(MODE_SHELL|MODE_LOGIN_SHELL)이 어긋나 힙 기반 버퍼 오버플로우가 발생합니다('Baron Samedit'). sudoedit -s 경로로 sudoers 등재 여부와 무관하게 인증 없는 로컬 계정 하나면 root 권한 상승까지 이어집니다. 취약 버전은 1.8.2~1.8.31·1.9.0~1.9.5p1, 수정 버전은 1.9.5p2 이상(1.8 계열은 1.8.32 이상)입니다(CVSS 3.1 7.8 HIGH, CWE-193 오프바이원, CISA KEV 등재 — NVD·Qualys 확인).
2024년 3월, 압축 라이브러리 xz-utils(liblzma)의 배포판 빌드 산출물 안에서 정교하게 숨겨진 백도어가 발견됐습니다. 이 백도어는 systemd 알림 기능을 쓰는 OpenSSH의 인증 경로를 타고 원격 코드 실행(RCE)으로 이어질 수 있었습니다. 발견 계기는 한 개발자가 로그인 과정에서 sshd의 CPU 사용량이 평소보다 유독 높다는 것을 이상하게 여긴 것이었습니다.
워드프레스 코어의 확장 취약점인 XSS2Shell(CVE-2026-64638)은 개별적으로 보면 낮은 심각도인 결함 여러 개가 이어져, 결국 무인증 원격 코드 실행(RCE)까지 도달하는 사례입니다. 시작은 로그인 실패 화면에 뜨는 문구 하나였습니다.
워드프레스 소셜 로그인 플러그인 3종(WP Social Media Login·SoClever·SmilePass Selfie Login, CVE-2026-77000/77001/77002)이 같은 날 나란히 무인증 인증 우회로 공개됐습니다. 셋 다 IdP가 실제로 로그인을 완료했는지 서버가 재검증하지 않아, 이메일 주소만으로(또는 아무 정보 없이) 관리자를 포함한 임의 계정 세션을 얻을 수 있습니다(CVSS 3.1 9.8 CRITICAL, CWE-287 — WPScan/NVD 확인). 셋 모두 이 글 작성 시점 무패치입니다.
보안 연구팀 Theori는 Windows 커널의 네트워크 드라이버(afd.sys)에서 힙 오버플로우 결함을 찾아 CVE-2023-28218로 이어지는 연구를 2023년 Hexacon 컨퍼런스에서 발표했습니다. 취약점 자체는 흔한 정수 오버플로우형 버그지만, 연구팀이 주목받은 지점은 이 버그를 "우연이 아니라 매번" 터뜨리는 방법이었습니다. 사용자 메모리를 다루는 커널 코드 특유의 타이밍 문제를 이용해 신뢰도 높은 커널 권한 상승 경로를 완성했습니다.
보안 리서치 업체 NumenCyber가 실제 공격에서 이미 악용된 것으로 확인된 Windows 커널 취약점 CVE-2023-29336을 분석했습니다. 창(window) 객체는 참조 잠금을 걸었지만 그 안에 중첩된 메뉴 객체는 잠그지 않은 오래된 코드 습관이 원인으로, 해제된 메모리를 재사용하는 UAF(use-after-free, 해제 후 재사용) 취약점으로 이어졌습니다. Windows 11에서는 통하지 않는 것으로 보이지만 이전 버전에서는 여전히 실질적 위험으로 분석됐습니다.
오래된 CVE지만 지금도 반복되는 취약점 클래스의 교과서 같은 사례입니다. Apache Struts2의 "동적 메서드 호출" 편의 기능이, 요청 파라미터 하나를 데이터가 아니라 실행 가능한 코드로 취급하면서 무인증 원격 코드 실행으로 이어졌습니다.
Microsoft SharePoint Server에서 인증 우회 결함(CVE-2023-29357)과 원격 코드 실행 결함(CVE-2023-24955)을 이어 붙이면, 로그인 계정 없이도 서버에 임의 명령을 실행할 수 있는 사전인증(pre-auth) RCE 체인이 완성됩니다. 이 글이 다루는 원문은 이 체인을 실제로 재현한 뒤 메모리 덤프를 WinDbg로 뜯어보며 공격이 서버 내부에서 어떻게 흘러가는지 포렌식으로 되짚은 디버깅 사례 연구입니다.
리눅스 커널의 오버레이 파일시스템(OverlayFS)이 파일을 "위 계층"으로 복사할 때, 그 파일의 소유자 정보가 지금 이 사용자 네임스페이스 안에서 실제로 유효한 값인지 확인하지 않았습니다. 이 틈을 이용하면 일반 사용자가 가짜 파일시스템으로 "이 파일은 root 소유의 SUID 바이너리"라고 커널을 속여, 결국 root 권한을 얻을 수 있습니다. 리서치 업체 Datadog Security Labs가 이 구조를 상세히 분석해 공개했습니다.
NGINX Plus와 NGINX 오픈소스판의 요청 재작성 모듈(`ngx_http_rewrite_module`)에서 힙(heap, 동적 메모리 영역) 버퍼 오버플로우 취약점이 공개됐습니다. CVSS 9.2로 평가된 이 결함(CVE-2026-42945)은 공개 며칠 만에 실전 악용 시도가 관측됐다고 보안 업체 VulnCheck가 밝혔습니다. 연구자들은 원격 코드 실행까지 이어지려면 특정 설정과 완화 기법 비활성화가 겹쳐야 한다고 선을 그었습니다.
데이터 분석·BI 플랫폼 Metabase에서 로그인조차 필요 없는 SQL 인젝션이 발견됐습니다. 비밀번호 재설정이라는, 원래 인증 안 된 사용자도 쓸 수 있어야 하는 기능 하나가 관리자 계정 탈취로 이어졌습니다. CVSS 10.0(치명적) — 만점입니다. 공개 약 5일 후 미국 CISA의 실제 악용 확인 목록(KEV)에 올랐습니다.
WordPress 'Mailgun for WordPress' 플러그인 2.2.0 이하는 add_list() 함수가 사용자 통제 배열 키를 sanitize_text_field()로만 처리해, 경로 순회를 통해 사이트의 Mailgun API 키로 임의 API 엔드포인트를 호출하는 무인증 SSRF가 발생합니다. 이 권한으로 받은 메일 전달 규칙을 심어 관리자 비밀번호 재설정 메일을 가로채면 계정 탈취까지 이어집니다(CVSS 3.1 9.8 CRITICAL, CWE-918 — Wordfence/NVD 확인). 2.2.1에서 패치됐습니다.
마이크로소프트 액티브 디렉터리(AD)의 인증 체계인 Kerberos에서 신규 취약점 2건이 공개됐습니다. 출발점은 LDAP 서버가 특정 유니코드 문자를 완전히 무시한다는, 얼핏 사소해 보이는 특성이었습니다. 이 하나의 특성이 2021년 패치로 막혔던 옛 취약점의 우회로를 다시 열었고, 최종적으로는 저권한 사용자가 도메인 관리자 계정의 비밀번호를 스스로 재설정하는 데까지 이어졌습니다.
중국 보안 기업 Knownsec의 404 Team이 오픈소스 지리정보 서버 GeoServer에서 SQL 인젝션 취약점 CVE-2023-25157(및 자매 취약점 CVE-2023-25158)을 분석했습니다. 지리 데이터 조회 표준인 OGC 필터 언어를 실제 데이터베이스 질의문으로 바꾸는 계층에서, 사용자가 넣은 값이 이스케이프 없이 SQL 문자열에 그대로 이어붙었습니다. 공식 패치는 이미 배포돼 있습니다.
보안 업체 Praetorian의 연구팀이 F5 BIG-IP의 관리 인터페이스(TMUI)를 대상으로 능동적인 취약점 리서치를 진행하던 중, 프런트엔드 Apache와 백엔드 Tomcat이 같은 요청을 서로 다르게 해석하는 틈을 찾아냈습니다. 이 틈을 이용하면 로그인 절차 없이도 임의의 관리자 계정을 만들 수 있었고, 이 결함은 CVE-2023-46747로 등록됐습니다. 두 프로세스 사이의 인증 책임 분담이 얼마나 쉽게 무너지는지 보여주는 사례입니다.
Python HTML 소독 라이브러리 justhtml은 to_html() 출력은 안전했지만, 별도 출구인 to_markdown()에서는 엔티티 디코딩된 텍스트와 title/textarea/noscript/plaintext 같은 RCDATA 요소 내용을 이스케이프 없이 그대로 방출했습니다. 소독을 신뢰해 Markdown으로 렌더링하는 애플리케이션은 이 경로로 저장형 XSS에 노출될 수 있습니다(CVSS v4.0 9.3 / v3.1 9.8 CRITICAL, CWE-79, 1.11.0 이하 취약·1.12.0 패치 — CVE.org/GHSA 확인).
쿠버네티스용 PostgreSQL 오퍼레이터 StackGres의 메트릭 익스포터가 dblink로 슈퍼유저 세션을 열면서 search_path를 고정하지 않아, 자기 데이터베이스를 소유한 저권한 테넌트가 카탈로그 객체를 가로채(schema shadowing) 슈퍼유저 권한을 획득하고 COPY ... TO PROGRAM으로 주 PostgreSQL 파드 내 원격 코드 실행까지 도달할 수 있습니다(CVSS 3.1 9.9 CRITICAL, CWE-426 — 벤더 OnGres/MITRE 확인). 1.18.8 이하 전 버전이 영향을 받고 1.19.0에서 패치됐습니다.
justhtml 1.16.0 미만 버전은 정책 객체 변조·대소문자 섞은 태그·doctype 조작 등 5가지 경로로 소독을 우회해 script/style 같은 능동 콘텐츠가 살아남을 수 있었습니다. NVD는 CVSS 9.8(v3.1)/9.3(v4.0)로 채점했지만, 유지관리자 자신의 자문은 '고급 사용 경로 전용'이라며 자체 심각도를 LOW로 매겨 두 평가가 갈립니다(CWE-20 주분류 — NVD/GHSA 확인).
TRENDnet TEW-821DAP 무선 AP의 NTP 시간대 설정 CGI(apply_time.cgi)가 uci_safe_get으로 읽은 설정값을 길이 검증 없이 고정 크기 스택 버퍼로 복사해, 원격 공격자가 스택 오버플로우를 트리거할 수 있습니다(CVSS 3.1 10.0 / 4.0 9.3 CRITICAL, CWE-119/121 — NVD/VulDB 확인). 이 기기는 2023년 이후 펌웨어 갱신이 없어 사실상 단종·무패치 상태입니다.
러스트(Rust) 크레이트 arrayref 0.3.10 버전이 오염되어, 이 크레이트를 쓰는 프로젝트를 빌드(컴파일)하는 것만으로 악성 코드가 실행됩니다. 크레이트 본체가 아니라 뒤따라오는 불량 의존성이 명령·제어(C2) 서버에 접속해 임의 코드 실행 통로를 엽니다. 프로그램을 실행하기 전, 컴파일하는 순간 이미 침해되는 공급망 오염 사례입니다(CVSS 9.8 CRITICAL, CWE-506 — NVD 확인).
러스트 크레이트 append-only-vec 0.1.9가 계정 탈취로 오염되어, 이 버전을 의존성에 둔 프로젝트를 컴파일하는 것만으로 불량 하위 의존성(proc-macro1, 정상 crate proc-macro2 타이포스쿼팅)이 빌드 스크립트를 통해 실행되고 C2 서버에 접속합니다. 게시 약 107분 만에 crates.io에서 철회됐으며 안전 버전은 0.1.8 이하입니다(CVSS 3.1 9.8 CRITICAL, CWE-506 — MITRE 확인). 같은 계정탈취 캠페인이 arrayref·internment 크레이트도 함께 오염시켰습니다.
워드프레스·우커머스용 OTP 로그인 플러그인 'Automation Web Platform'의 handle_email_otp_return() 함수가 로그인에 쓰이는 비밀 매직 로그인 토큰을 응답에 그대로 반환합니다. 대상 이메일 주소만 알면 무인증 공격자가 관리자를 포함한 임의 계정으로 로그인할 수 있고, 4.8.6 이하 전 버전이 무패치 상태입니다(CVSS 3.1 9.8 CRITICAL, CWE-640 — NVD 확인).
HTML 소독 라이브러리 justhtml 1.15.0 미만 버전은 URL 소독 도우미(clean_url_value 등), HTML 직렬화, Markdown 원문 통과(html_passthrough), 커스텀 정책이라는 여러 지점에서 동시에 우회 가능했습니다. 기본 설정(sanitize=True)만 쓰는 배포는 영향이 제한적이나, 통과 옵션·커스텀 정책을 쓰는 배포는 XSS에 노출됩니다(CVSS v4.0 9.3 / v3.1 9.8 CRITICAL, CWE-20 — MITRE·VulnCheck 확인).
워드프레스 플러그인 RestrictMate의 1.3.0 미만 버전은 회원가입 시 신청자가 자기 역할(role)을 직접 지정하는 것을 막지 않습니다. 그 결과 무인증 공격자가 가입 요청 한 번으로 관리자 계정을 만들고 로그인된 관리자 세션까지 얻어, 사이트를 완전히 장악할 수 있습니다(CVSS 9.8 CRITICAL, CWE-269 — NVD 확인).
2023년 8월, 보안업체 Converge의 연구자들은 기업용 파일 전송 소프트웨어 CrushFTP에서 인증 절차 자체를 우회하는 제로데이 취약점을 발견했습니다. 공격자는 로그인 없이 특정 프로토콜의 요청 헤더만 조작해 서버 내부 파일을 읽고 지우고, 결국 원격 코드 실행까지 이를 수 있었습니다. 공개 인터넷에 노출된 인스턴스만 약 1만 대로 알려졌습니다.
SonicWall이 공개한 CVE-2023-51467은 오픈소스 전사적자원관리(ERP) 솔루션 Apache OFBiz의 인증 우회 취약점으로, 인증 없이 원격 코드 실행(RCE)까지 이어질 수 있습니다. 흥미로운 점은 이 취약점이 새로운 버그가 아니라, 앞선 두 차례의 패치가 근본원인은 남겨둔 채 증상만 막았기 때문에 다른 자리에서 다시 열린 같은 구멍이라는 것입니다.
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)입니다. 정제된 파일명과 공격자가 심은 원본 파일명이 대소문자만 다른 이름으로 나란히 살아남는 지점을, 실제 오픈소스 코드와 패치 커밋을 대조해 분석합니다.