용어와 정의
영문 또는 원어: Prototype Pollution
한글명: 프로토타입 오염
프로토타입 오염은 외부 입력이 자바스크립트 객체의 공유 프로토타입 속성에 영향을 주어 다른 객체의 동작까지 바꿀 수 있는 문제입니다.
정확한 의미와 원리
프로토타입은 객체가 속성과 동작을 상속받는 연결에 사용됩니다. 입력 객체를 병합하거나 경로에 따라 속성을 넣는 코드가 신뢰 경계를 지키지 않으면 개별 입력을 넘어 공유된 기본값에 영향을 줄 수 있습니다.
쉽게 이해하는 예시
사용자 설정 하나를 합치는 기능이 다른 처리에서도 읽는 기본 속성을 바꾸어 권한 판단이나 화면 동작에 영향을 주는 예입니다. 실제 영향은 오염된 값을 어디에서 사용하는지에 따라 달라집니다.
종류와 버전 및 관련 개념의 차이
클라이언트와 서버
브라우저에서 발생하면 화면 처리와 브라우저 코드에, 서버에서 발생하면 서버 업무 로직에 영향을 줄 수 있습니다. 두 환경의 결과를 같다고 단정하지 않습니다.
자기 속성과 상속 속성
객체 자신의 속성만 허용해야 하는 검사에서 상속 속성까지 받아들이면 위험이 생길 수 있습니다. 입력 구조와 허용 속성을 제한하고 필요한 자료 구조를 선택해야 합니다.
적용 대상과 조건
자바스크립트의 객체 병합, 동적 속성 입력과 설정 처리에서 확인합니다. 라이브러리의 수정 버전과 입력 검증 조건도 살펴야 합니다.
확인할 부분과 오해하기 쉬운 점
일부 속성명 차단이 모든 경로를 막는다고 보장하지 않습니다. 실행 환경과 자료 흐름에 맞게 방어하며 오염 가능성과 실제 악용 결과는 구분합니다.
공식 참고 자료
아래 공식 자료의 정의와 적용 범위를 바탕으로 작성했습니다. 예시는 개념을 설명하기 위한 상황이며 실제 작업 기록을 뜻하지 않습니다.
검토 기준일: 2026-10-26
함께 확인할 용어와 안내 글
관련 용어와 글
함께 비교할 용어
- BFLA (Broken Function Level Authorization) 기능 수준 권한 부여 취약점
- XXE (XML External Entity) 외부 엔터티 취약점
- Insecure Deserialization 안전하지 않은 역직렬화
- Path Traversal 경로 탐색 취약점
- HTTP Request Smuggling (Hypertext Transfer Protocol Request Smuggling) 하이퍼텍스트 전송 프로토콜 요청 밀수
- Credential Stuffing 유출 자격 증명 대입
- Password Spraying 비밀번호 스프레이 공격
- IDOR 안전하지 않은 직접 객체 참조