Insecure Deserialization

Dorothy·2022년 4월 15일
post-thumbnail

Insecure Deserialization

직렬화되어 전송되는 데이터 변조 및
원격으로 실행되는 역직렬화시 문제 발생 코드를 추가하는 등의 공격으로
기존에 구성되어 있는 데이터 구조를 변경하는 공격이 가능한 취약점

Ruby, PHP, Python, java 등이 영향을 받으며 발생빈도와 위험도가 높음

2017 OWASP Top10 중 8위


직렬화/역직렬화

직렬화(Serialization): 메모리상에서 실행되고 있는 객체의 상태를 전송/저장 가능한 바이트 스트림 형태로 변형하는 과정
역직렬화 (Deserialization) : 반대로 수신받은 데이터를 원래의 객체 형태로 복원하는 과정

자바 프로그램상 객체 생성 시 메모리에 상주하여 프로그램 실행 동안 필요에 따라 사용됩니다.
프로그램이 종료되면 메모리에 있던 객체는 사라지기 때문에
계속해서 재사용해야하는 경우 해당 데이터를 파일이나 데이터베이스 등에 저장해야 합니다.
이 때 저장을 위해 객체를 바이트 스트림이라는 순차적 데이터로 변환하는 과정이 필요하여 직렬화를 수행합니다.

직렬화/역직렬화는 저장 뿐만이 아니라 객체 데이터를 네트워크를 통해 전송할 때도 사용 가능합니다.
하나의 호스트 내에서 여러 개의 프로세스 (또는 프로그램)가 동일한 객체를 사용할 수 있도록 할 수 있고, 인터넷을 통해 여러 호스트의 프로그램이 동일한 객체를 사용하는 것도 가능하게 합니다.


취약점 발생 개요

(1) 전송 받은 데이터를 역직렬화 하는 과정에서 데이터 무결성을 검증하지 않고 그대로 서버에 전달
(2) 공격자는 역직렬화가 수행되는 곳에서 악의적으로 객체 또는 변수를 추가 작성하여 전송
(3) 취약 서버의 단순한 데이터 손상이나 애플리케이션 충돌을 야기하고 DoS 공격으로 이어질 수 있으며, 원격 코드 실행이나 인젝션, 권한 상승 공격 등 가능


실습 환경 구성

취약점 실습

profile
선영이가 시켜서 대충 갈기는 어리바리 포스트

0개의 댓글