개념 사전 · 개념
안전하지 않은 역직렬화
Insecure deserialization · 안전하지 않은 역직렬화
역직렬화는 저장·전송된 표현에서 자료나 객체를 복원하는 과정이다. 일부 객체 형식은 복원 중 코드를 실행할 수 있어 신뢰할 수 없는 입력을 일반 자료처럼 다루면 안 된다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 자료 전용 형식과 실행 가능한 객체 복원을 구분한다.
- 입력의 타입·필드·길이·값 범위를 정한다.
- 출처 검증과 복원 후 권한·자원 검사를 연결한다.
02어떤 순서로 동작하나
- 형식 선택
외부 교환에는 필요한 자료만 표현할 수 있는 형식을 우선 고려한다. JSON도 후속 코드가 위험한 연산에 연결하면 전체 기능이 자동으로 안전해지지는 않는다.
- 입력 제한
허용 필드·타입·범위·중첩 깊이를 검사한다. 문자열 숫자를 수치와 동일하게 허용할지 같은 규칙도 명시한다.
- 안전한 복원
외부 입력이 임의 타입이나 실행 가능한 객체를 선택하지 않게 한다. 신뢰되지 않은 은 로드하지 않는다.
- 업무 검증
복원된 요청이 현재 사용자의 권한과 상태에 맞는지 판단하고 시간·메모리·출력 한도를 적용한다. 서명 검증 성공도 이 단계를 생략할 이유는 아니다.
03먼저 알아둘 용어와 구성요소
- 객체나 자료를 전송 가능한 표현으로 바꾸는 과정.
- 복원 과정에서 연결되어 부작용을 일으킬 수 있는 기존 코드 조각.
- 객체 형식으로 신뢰하지 않는 입력을 복원하면 위험하다.
- 허용할 필드·타입·값의 구조적 계약.
04예제로 따라가기
- 가상 작업 요청의 timeout=10은 허용 범위의 정수일 때만 받아들이며 문자열 또는 지나치게 큰 수는 별도 처리한다.
- 발신자의 서명이 맞는 객체라도 오래된 요청을 재생할 수 있다면 만료·고유 식별자 검사 없이 실행해서는 안 된다.
- 메모리 이미지를 파일로 만드는 것과 전체 메모리 포렌식 획득은 서로 다른 작업이다.
05혼동하기 쉬운 점과 확인 기준
- 에 인코딩이나 압축을 추가해도 복원 과정의 실행 가능성이 사라지지 않는다.
- ·서명은 출처·변경 여부를 검증하는 층이지 모든 객체 그래프와 업무 효과를 허용하는 권한은 아니다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.