역직렬화 취약점이란?
* 직렬화: 객체를 전송 가능한 형태로 변형하는 것
- 자바 시스템에서 직렬화는 특정 클래스의 인스턴스 상태를 다른 서버로 전달하기 위해서 메모리 상 실행되고 있는 인스턴스 정보를 바이트 코드로 복사하는 과정을 말함
* 역직렬화: 직렬화된 데이터를 다시 객체 형태로 만드는 과정
* 객체: 키와 값(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
'보안 > 취약점' 카테고리의 다른 글
[CVE-2019-19781] CitrixADC 및 CitrixGateway 취약점 (0) | 2024.05.27 |
---|---|
[CVE-2022-22965] Spring4Shell 취약점 (0) | 2024.05.27 |
[CVE-2018-12116] Node.js SSRF 취약점 (0) | 2024.05.27 |
[CVE-2018-10562] GPON RCE 취약점 (0) | 2024.05.25 |
[CVE-2019-8942] WordPress RCE 취약점 (0) | 2024.05.24 |