본문 바로가기

보안/취약점

[Insecure Deserialization] 역직렬화 취약점

직렬화(Serialization)란?

 -  직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다

역직렬화(Deserialization)란 ? 

 -  직렬화한 데이터를 본래의 객체로 되돌리는 변환을 말한다.

 

[그림 1] 직렬화, 역직렬화

직렬화의 종류

  • 바이너리 직렬화
  • XML 직렬화
  • JSON 직렬화

역직렬화 취약점 동작 방식 

안전하지 않은 역직렬화 예시

yaml.load() 코드를 통해서 프로그램은 입력받은 yaml 파일을 역직렬화 하게 됩니다. 사전에 입력받은 파일에 대한 별도의 검증이 없으므로 파일에 악성코드가 들어 있다면 그대로 실행되게 됩니다. 그래서 파이썬 yaml 모듈에서는 yaml.safe_load() 이라는 안전한 로드 방법을 제공하고 있습니다. 

 

대응 방안

안전하지 않은 역직렬화 취약점은 결국 원격 코드를 실행할 수 있는 Injection 공격입니다. 

 

1) 신뢰할 수 없는 출처로부터 직렬화된 객체를 허용하지 않거나 원시 데이터 유형만 허용하는 직렬화 매체 사용

2) 직렬화된 객체에 대한 디지털 서명과 같은 무결성 검사 구현

3) 낮은 권한 환경에서 역직렬화 코드를 분리하여 실행

4) 역직렬화 실패에 대한 로그 기록 


Reference

 

https://ko.wikipedia.org/wiki/%EC%A7%81%EB%A0%AC%ED%99%94

 

직렬화 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. -->

ko.wikipedia.org

https://portswigger.net/web-security/deserialization

 

Insecure deserialization | Web Security Academy

In this section, we'll cover what insecure deserialization is and describe how it can potentially expose websites to high-severity attacks. We'll highlight ...

portswigger.net

OWASP Top Ten Web Application Security Risks | OWASP

 

OWASP Top Ten | OWASP Foundation

The OWASP Top 10 is the reference standard for the most critical web application security risks. Adopting the OWASP Top 10 is perhaps the most effective first step towards changing your software development culture focused on producing secure code.

owasp.org