CVE-2026-111497 (node2shell) 분석
Node.js가 자기 안에 품고 있던 Brotli 압축 해제기에서, 잘못 만든 압축 데이터 하나가 메모리 경계 밖에 쓰기를 일으킬 수 있었습니다. Node.js는 이를 "원격 코드 실행(RCE)을 허용"하는 High 취약점으로 분류했습니다. 이 글은 실제 패치 커밋을 열어, 패치가 정확히 무엇을 바꿨는지(그리고 공개된 범위에서 무엇이 아직 모르는 부분인지)를 정직하게 가려 봅니다.
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 파일을 올려 서버에서 코드를 실행할 수 있었습니다.
"지표(indicator)"라는 한 단어 아래에는 성격이 전혀 다른 것들이 섞여 있습니다. 어떤 지표는 공격자가 1초 만에 바꿔 버려 하루면 쓸모가 없어지고, 어떤 지표는 공격자가 작업 방식을 통째로 다시 짜야만 피할 수 있습니다. 이 글은 그 차이를 David J. Bianco의 Pyramid of Pain(고통의 피라미드) 관점에서 정리합니다.
인증기관(CA) 체계는 오랫동안 "누가 어떤 도메인에 인증서를 발급했는지" 외부에서 들여다볼 창구가 없었습니다. 인증서 투명성(Certificate Transparency, CT)은 발급된 인증서를 공개 로그에 남겨 이 사각지대를 메우는 장치입니다. 이 글은 CT가 무엇을 해결하려 했고, 어떤 구조로 동작하며, 왜 브라우저가 이를 사실상 의무로 만들었는지를 정리합니다.
제로트러스트(Zero Trust)는 방어의 무게중심을 네트워크 경계에서 사용자·기기·리소스로 옮기는 설계 사고이고, NIST는 이를 표준 문서 SP 800-207로 못 박았습니다. 이 글은 그 공식 정의와 원칙 체계, 그리고 전통적 경계방어 모델과의 차이를 개념 수준에서 출처별로 갈라 정리합니다.
웹 방화벽(WAF)을 우회했다는 소식은 특정 제품의 특정 버그처럼 보이지만, 많은 경우 뿌리는 방화벽이 요청을 해석하는 방식과 그 뒤의 애플리케이션이 해석하는 방식이 어긋나는 데 있습니다. 이 글은 그 어긋남의 핵심 개념인 "정규화(canonicalization) 불일치"를 공개된 1차 자료와 연구를 바탕으로 정리합니다.
접근제어 모델은 "누가 무엇에 접근할 수 있는가"를 정하는 세 가지 방식, 즉 목록(ACL)·역할(RBAC)·속성(ABAC)으로 크게 나뉩니다. 세 모델은 경쟁자가 아니라 세밀함과 확장성 사이의 서로 다른 지점을 고른 설계입니다. 이 글은 각 모델이 권한을 어디에 붙이는지, 그리고 최소권한 원칙이 각 모델의 어느 지점에서 적용되는지를 정리합니다.
같은 "취약점"이라도 공격자가 그것을 찌르는 **순간에 패치가 있었느냐 없었느냐**에 따라 방어의 문제가 완전히 달라집니다. 패치가 없으면 탐지와 봉쇄의 싸움이고, 패치가 있는데 아직 안 붙였으면 조직의 배포 속도 싸움입니다. 이 글은 제로데이와 N-day를 공개·패치 타임라인 위에 올려놓고, 둘이 왜 다른 종류의 리스크인지 정리합니다.
다단계 인증(MFA)을 켜 두어도 계정이 털리는 일이 있습니다. 공격자가 비밀번호를 이미 손에 넣은 뒤 승인 요청을 쏟아부어 사용자가 무심코 "승인"을 누르게 만드는 **MFA 피로 공격(MFA fatigue)** 때문입니다. 이 글은 이 공격이 왜 통하는지, 그리고 **번호 매칭(number matching)** 이라는 완화책이 그 틈을 어떻게 좁히는지를 정리합니다.
이름 하나만 겹쳐도 빌드가 공격자의 코드를 끌어오는 일이 있습니다. 의존성 혼동(dependency confusion)과 타이포스쿼팅(typosquatting)은 패키지 생태계의 설계 특성을 그대로 지렛대로 삼습니다. 이 글은 두 기법이 왜 "버그"가 아니라 "구조"에서 나오는지를 공개된 사실만 모아 정리합니다.
취약점을 찾은 사람과 그 제품을 만든 쪽, 그리고 중간에서 조율하는 기관이 서로 보조를 맞춰 수정과 공개의 시점을 정하는 일을 책임있는 공개, 요즘은 주로 조율된 취약점 공개(CVD)라고 부릅니다. 기관마다 "며칠을 기다리는가"가 다르다 보니 처음 접하면 숫자가 헷갈리기 쉽습니다. 이 글은 용어, 당사자 역할, 관련 국제 표준, 그리고 널리 쓰이는 기관별 기본 타임라인을 한자리에 정리합니다.
SBOM은 하나의 소프트웨어가 어떤 컴포넌트로 이루어졌는지를 기계가 읽을 수 있게 적어 둔 재료 목록입니다. 새 취약점이 하나 터졌을 때 "우리 제품 안에 그게 들어 있나?"라는 질문에 빠르게 답하기 위한 공급망 투명성의 기초 체력입니다. 이 글은 SBOM이 무엇이고, 왜 필요한지, 그리고 혼자서는 무엇을 못 하는지를 정리합니다.
CVSS(Common Vulnerability Scoring System, 공통 취약점 점수 체계)가 4.0으로 올라오면서 숫자 범위와 심각도 등급 이름은 그대로지만, 그 숫자를 뽑는 입력 메트릭과 계산 엔진이 달라졌습니다. 이 글은 트리아지(분류·우선순위 판단)를 하는 사람이 실제로 체감하는 변화만 네 축으로 추려 정리합니다.
오픈소스 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의 실제 오픈소스를 고정 커밋 기준으로 직접 열어 근본원인·호출 흐름·패치를 분석합니다.
레드팀·블루팀·퍼플팀은 조직도상 서로 다른 부서처럼 보이지만, 실제로 가르는 기준은 "누가 이기느냐"가 아니라 "무엇을 검증하도록 설계됐는가"입니다. 레드팀은 실제 공격이 통하는지를, 블루팀은 그 공격을 막아내는 능력을, 퍼플팀은 그 결과로 나온 개선 조치가 실제로 효과가 있는지를 검증합니다. 이 글은 NIST 공식 용어집 정의를 축으로 세 역할의 경계를 정리하고, 업계에서 널리 쓰이지만 표준 문서로는 확인되지 않는 부분을 구분해 남깁니다.
SLSA(Supply-chain Levels for Software Artifacts, "살사"로 발음)는 소프트웨어가 "어떻게 만들어졌는가"를 검증 가능하게 만들어 공급망 무결성을 점진적으로 끌어올리기 위한 사양(specification)입니다. 이 글은 SLSA의 빌드 트랙(Build track) 레벨 구조와, 그 뼈대가 되는 빌드 출처 증명(provenance)이 무엇인지를 공식 스펙 기준으로 정리합니다.
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 확인). 셋 모두 이 글 작성 시점 무패치입니다.
한 보안 분석가가 트레이딩 커뮤니티에 올라온 "비트코인 전략 파일"을 열었다가 4단계로 이어지는 악성코드 유포 사슬을 발견했습니다. 시작점은 WinRAR의 파일 경로 처리 결함(CVE-2023-38831)을 악용한 조작된 압축 파일이었고, 끝은 감염 PC의 정보를 훔쳐가는 원격 제어 채널이었습니다. 이 글은 그 분석 과정을 통해 "왜 파일 포맷 파서의 사소한 판단 오류가 치명적인 침해로 이어지는가"를 짚습니다.
보안 연구팀 Theori는 Windows 커널의 네트워크 드라이버(afd.sys)에서 힙 오버플로우 결함을 찾아 CVE-2023-28218로 이어지는 연구를 2023년 Hexacon 컨퍼런스에서 발표했습니다. 취약점 자체는 흔한 정수 오버플로우형 버그지만, 연구팀이 주목받은 지점은 이 버그를 "우연이 아니라 매번" 터뜨리는 방법이었습니다. 사용자 메모리를 다루는 커널 코드 특유의 타이밍 문제를 이용해 신뢰도 높은 커널 권한 상승 경로를 완성했습니다.
보안 리서치 업체 NumenCyber가 실제 공격에서 이미 악용된 것으로 확인된 Windows 커널 취약점 CVE-2023-29336을 분석했습니다. 창(window) 객체는 참조 잠금을 걸었지만 그 안에 중첩된 메뉴 객체는 잠그지 않은 오래된 코드 습관이 원인으로, 해제된 메모리를 재사용하는 UAF(use-after-free, 해제 후 재사용) 취약점으로 이어졌습니다. Windows 11에서는 통하지 않는 것으로 보이지만 이전 버전에서는 여전히 실질적 위험으로 분석됐습니다.
2024년 초부터 해킹된 정상 웹사이트에 몰래 심어져 방문자의 암호화폐 지갑 서명을 유도하는 "드레이너(drainer)" 악성코드가 급증했습니다. 웹 보안 업체 Sucuri에 따르면 이 가운데 "Angel Drainer"라는 서비스형 도구는 4주 사이 5,751개의 서로 다른 도메인에서 발견됐습니다. 핵심은 취약점을 뚫는 게 아니라, 방문자가 이미 갖고 있는 "이 사이트는 정상이다"라는 믿음과 "지갑에 서명 한 번 하는 건 별일 아니다"라는 오해를 그대로 이용한다는 점입니다.
2019년, 보안 연구자 Harsh Jaiswal은 Vimeo의 API 콘솔이 서버 쪽에서 대신 요청을 보내주는 기능을 분석하다가, URL 경로의 일부로 취급되는 파라미터에 경로 순회(path traversal) 문자열을 넣을 수 있다는 걸 발견했습니다. 이 결함은 오픈 리다이렉트와 이어 붙여져 서버 쪽 요청 위조(SSRF)로 이어졌고, 최종적으로는 Vimeo가 올라가 있던 클라우드 인프라의 메타데이터 서비스까지 건드릴 수 있는 수준까지 갔습니다. 원문에 따르면 초기 임시 조치 보상 100달러에 이어 영구 수정 확인 후 4,900달러가 추가 지급돼, 합계 5,000달러가 지급됐습니다.
Ledger의 보안 연구팀 Donjon은 Trust Wallet 브라우저 확장에서, 지갑을 만들 때 쓰는 무작위성(엔트로피)이 사실상 32비트밖에 안 된다는 결함을 발견했습니다. 그 결과 이 확장으로 만든 지갑은 **주소만 알면 개인키를 즉시 계산해낼 수 있었습니다.** 표준 암호 알고리즘은 하나도 깨지지 않았습니다. 깨진 것은 그 알고리즘에 넣는 "주사위"의 품질이었습니다.
오래된 CVE지만 지금도 반복되는 취약점 클래스의 교과서 같은 사례입니다. Apache Struts2의 "동적 메서드 호출" 편의 기능이, 요청 파라미터 하나를 데이터가 아니라 실행 가능한 코드로 취급하면서 무인증 원격 코드 실행으로 이어졌습니다.
서버가 공격자 지정 URL로 요청을 보내게 만드는 SSRF(서버 사이드 요청 위조)는 코드만 보면 다 똑같아 보입니다. 그런데 같은 모양의 결함이라도 그 값이 **어디서 들어오는지**에 따라 실제 위험도가 크게 갈립니다. 이 글은 저희가 검증 작업을 반복하며 정리한, SSRF의 진짜/가짜를 가르는 기준 하나를 소개합니다.
보안 연구자 NullSecurityX는 Shopify에서 낮은 심각도 결함 두 개를 이어 붙여, 별도의 Shopify ID를 만든 적 없는 스토어를 통째로 탈취할 수 있는 경로를 찾았습니다. 보고된 포상금은 22,500달러로 알려져 있습니다. 핵심은 "한 곳에서 확인된 이메일"이라는 상태를 다른 곳에서도 그대로 믿어버린 신뢰 경계 설계였습니다.
Microsoft SharePoint Server에서 인증 우회 결함(CVE-2023-29357)과 원격 코드 실행 결함(CVE-2023-24955)을 이어 붙이면, 로그인 계정 없이도 서버에 임의 명령을 실행할 수 있는 사전인증(pre-auth) RCE 체인이 완성됩니다. 이 글이 다루는 원문은 이 체인을 실제로 재현한 뒤 메모리 덤프를 WinDbg로 뜯어보며 공격이 서버 내부에서 어떻게 흘러가는지 포렌식으로 되짚은 디버깅 사례 연구입니다.
보안 연구자 tinopreter는 한 예약 플랫폼의 버그바운티 프로그램에서, 홈페이지 캐싱과 쿠키의 SameSite 속성이라는 서로 무관해 보이는 두 설정이 겹쳤을 때 사용자의 로그인 토큰이 통째로 새어 나갈 수 있다는 것을 보였습니다. 심각도는 HIGH, 포상금은 2,000달러로 원문에 명시돼 있습니다. 캐시라는 "성능을 위한 장치"가 그 자체로 인증 우회 경로가 될 수 있다는 걸 보여주는 사례입니다.
연구자 veath1은 ProtonVPN Windows 클라이언트(v3.2.9)의 서비스 프로세스가 일반 사용자 권한으로 쓸 수 있는 폴더를 SYSTEM 권한으로 삭제한다는 사소해 보이는 결함 하나를 발견했습니다. 이 결함은 심볼릭 링크·레이스 컨디션(경쟁 조건) 기법과 결합돼, 결국 일반 사용자가 SYSTEM 권한 명령 프롬프트를 얻는 로컬 권한상승(LPE)으로 이어졌습니다. CVSS 3.1 기준 점수는 7.8(HIGH)로 저장소에 명시돼 있습니다.
윈도우 프로그램은 자신이 불러올 라이브러리(DLL)를 이름만으로 찾고, 그 이름이 어느 경로에서 왔는지는 크게 따지지 않습니다. 보안 연구자 Elliot(elliotonsecurity.com)은 이 오래된 약점을 다시 들여다보며, 악성 DLL을 몰래 끼워 넣는 기법(DLL 하이재킹) 자체가 아니라 그 다음 단계 — 끼워 넣은 뒤 코드를 "안전하게" 실행하는 방법 — 를 새로 정리했습니다. 이 원리를 이해하면 신뢰된 실행파일이라는 말이 실제로 무엇을 검증하고 무엇을 검증하지 않는지가 보입니다.
리눅스 커널의 오버레이 파일시스템(OverlayFS)이 파일을 "위 계층"으로 복사할 때, 그 파일의 소유자 정보가 지금 이 사용자 네임스페이스 안에서 실제로 유효한 값인지 확인하지 않았습니다. 이 틈을 이용하면 일반 사용자가 가짜 파일시스템으로 "이 파일은 root 소유의 SUID 바이너리"라고 커널을 속여, 결국 root 권한을 얻을 수 있습니다. 리서치 업체 Datadog Security Labs가 이 구조를 상세히 분석해 공개했습니다.
연구자가 사내 침투 테스트 도중 우연히 발견한 결함이 OpenResty의 lua-nginx-module 전반에 영향을 주는 HTTP 요청 스머글링으로 이어졌습니다. 원인은 아주 단순한 규칙 하나 — "HEAD 요청에는 원래 처리할 몸통(body)이 없다" — 를 코드 한 곳이 깜빡한 것이었습니다.
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에서 패치됐습니다.
Objective-See의 Patrick Wardle이 매년 발행하는 연간 맥(Mac) 악성코드 리뷰의 2023년판을 재구성합니다. 랜섬웨어부터 정보탈취형 악성코드(인포스틸러), 국가배후 그룹의 백도어까지 수십 개 샘플을 다룬 원문에서, 개별 사례를 나열하는 대신 전체를 관통하는 공통 패턴 세 가지만 추려봤습니다.
Pwn2Own 출전을 준비하던 연구자 blackcon이 여러 LLM 제공사를 하나의 API로 묶어주는 오픈소스 게이트웨이 LiteLLM에서 템플릿 인젝션(SSTI) 취약점을 발견했습니다. 단일 HTTP 요청만으로 서버에서 루트 권한 코드 실행까지 이어지는 결함이었지만, 대회 직전 메인테이너가 별도 공지 없이 조용히 고쳐버리면서 대회 출전은 무산됐습니다.
보안 업체 Avast는 북한 연계 해킹 그룹 라자루스(Lazarus)가 실전에서 사용한 윈도우 커널 제로데이(개발사도 모르는 미공개 취약점)를 발견해 마이크로소프트에 신고했습니다. 이 취약점은 2024년 2월 정기 패치에서 CVE-2024-21338로 수정됐습니다. 눈에 띄는 건 취약점 자체보다 라자루스가 이걸 쓴 방식입니다 — 취약한 서명 드라이버를 따로 가져다 쓰는 기존 수법(BYOVD) 대신, 윈도우에 원래 있던 드라이버 하나의 결함만으로 관리자 권한을 커널 권한으로 바꿔치기했습니다.
한국인터넷진흥원(KISA)이 오래된 소프트웨어를 자동으로 최신 버전으로 갱신해 주는 "보안 취약점 클리닝 서비스"를 시범 운영했습니다. 보안 연구팀 티오리(Theori)는 이 서비스가 기존 보안 프로그램에 얹혀 동작하는 과정에서, 시스템 최고 권한(SYSTEM)으로 임의 코드를 실행할 수 있는 구조적 결함을 찾아 KISA에 제보했습니다. 좋은 의도로 만든 자동 업데이트 기능이, 신뢰 기반 자체가 흔들리면 오히려 가장 위험한 진입로가 될 수 있다는 사례입니다.
마이크로소프트 액티브 디렉터리(AD)의 인증 체계인 Kerberos에서 신규 취약점 2건이 공개됐습니다. 출발점은 LDAP 서버가 특정 유니코드 문자를 완전히 무시한다는, 얼핏 사소해 보이는 특성이었습니다. 이 하나의 특성이 2021년 패치로 막혔던 옛 취약점의 우회로를 다시 열었고, 최종적으로는 저권한 사용자가 도메인 관리자 계정의 비밀번호를 스스로 재설정하는 데까지 이어졌습니다.
KAIST Hacking 연구팀(Kanghyuk Lee, Insu Yun)은 국내 공유기 제조사 ipTIME의 AX2004M 모델(펌웨어 14.19.0)에서, 관리 기능을 처리하는 CGI 바이너리의 인증 검사 로직이 URL 경로 하나로 완전히 우회된다는 것을 발견했습니다. 웹 서버 설정에 걸려 있던 심볼릭 링크 하나가 그 우회 경로를 열어줬고, 최종적으로는 로그인 없이 관리자 비밀번호를 재설정하고 원격 셸까지 얻을 수 있었습니다. 이 취약점은 KISA의 취약점 식별체계에 KVE-2023-0133으로 등재돼 있습니다.
개발자 jmswrnr는 자기 집 스마트 공기청정기를 자체 홈 자동화 시스템(Home Assistant)에 붙이고 싶다는 소박한 동기에서 출발해, 이 기기가 만든 회사 클라우드 서버 없이는 원격 제어가 아예 불가능하다는 사실을 발견하고 직접 뜯어보기로 합니다. 그 결과 회로 기판의 디버그 핀 몇 개, 암호화되지 않은 저장소, 그리고 표준 프로토콜 대신 손수 만든 암호화 방식이 어떻게 차례로 무너지는지가 드러났습니다.
2023년 Google이 라스베이거스 데프콘 현장에서 연 초청제 버그바운티 행사 "LLM bugSWAT"에서, 연구자 Roni Carta(Lupin)·Joseph Thacker(rez0)·Justin Gardner(Rhynorater) 3인은 협업으로 Bard(현 Gemini)와 Google Cloud Console의 결함 여러 건을 찾아냈습니다. 그중 가장 인상적인 건은 Bard에게 이메일을 요약해 이미지 형태로 응답하게 만들어, 그 내용을 공격자 서버로 통째로 빼돌리는 프롬프트 인젝션이었습니다. 세 사람이 이 행사에서 받은 포상금 합계는 5만 달러로 원문에 명시돼 있습니다.
보안 업체 Socket이 코드 에디터 확장 마켓플레이스 **Open VSX**에서 확산 중인 "GlassWorm" 캠페인의 새 변형을 보고했습니다. 이번 변형의 핵심은 처음엔 완전히 무해해 보이는 확장을 올려두고, 나중 업데이트에서 다른 확장을 끌어오게 만드는 방식으로 진화했다는 점입니다. 설치 시점의 심사만으로는 이런 확산을 걸러낼 수 없다는 것을 보여주는 사례입니다.
보안 연구자 cybxis는 GitLab의 로그인 이메일 인증(Login Email Verification) 기능이 웹 로그인 경로에서는 정상 작동하지만, OAuth의 ROPC(Resource Owner Password Credentials) 흐름으로 우회하면 완전히 빠진다는 것을 HackerOne 제보로 확인했습니다. 결과적으로 GitLab은 이를 버그로는 인정하되 정식 취약점으로는 인정하지 않았습니다 — 판단이 갈린 지점 자체가 흥미로운 사례입니다.
뉴질랜드 보안업체 Pulse Security는 GitLab의 CI/CD(코드를 커밋하면 자동으로 빌드·배포까지 이어주는 파이프라인) 환경에서, 낮은 권한의 사용자 계정 하나로 시작해 결국 프로덕션 서버에 root로 접속하는 공격 체인을 실습 환경에서 시연했습니다. 각 단계는 개별적으로는 GitLab의 "정상 기능"이지만, 여러 프로젝트가 하나의 실행 인프라(러너)를 공유하면서 격리가 충분하지 않을 때 이 기능들이 이어 붙어 심각한 권한 상승 경로가 됩니다.
중국 보안 기업 Knownsec의 404 Team이 오픈소스 지리정보 서버 GeoServer에서 SQL 인젝션 취약점 CVE-2023-25157(및 자매 취약점 CVE-2023-25158)을 분석했습니다. 지리 데이터 조회 표준인 OGC 필터 언어를 실제 데이터베이스 질의문으로 바꾸는 계층에서, 사용자가 넣은 값이 이스케이프 없이 SQL 문자열에 그대로 이어붙었습니다. 공식 패치는 이미 배포돼 있습니다.
보안 업체 Praetorian의 연구팀이 F5 BIG-IP의 관리 인터페이스(TMUI)를 대상으로 능동적인 취약점 리서치를 진행하던 중, 프런트엔드 Apache와 백엔드 Tomcat이 같은 요청을 서로 다르게 해석하는 틈을 찾아냈습니다. 이 틈을 이용하면 로그인 절차 없이도 임의의 관리자 계정을 만들 수 있었고, 이 결함은 CVE-2023-46747로 등록됐습니다. 두 프로세스 사이의 인증 책임 분담이 얼마나 쉽게 무너지는지 보여주는 사례입니다.
다단계 네트워크 분리(defense-in-depth)는 중요한 시스템일수록 접근 경로를 여러 겹으로 감싸는 설계입니다. 그런데 침투테스트에서는 이미 장악한 호스트 하나를 발판(pivot) 삼아, 외부에서 직접 보이지 않는 두 단계 뒤 네트워크까지 트래픽을 릴레이해 도달하는 경우가 흔합니다. 이 글은 그 "이중 피보팅(double pivoting)" 기법의 원리를 재구성합니다.
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만 대로 알려졌습니다.
Datadog Security Labs 연구팀은 2024년, 수많은 코드가 AWS의 가상머신 이미지(AMI)를 "이름"만으로 찾아 쓰고 있다는 패턴을 발견했습니다. 이 패턴을 악용하면 아무나 특정 이름의 이미지를 공개로 올려두는 것만으로 다른 사람의 AWS 계정에서 코드를 실행시킬 수 있었습니다. 연구팀은 이 방식으로 AWS 내부 시스템까지 실제로 뚫렸다는 사실을 확인했습니다.
침입탐지는 흔히 "이 파일이 악성인가"를 묻지만, 실제 침해 사고의 상당수는 새 악성코드가 아니라 시스템에 원래 있던 정상 도구로 이뤄집니다. 이 글은 공개된 위협 인텔리전스 보고서 하나를 재구성해, "무엇을 찾을 것인가"라는 가설을 어떻게 세우고 로그 쿼리로 옮기는지 그 방법론만 짚어봅니다. 실제 탐지 규칙이나 쿼리 문법은 원문·공개 시그마룰 저장소를 참고하시고, 여기서는 사고방식만 다룹니다.
보안 연구자 nokline은 ChatGPT의 "공유(share)" 기능을 살펴보다가, 이미 이전에 다른 연구자(Nagli)가 발견해 패치됐다고 알려졌던 웹 캐시 기만(WCD) 취약점이 URL 경로 순회(path traversal) 문자열을 살짝 다르게 인코딩하는 것만으로 다시 열린다는 걸 확인했습니다. 이 결함으로 사용자 인증 토큰을 캐시에서 훔쳐 계정을 탈취할 수 있었고, 원문에 따르면 연구자 본인 기준 최고액인 6,500달러가 지급됐습니다.
서버가 암호를 아무리 튼튼하게 걸어놨어도, "네가 보낸 암호문은 채움값(패딩) 규칙에 안 맞아"라는 에러 하나만 흘리면 공격자는 그 실마리만으로 평문을 한 바이트씩 복원할 수 있습니다. 열쇠를 훔치는 게 아니라, 서버에게 "이거 규칙 맞아?"만 반복해 물어보는 고전 암호 공격입니다. 연구자 Bruno Rocha Moura가 정리한 이 공격의 원리를, 실행 코드 없이 개념으로만 짚어봅니다.
보안 연구자 한 명이 Claude Code(앤트로픽의 에이전트형 코딩 도구)와 MCP(Model Context Protocol, LLM에게 외부 도구를 함수처럼 호출하게 해주는 개방 표준)를 엮어, 취약점 헌팅 과정 대부분을 자동화한 개인 연구 파이프라인을 공개했습니다. 도구 자체보다 눈에 띄는 것은 설계 철학입니다 — 새로 찾은 결과를 처음부터 "찾아낸 취약점"이 아니라 "아직 증명 안 된 환각(hallucination)"으로 다루는 검증 관문 구조입니다.
SonicWall이 공개한 CVE-2023-51467은 오픈소스 전사적자원관리(ERP) 솔루션 Apache OFBiz의 인증 우회 취약점으로, 인증 없이 원격 코드 실행(RCE)까지 이어질 수 있습니다. 흥미로운 점은 이 취약점이 새로운 버그가 아니라, 앞선 두 차례의 패치가 근본원인은 남겨둔 채 증상만 막았기 때문에 다른 자리에서 다시 열린 같은 구멍이라는 것입니다.
디지털 포렌식(사고·범죄 조사를 위해 기기에서 증거를 확보·분석하는 절차) 연구자 Mattia Epifani는 2023년 10월 공개된 안드로이드14를 Pixel 7A에 한 달가량 실제로 써 보면서, 조사관 입장에서 어디에 어떤 증거가 남는지를 항목별로 정리했습니다. 이 글은 원문이 다루는 범위 안에서 "이런 파일에 이런 정보가 있다"는 지도를 요약한 것이며, 이전 버전 대비 정확히 무엇이 바뀌었는지에 대한 체계적인 비교표는 원문 자체도 제공하지 않고 개별 아티팩트를 나열하는 방식입니다(원문 확인 완료).
NVISO의 모바일 보안 연구자 Jeroen Beckers는 실제 진단 업무 중 문자열을 암호화해 숨겨둔 안드로이드 ARM64(64비트 ARM 아키텍처) 앱을 분석하게 되면서, 디버거를 붙이지 않고도 리버스엔지니어링 도구(Ghidra) 안에서 코드를 직접 실행시켜(에뮬레이션) 암호화된 문자열을 복원하는 절차를 정리했습니다. 마지막 단계는 파이썬 스크립트로 자동화해, 앱 전체의 난독화 문자열을 한 번에 풀어내는 데까지 나아갑니다.
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)입니다. 정제된 파일명과 공격자가 심은 원본 파일명이 대소문자만 다른 이름으로 나란히 살아남는 지점을, 실제 오픈소스 코드와 패치 커밋을 대조해 분석합니다.