출처:
https://docs.python.org/ko/3/library/pickle.html
파일을 파싱해서 딕셔너리, 리스트 등으로 만들어 놓은 파이썬 객체를 저장해놓아야하는 일이 생겼다.
찾아보다가 pickle 라이브러리를 쓰는 방법, JSON으로 저장하는 방법 크게 두 가지가 있다는 것을 알았다.
일단 피클링(pickling)을 한다는 것은 객체를 직렬화하는 것, 언피클링(unpickling)은 직렬화된 데이터를 다시 객체 계층 구조로 복원하는 것을 의미한다.
직렬화(serialization)은 마샬링(marshalling) 또는 평탄화(flattening)이라고도 한다.
마지막 실행 취약점이 무슨말인가 하니...
반드시 신뢰할 수 있는 데이터만 언피클 해야한다는 것이다.
언피클시에 외부 코드나 임의의 코드를 실행하는 것은 악의적인 피클 데이터를 구성할 수가 있다.
만약 변조되지 않았음을 보장하려면 hmac으로 데이터에 서명하는 방법을 쓸 수도 있다고 한다.