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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-43867 — CVE-2026-43867 재현기 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager 안전하지 않은 키 메타데이터 역직렬화 (RCE) | Kitploit
도구/GitHubGitHub/oscerd/cve-2026-43867
Vulnerability AnalysisCode AnalysisExploitationCloud SecurityBinary Exploitation
GitHuboscerd/cve-2026-43867

CVE-2026-43867

CVE-2026-43867 재현기 — Apache Camel camel-pqc AwsSecretsManagerKeyLifecycleManager 안전하지 않은 키 메타데이터 역직렬화 (RCE)

저장소 보기
462개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

camel-pqc AWS Secrets Manager 키-메타데이터 안전하지 않은 역직렬화 재현기 (CVE-2026-43867)

이 프로젝트는 Apache Camel의 camel-pqc 컴포넌트에서 Java 역직렬화 취약점을 시연하며, CVE-2026-43867로 추적됩니다. AwsSecretsManagerKeyLifecycleManager.deserializeMetadata()는 AWS Secrets Manager 시크릿에 저장된 포스트퀀텀 키 메타데이터를 Base64 디코딩한 후, 필터 없는 java.io.ObjectInputStream.readObject()로 역직렬화합니다. KeyMetadata로의 캐스팅은 readObject()가 반환된 후에만 발생하므로 readObject()의 모든 부수 효과가 먼저 실행됩니다. 해당 시크릿에 쓰기 권한(secretsmanager:PutSecretValue)이 있는 주체는 일반 키 수명주기 작업 중에 역직렬화되는 조작된 직렬화 객체를 저장할 수 있으며, 이는 잠재적으로 코드 실행으로 이어질 수 있습니다.

Advisory: https://camel.apache.org/security/CVE-2026-43867.html

취약점 요약

속성값
컴포넌트camel-pqc (AwsSecretsManagerKeyLifecycleManager)
영향받는 클래스org.apache.camel.component.pqc.lifecycle.AwsSecretsManagerKeyLifecycleManager#deserializeMetadata
CWECWE-502: 신뢰할 수 없는 데이터의 역직렬화
영향키 관리 애플리케이션에서 코드 실행 (메타데이터 시크릿에 대한 쓰기 권한 필요)
영향받는 버전4.18.0부터 4.18.3 이전, 4.19.0부터 4.21.0 이전
수정된 버전4.18.3, 4.21.0 (camel-pqc는 4.14.x LTS 라인에 없음)
JIRACAMEL-23726
제보자Venkatraman Kumar (Securin)

CVE-2026-46590과 동일한 결함 (독립적으로 제보됨; 해당 권고는 HashiCorp Vault 및 파일 기반 계열 매니저도 포함)이며, CVE-2026-40048 (CAMEL-23200)의 불완전한 수정 후속 조치이기도 합니다. CVE-2026-40048은 FileBasedKeyLifecycleManager를 JSON/PKCS#8/X.509 형식으로 변경했지만 ObjectInputFilter를 추가하지 않았고 AWS/Vault 매니저를 포함하지 않았습니다.

기술적 세부 사항

root@kitploit:~
// AwsSecretsManagerKeyLifecycleManager - affected 4.18.2
private KeyMetadata deserializeMetadata(String base64) throws Exception {
    byte[] data = Base64.getDecoder().decode(base64);
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    try (ObjectInputStream ois = new ObjectInputStream(bais)) {   // NO ObjectInputFilter
        return (KeyMetadata) ois.readObject();                    // gadget fires here, before the cast
    }
}

getKeyMetadata(keyId)는 <keyPrefix>/<keyId>/metadata라는 이름의 시크릿을 읽고, JSON 봉투({"metadata":"<base64>","keyId":...,"algorithm":...})를 파싱한 뒤 metadata 필드를 deserializeMetadata에 전달합니다. 수정 버전(4.18.3 / 4.21.0)은 모든 매니저에 대해 메타데이터를 JSON으로 저장하는 공용 KeyMetadataCodec을 도입하고, 남아 있는 레거시 ObjectInputStream 읽기를 허용 목록 ObjectInputFilter로 제한합니다.

공격자와 피해자

