← 목록으로

안전하지 않은 역직렬화 (Insecure Deserialization)

[Web] Web · 작성: 2026-07-19 19:15:17 · 조회 2

역직렬화는 저장되거나 전송된 데이터(바이트/문자열)를 다시 객체로 복원하는 과정이다. 이 과정에 신뢰할 수 없는 입력이 들어가면, 단순 데이터 복원을 넘어 객체 생성자·소멸자·매직 메서드가 공격자 의도대로 실행되면서 임의 코드 실행으로 이어질 수 있다.

언어별로 흔히 나오는 형태

탐지 방법

  1. 쿠키, 히든 폼 필드, 캐시된 데이터 등에서 Base64로 인코딩된 값을 찾는다 — 디코딩했을 때 Java는 aced0005로 시작하는 매직 바이트, PHP는 O:8:"ClassName" 같은 패턴이 보이면 역직렬화 대상이다.
  2. 해당 값을 조작했을 때 에러 메시지에 클래스 구조/스택 트레이스가 노출되는지 확인 (가젯 체인 구성에 필요한 정보)
  3. Java는 ysoserial, PHP는 대상 코드에서 직접 가젯 체인을 분석해서 페이로드 생성 도구로 자동화하는 경우가 많다.

방어

Web 카테고리의 글 (7/11)

  1. SQL Injection: 원리, 탐지, 방어
  2. XSS (Cross-Site Scripting): Stored / Reflected / DOM 차이와 방어
  3. CSRF (Cross-Site Request Forgery): 원리와 방어
  4. IDOR / BOLA: 권한 검증이 빠졌을 때
  5. SSRF (Server-Side Request Forgery): 서버가 대신 요청하게 만들기
  6. 파일 업로드 취약점: 웹쉘로 이어지는 경로
  7. 안전하지 않은 역직렬화 (Insecure Deserialization)
  8. SSTI (Server-Side Template Injection): 원리와 탐지
  9. OS Command Injection: 원리와 필터 우회
  10. JWT 취약점: alg=none부터 알고리즘 컨퓨전까지
  11. Race Condition (TOCTOU) 취약점
← 파일 업로드 취약점: 웹쉘로 이어지는 경로 SSTI (Server-Side Template Injection): 원리와 탐지 →