Untitled

session login이라 하면 웹 페이지 개발 시 로그인/로그아웃 기능을 생성할때 이용되는 로직 중 가장 간단한 로직 중 하나이다…

deserialize 취약점…?

일단 직렬화, 역직렬화 부터 알아보자.

직렬화**(Serialize)**

언어 문맥에서 구조나 상태를 다른 컴퓨터 환경에 저장하고 나중에 다시 사용할 수 있는 포맷으로 변환하는 과정을 의미한다. 웹 상에서 직렬화는 객체들의 데이터를 연속적인 데이터로 변형하여 Stream을 통해 데이터를 읽도록 한다. 주로 객체를 파일로 저장하거나 다른 곳으로 전송할 때 사용된다.

역직렬화(deserialize)

 직렬화된 데이터를 역으로 직렬화하여 다시 객체의 형태로 복원하는 것을 의미한다.

역직렬화(deserialize) 취약점

<aside> 💡 역직렬화(Deserialization) 취약점이란 직렬화-역직렬화 과정에서 악의적으로 객체 또는 변수를 추가 작성하여 악성코드를 실행하게끔 만드는 취약점이다. 파이썬의 pickle 모듈은 python의 객체구조 직렬화와 역직렬화를 위한 바이너리 프로토콜을 구현하기 위해 사용된다.

</aside>

<aside> 💡 파이썬의 pickle 모듈은 data serialize에 쓰는 모듈로, serialize란 class나 function 등을 문자열의 형태로 바꾸는 것을 의미한다.

</aside>

쉽게 말해

파이썬 객체 계층 구조 > 바이트 스트림

를 하게 만드는 모듈이라고 보면 된다.

취약점은 주로 pickle 데이터를 loads하는 과정에서 동작하는 내장 함수인 __reduce__()에서 발생한다고 한다.