개념 사전 · 개념

안전하지 않은 역직렬화

Insecure deserialization · 안전하지 않은 역직렬화

역직렬화는 저장·전송된 표현에서 자료나 객체를 복원하는 과정이다. 일부 객체 형식은 복원 중 코드를 실행할 수 있어 신뢰할 수 없는 입력을 일반 자료처럼 다루면 안 된다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 자료 전용 형식과 실행 가능한 객체 복원을 구분한다.
  • 입력의 타입·필드·길이·값 범위를 정한다.
  • 출처 검증과 복원 후 권한·자원 검사를 연결한다.

02어떤 순서로 동작하나

  1. 형식 선택

    외부 교환에는 필요한 자료만 표현할 수 있는 형식을 우선 고려한다. JSON도 후속 코드가 위험한 연산에 연결하면 전체 기능이 자동으로 안전해지지는 않는다.

  2. 입력 제한

    허용 필드·타입·범위·중첩 깊이를 검사한다. 문자열 숫자를 수치와 동일하게 허용할지 같은 규칙도 명시한다.

  3. 안전한 복원

    외부 입력이 임의 타입이나 실행 가능한 객체를 선택하지 않게 한다. 신뢰되지 않은 은 로드하지 않는다.

  4. 업무 검증

    복원된 요청이 현재 사용자의 권한과 상태에 맞는지 판단하고 시간·메모리·출력 한도를 적용한다. 서명 검증 성공도 이 단계를 생략할 이유는 아니다.

03먼저 알아둘 용어와 구성요소

객체나 자료를 전송 가능한 표현으로 바꾸는 과정.
복원 과정에서 연결되어 부작용을 일으킬 수 있는 기존 코드 조각.
객체 형식으로 신뢰하지 않는 입력을 복원하면 위험하다.
허용할 필드·타입·값의 구조적 계약.

04예제로 따라가기

  • 가상 작업 요청의 timeout=10은 허용 범위의 정수일 때만 받아들이며 문자열 또는 지나치게 큰 수는 별도 처리한다.
  • 발신자의 서명이 맞는 객체라도 오래된 요청을 재생할 수 있다면 만료·고유 식별자 검사 없이 실행해서는 안 된다.
  • 메모리 이미지를 파일로 만드는 것과 전체 메모리 포렌식 획득은 서로 다른 작업이다.

05혼동하기 쉬운 점과 확인 기준

  • 에 인코딩이나 압축을 추가해도 복원 과정의 실행 가능성이 사라지지 않는다.
  • ·서명은 출처·변경 여부를 검증하는 층이지 모든 객체 그래프와 업무 효과를 허용하는 권한은 아니다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.