본문 바로가기

보안/취약점

[CVE-2021-26857] 역직렬화(Deserialization) 취약점

728x90

역직렬화 취약점이란?

 

* 직렬화: 객체를 전송 가능한 형태로 변형하는 것

-  자바 시스템에서 직렬화는 특정 클래스의 인스턴스 상태를 다른 서버로 전달하기 위해서 메모리 상 실행되고 있는 인스턴스 정보를 바이트 코드로 복사하는 과정을 말함

* 역직렬화: 직렬화된 데이터를 다시 객체 형태로 만드는 과정

* 객체: 키와 값(value)로 구성된 집합

💥 취약점
 전송받은 데이터를 역직렬화하는 과정에서 데이터 무결성을 검증하지 않고 그대로 서버로 전달한다면 원격코드 실행이나 인젝션, 권한 상승과 같은 공격 발생 가능성 존재

 

Content-Type이 ' application/x-java-serialized-object '라면 직렬화된 데이터가 전달되었다는 것을 알 수 있다.

byte[] or String Serializable application/x-java-serialized-object application/x-java-object

 

대상 서버에 요청 패킷을 전송하면 서버에서 명령어가 실행되어 원격코드를 실행하거나 악성파일을 업로드 할 수 있다. 

 

역직렬화 취약점 대응 방안?

1. 입력 유효성 검사

 공격자가 전송한 임의의 객체를 역직렬화 하지 못하도록 화이트리스트 또는 블랙리스트 방식으로 입력값을 검증해야 한다.

  •  바이트 수를 제한한 입력 스트림 생성
  • 클래스 체크 및 개체 수를 제한하여 오브젝트 생성
  • 검증을 통과한 오브젝트를 읽어 객체로 변환 후 리턴

 

2. 송수신 데이터 암 복호화 또는 서명 추가

 송신 측에서 데이터를 암호화하고 수신측에서 복호화 하거나 데이터에 대한 서명을 추가한다.  이러한 확인하는 과정을 통해 무결성 검증을 거치면 중간자에 의한 객체 변조를 어렵게 할 수 있다. 

 

3. 지속적이 보안 패치

 취약점에 대한 보안 패치가 발표되었을때 권고사항을 지속적으로 관리하고 최신버전의 소프트웨어를 사용하는 것이 안전하다. 

 

 

 

 


https://www.lgcns.com/blog/cns-tech/security/3139/

 

[RED팀] 역직렬화 취약점, 이렇게 하면 극복 가능! - LG CNS

최근 마이크로소프트가 익스체인지 서버(Exchange Server)에 알려지지 않은 네 가지 취약점에 대해 긴급 패치를 발표했습니다. 이번 패치에는 서버에서 시스템 권한으로 원격 코드를 실행할 수 있는

www.lgcns.com