Skip to content

[Item85] 자바 직렬화의 대안을 찾으라 #139

Description

@itsjustsora

## 목표

직렬화 문제에 대처하는 방법을 알아보자


## 핵심 요약

  • 자바 직렬화는 보안 취약점, 유지보수성 문제, 성능 저하 등의 단점이 있다.
  • 역직렬화 과정에서 원격 코드 실행(RCE), 서비스 거부(DOS) 공격 등의 위협이 발생할 수 있다.
  • 직렬화 대신 크로스-플랫폼 구조화된 데이터 표현을 활용해야 한다.
  • 직렬화를 어쩔 수 없이 사용해야 할 경우에는 신뢰할 수 없는 데이터는 역직렬화하지 말아야 한다.

## Topics

[1] 역직렬화의 취약점 이해하기
출처 : [RED팀] 역직렬화 취약점, 이렇게 하면 극복 가능!

Image
전송 받은 데이터를 역직렬화하는 과정에서 데이터 무결성을 검증하지 않고 그대로 서버로 전달하면 원격 코드 실행, DoS와 같은 공격에 노출될 수 있다.


[2] 역직렬화 취약점 시연

  1. /invoker/JMXInvokerServlet경로의 응답 패킷을 확인해보면 content-typeapplication/x-java-serialized-object로 직렬화된 데이터가 전달된 것을 알 수 있다.
    Image

  1. Deserialization Scanner를 사용해서 요청 패킷의 HTTP methodPOST로 변경하고 body 부분에 파라미터를 지정한 후 스캔하면 해당 부분에 취약점이 존재한다는 걸 알 수 있다.

Image


  1. 파라미터에 CommonCollections1 실행할 명령어를 공격 구문으로 입력합니다. 여기서는 calc를 입력하고 ysoserial 도구를 이용하여 전송할 공격 구문을 직렬화한다.

Ysoserial
Java 역직렬화 취약점을 악용하는 사이버 공격 도구로, 객체의 안전하지 않은 역직렬화를 수행하는 Java 및 .NET 애플리케이션을 공격할 수 있다.

Image


  1. 대상 서버에 요청 패킷을 전송하면 서버에서 명령어가 실행되어 계산기 프로그램일 실행되는 것을 확인할 수 있다. 공격자는 이런 방식을 통해 원격 코드를 실행하거나 악성 파일을 업로드할 수 있다.
    Image

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions