
CVE-2026-79986에 대한 재현기 및 분석으로, Apache Camel camel-azure-files에서 공유 목록 이름이 폴링된 디렉터리를 벗어나는 경로 순회 취약점입니다.
azure-files consumer가 — 다른 원격 파일 consumer들과 동일한 RemoteFileConsumer 기본 클래스에서 파생되며 단순 연결 헬퍼를 통해 원격 경로를 구성하는 — 구성된 디렉터리와 Azure File 공유 목록에 보고된 이름을 연결하여 각 폴링된 파일의 원격 경로를 구성하며, 포함 검사가 없는 Apache Camel 취약점의 재현 저장소입니다. 따라서 단일 경로 세그먼트가 아닌 목록 이름은 폴링된 디렉터리 외부로 확인되어 검색되었고, delete/move/preMove/moveFailed/readLock=rename과 함께 사용 시 삭제 또는 이름 변경이 발생했습니다.
이 재현 저장소는 작성자 전용입니다 — 아래 참조 — 그리고 실행 가능한 CVE-2026-79983 (
camel-ftp) 및 CVE-2026-79984 (camel-mina-sftp)의 Azure-Files 형제 저장소이며, 이들은 내장된 악성 서버에 대해 동일한 근본 원인과 수정 사항을 종단 간으로 입증합니다.
따라서 이 저장소는 정확히 영향을 받는 consumer 배선(실제 camel-azure-files 라우트, AzureFilesRoute.java / AzureFilesRoutes.java 참조)을 포함하고, 메커니즘과 수정 사항을 문서화하며, 실행 가능한 종단 간 입증은 위의 FTP 및 SFTP 재현 저장소로 미룹니다.
| 런타임 | 디렉터리 | 스택 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-azure-files 4.22.0 (영향받음; 4.22.1에서 수정됨) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-azure-files 3.29.0 (Camel 4.15.0, 영향받음) |
두 모듈 모두 Azure 자격 증명 없이 정상적으로 컴파일되고 시작됩니다(라우트는 autoStartup=false로 정의됨). 정확히 영향을 받는 라우트를 자신의 Azure File 공유로 지정하려면 az.account/az.share/az.sharedKey와 함께 -Daz.enabled=true를 설정하십시오.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # prints the explanation + links to the runnable PoCs
docker compose down
| 속성 | 값 |
|---|---|
| 구성 요소 | camel-azure-files (azure-files 스킴) |
| CWE | CWE-22 (경로명의 부적절한 제한) |
| 심각도 | HIGH |
| 공격 벡터 | 단일 경로 세그먼트가 아닌 공유 목록 이름(서버 제공) |
| 영향 | 엔드포인트의 자격 증명을 사용하여 폴링된 디렉터리 외부의 파일을 읽고, delete/move/readLock=rename과 함께 사용할 경우 삭제 또는 이름 변경 |
| 영향받는 버전 | 4.0.0부터 4.18.5 이전, 4.19.0부터 4.22.1 이전 |
| 수정된 버전 | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24487 |
| 크레딧 | Dilrevx from NSSL, SJTU |
권고문: https://camel.apache.org/security/CVE-2026-79986.html
azure-files 컨슈머는 이제 다른 원격 파일 컨슈머와 동일한 포함 검사를 적용합니다. 폴링된 디렉터리 외부로 벗어나는 확인된 경로는 경고와 함께 건너뛰므로, 순회 세그먼트를 포함한 목록 이름이 더 이상 검색/삭제/이름 변경 피연산자에 도달하지 않습니다.
filter/antInclude/include를 사용하여 컨슈머를 단일 세그먼트 이름만 허용하도록 제한하고, 목록이
완전히 신뢰되지 않는 공유에 대해서는 delete/move/preMove/moveFailed/readLock=rename 사용을
피하십시오.
이 저장소는 교육 및 방어 목적으로 게시됩니다. Apache Camel 사용자가 취약점을 이해하고, 영향을 받는지 확인하며, 업그레이드가 문제를 해결하는지 검증할 수 있도록 돕기 위함입니다. 소유하거나 운영하지 않는 시스템에 이 자료를 사용하지 마십시오.