1. 취약점 개요 React 19 버전대에 심각한 원격 코드 실행(RCE) 취약점 두 가지가 발견되어 CVE-2025-55182 (React)와 CVE-2025-66478 (Next.js)로 공표되었습니다. 두 취약점 모두 React의 서버 컴포넌트(RSC) 기능에서 사용하는 “Flight” 프로토콜의 역직렬화 처리 로직의 결함이 원인이다. 공격자는 특수하게 조작된 HTTP 요청만으로 인증 없이도 서버 측에서 임의의 자바스크립트 코드를 실행할 수 있습니다. 특히 Next.js 프레임워크(앱 라우터 사용 시)는 React의 해당 취약점을 그대로 내포하고 있어 CVE-2025-66478로 식별되었으며, 기본 설정의 Next.js 애플리케이션도 별도 코드 수정 없이 공격에 노출될 수 있다고 합니다. CVE..
들어가며웹 취약점 진단 수행 중 웹 애플리케이션의 클라이언트 측(Javascript) 코드에서 Prototype Pollution 취약점(프로토타입 오염)이 발견되었다. 취약점에 대해 개념을 정리하고 어떻게 코드를 분석했는지 소개한다. 물론 틀린부분이 있을 수 있으므로 다양한 의견으로 알려주시면 감사하겠습니다. 취약점 개요자바스크립트는 프로토타입 기반의 객체 지향 언어이다. 모든 객체는 숨겨진 속성 '__proto__'를 통해 어떤 프로토타입 객체를 참조하며, 이 프로토타입에 정의된 속성과 메서드는 해당 객체 및 그 하위 객체들이 상속받는다. Prototype Pollution(이하 PP)은 공격자가 이 프로토타입 객체에 임의의 속성을 주입함으로써 기본 객체의 동작을 변경할 수 있는 취약점이다.유효 범위..
개요 정보 수집이나 파일 다운로드 자동화를 위해 크롤링을 사용한다. 주로 파이썬의 requests 모듈을 이용하여 수집했는데, 대상 사이트에서 응답코드 403(Forbidden)을 반환하면서 데이터를 가져올 수 없었다. 문제를 발견하고 해결하는 과정이다. 문제 식별 cloudflare에서 차단 정책을 도입하여 봇의 접근을 차단하고 있었다. 영문으로는 'Cloudflare challenge page'로 언급하는데 자동화된 접근이나 스크래핑 봇을 차단하기 위해 사용한다. 작동 방식은 브라우저에서만 실행할 수 있는 자바스크립트 구문을 사이트 본문에 삽입하여 실행 여부를 검사하는 방식을 포함하여 사용자의 상호작용이 필요한 버튼을 추가(캡차 등)하는 다양한 방법이 존재한다. 대상 페이지의 경우 명령..
Introduction 웹 공격에는 다양한 취약점 탐지 방법이 연구되고 있다. 클라우드 환경 웹 취약점 진단 중 Server-Side에서 다른 내부 서버로 요청이 필요할 때 파라미터를 변조할 경우 공격 성공 여부를 확인하는 방법을 찾던 중 OOB Testing에 대해 간략하게 정리한다. OAST(Out-of-Band Application Security Testing) OAST는 DAST(Dynamic Application Security Testing)을 보완하기 위한 모델이며, 외부 서버를 이용해서 보이지 않는 취약점을 찾을 수 있다. 진단자가 제어하는 인프라로 대상을 강제로 호출하여 웹 애플리케이션에서 악용 가능한 취약점을 찾는 방법이다. 동적 테스트 만으로 탐지하기 어려운 경우(blind, 비동기..
PKI에서는 인증기관, 등록기관, 그리고 사용자 간의 각종 인증서 업무를 처리하기 위한 표준적인 통신 프로토콜이 필요하다. 이를 CMP(Certificate Management Protocols)라 하며, 인증서 발급/갱신/폐지 요청 및 응답 처리에 사용된다. 인증서 관리 프로토콜은 PKI 구성요소 간의 온라인 상호연동 뿐만 아니라, 상호인증 하려는 두 인증기관 사이에서도 사용될 수 있다. 대한민국의 행정전자서명인증체계에서는 RFC4210을 준용하여 인증서 관리를 수행하며, 그에 필요한 메시지는 RFC4211의 메시지 형태를 사용한다. 인증서 관리 규격들은 다음의 문서에서 표준을 명시하고 있다. ■ RFC 4210 Internet X.509 Public Key Infrastructure Certifica..
HTTP Cookie에 대하여 HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버에서 사용자의 웹 브라우저로 전송한 작은 데이터 조각이다. 브라우저는 나중에 보낼 요청에 대비하여 저장해둔다. HTTP 통신은 상태를 저장하지 않는 stateless 통신이기 때문에 동일한 연결에 대해 연속적인 요청이 발생하지 않는다. 예를 들어 쇼핑몰을 이용할 때 장바구니에 담긴 물건 정보를 통신할 때마다 유지하지 않는다. 이렇게 상태를 저장하지 않는 대신에 쿠키를 이용하여 '세션'을 저장한다. 헤더에 쿠키를 사용하도록 설정하여 HTTP 쿠키가 패킷에 추가되어 각 HTTP 요청에 대해서 동일한 컨텍스트인지, 어떠한 상태를 가지고 있었는지 나타낼 수 있다. 쿠키는 크게 세 가지 목적으로 동작한다. 세션 관리(Session man..