왜 python의 pickle에서 언피클을 함부로 하면 안 되는지 알아봅시다.
pickle을 loads할 때 신뢰할 수 없는 데이터는 절대로 언피클하지 말라고 되어 있습니다. 왜 그럴까요? 문서의 이 부분에서도 잠깐 언급되는 부분이지만, os.system과 같은 함수들을 수행되게 할 수 있기 때문입니다. 문서에 나온 코드를 조금 응용해서 실습해 보겠습니다. 먼저, b"cos\nsystem\n(S'rm -r *.txt'\ntR."이 pickle.loads의 인자로 들어왔습니다. 해당 python 파일을 실행시켜 보겠습니다. 실행 전과 후를 비교해 보면, txt 파일이 죄다 사라졌음을 볼 수 있습니다. 이것만 봐도 그냥 깡으로 필터링 없이 처리하면 얼마나 위험한지 알 수 있습니다. pickletools의 dis를 이용하면, 해당 byte가 어떻게 해석되는지를 보여줍니다. 요렇게 해석이..
코딩/파이선
2022. 12. 8. 03:36
최근댓글