피해자는 AWS 매니저로 PQC 키를 관리하는 애플리케이션입니다. 공격자는 메타데이터 시크릿(secretsmanager:PutSecretValue)에 쓸 수 있는 모든 주체입니다. 이 PoC는 AWS Secrets Manager를 에뮬레이션하기 위해 LocalStack을 사용하며, /exploit/attack 엔드포인트가 조작된 메타데이터 시크릿을 기록한 다음 매니저의 읽기 경로를 구동합니다.

root@kitploit:~
CVE-2026-43867/
├── pom.xml                 # camel-pqc 4.18.2 + aws-sdk secretsmanager 2.41.28 + commons-collections 3.2.1
├── Dockerfile              # runs the app (--add-opens for gadget build)
├── docker-compose.yml      # LocalStack (Secrets Manager) + the reproducer app
├── README.md
└── src/main/
    ├── java/com/example/
    │   ├── Application.java
    │   ├── Gadget.java             # CommonsCollections6 gadget, fires during readObject()
    │   └── ExploitController.java  # writes the crafted secret, then calls getKeyMetadata()
    └── resources/
        └── application.properties

실제 공격에서는 직렬화 바이트가 공격자에 의해 오프라인으로 생성됩니다(예: ysoserial 사용). 이 PoC는 가젯을 프로세스 내에서 빌드하므로 JVM이 --add-opens java.base/java.util=ALL-UNNAMED로 실행됩니다 — 이는 가젯 구성 세부 사항으로, 취약점과는 무관합니다.

전제 조건

  • Java 17+ 및 Maven 3.8+
  • Docker (LocalStack 및 앱 실행)

재현 단계

1단계: 모든 것 빌드 및 시작

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

그러면 LocalStack(AWS Secrets Manager 에뮬레이션)과 재현기 앱이 시작되며, 앱은 엔드포인트 오버라이드를 통해 AwsSecretsManagerKeyLifecycleManager를 LocalStack에 연결합니다.

2단계: 역직렬화 (RCE) 트리거

root@kitploit:~
curl -s http://localhost:8080/exploit/attack
# -> Wrote crafted serialized metadata to AWS Secrets Manager secret 'pqc/keys/victim-key/metadata'.
#    getKeyMetadata() threw java.lang.ClassCastException  (expected — the gadget runs during readObject ...)
#
#    >>> RCE proof — /tmp/pwned exists: true

3단계: 검증

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

정리

root@kitploit:~
docker compose down

공격 벡터

AwsSecretsManagerKeyLifecycleManager를 사용하며 키 메타데이터 시크릿을 애플리케이션 자신의 신뢰된 ID 외에 다른 주체가 쓸 수 있는 모든 애플리케이션이 해당됩니다. 역직렬화는 일반적인 키 수명주기 작업(getKeyMetadata, loadExistingKeys, listKeys, 로테이션 검사 등) 중에 실행됩니다.

악용 조건

  1. 영향받는 버전에서 camel-pqc의 AwsSecretsManagerKeyLifecycleManager를 사용하는 애플리케이션.
  2. 공격자가 메타데이터 시크릿에 쓸 수 있음(해당 시크릿에 대한 secretsmanager:PutSecretValue).
  3. 클래스패스에 가젯 라이브러리 존재 (여기서는 commons-collections:3.2.1).

권장 수정

4.18.3 / 4.21.0으로 업그레이드하십시오 (CAMEL-23726). 메타데이터는 JSON으로 저장되며, 남아 있는 모든 레거시 ObjectInputStream 읽기는 허용 목록 ObjectInputFilter로 제한됩니다.

완화 조치

업그레이드할 때까지:

  1. camel-pqc 메타데이터 시크릿에 대한 secretsmanager:PutSecretValue를 애플리케이션 자신의 ID(최소 권한 IAM)로만 제한하십시오.
  2. PQC 키 자재를 신뢰 수준이 낮은 주체가 쓸 수 있는 데이터와 분리된 시크릿에 보관하십시오.
  3. 클래스패스에서 가젯 라이브러리를 제거하십시오 (commons-collections 3.x 및 유사 라이브러리 업그레이드/제거).

면책 조항

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

도구 다운로드