SK쉴더스 로고
ADT캡스캡스홈
SK쉴더스

Joomla 확장 iCagenda의 미인증 파일 업로드로 웹셸 실행 취약점 (CVE-2026-48939)

EQST Now | 2026.07.15

NOW Briefing

Brief 1 iCagenda(JoomliC가 만든 Joomla 이벤트 관리 확장)의 프런트엔드 이벤트 등록 폼에서 인증이 필요 없는 임의 파일 업로드로 원격 코드 실행이 가능한 CVE-2026-48939가 공개됐습니다. CVSS 10.0의 최고 심각도 취약점입니다.
Brief 2 로그인 계정 없이 PHP 웹셸을 업로드하고 HTTP로 호출해 웹서버 권한으로 명령을 실행할 수 있습니다. 2026년 6월 15일부터 자동화 스캐너를 이용한 제로데이 공격이 실제 환경에서 먼저 발생했습니다.
Brief 3 즉시 iCagenda 4.0.8 또는 3.9.15로 업데이트해야 합니다. images/icagenda/frontend/attachments/ 디렉터리에서 미확인 .php 파일을 점검하고, 침해가 확인되면 자격증명을 폐기해야 합니다.

Joomla 확장 iCagenda의 미인증 파일 업로드로 웹셸 실행 취약점 (CVE-2026-48939)

■ 개요

iCagenda는 JoomliC가 배포하는 Joomla용 이벤트·일정 관리 확장으로, 웹사이트에 행사 등록과 캘린더 기능을 추가합니다. CVE-2026-48939는 이 확장의 프런트엔드 이벤트 등록 폼, 즉 방문자가 행사를 제출하는 화면에 존재하는 인증이 필요 없는 임의 파일 업로드 취약점입니다. 영향 범위는 3.x 계열 3.2.1부터 3.9.14까지, 4.x 계열은 4.0.7까지 전 버전입니다. 로그인 계정이 없어도 공격이 성립하므로, iCagenda를 설치한 모든 공개 사이트가 잠재적 노출 대상입니다.

공격자는 확장자 검증 없이 PHP 파일을 웹서버가 접근 가능한 경로에 올리고, 해당 파일을 HTTP로 호출해 웹셸을 실행할 수 있습니다. 인증이 필요 없어 미인증 원격 코드 실행에 해당하며, CVSS 점수는 최고치인 10.0입니다. 벤더 분석에 따르면 접근 제어 우회 자체는 전 버전에 영향을 미쳤습니다. 다만 실제 PHP 셸 실행은 코어가 위험 업로드를 기본 차단하지 않는 Joomla 6 환경에서 주로 성립했습니다.

이 취약점은 2026년 6월 15일부터 공개 PoC 없이 자동화된 제로데이 공격에 먼저 악용됐으며, 공격은 iCagenda 사이트를 대량으로 훑는 전용 스캐너로 진행됐습니다. 이러한 실제 악용을 반영해 미국 CISA는 2026년 7월 10일 이를 실제 악용 취약점 목록(KEV)에 등재했고, 7월 중순에는 공개 PoC 코드가 GitHub에 게시됐습니다. 패치는 이미 배포됐으므로 즉시 업데이트해야 합니다.

■ 요약

항목 내용
CVE ID CVE-2026-48939 (iCagenda 사전 인증 파일 업로드 RCE)
CVSS 점수 CVSS 4.0 10.0 / Critical (AV:N/AC:L/PR:N/UI:N)
취약점 유형 CWE-284(부적절한 접근 제어), CWE-434(위험한 유형 파일 업로드)
영향/위험 • 사전 인증 임의 파일 업로드로 웹셸 RCE 가능
• 웹서버 권한 명령 실행·사이트 장악
• 무단 이벤트 등록 등 접근 제어 우회
취약 버전 • 3.2.1 ~ 3.9.14 (3.x 계열)
• 4.0.0 ~ 4.0.7 (4.x 계열)
패치 버전 • 4.0.8 (4.x)
• 3.9.15 (3.x 레거시)

■ 기술 분석

첫 번째 취약점은 접근 제어 계층 오류입니다. 벤더 분석에 따르면 '등록 전용' 권한 검사는 폼을 화면에 그릴지 결정하는 뷰(view, 화면 출력 계층)에만 걸려 있었습니다. 실제 제출을 처리하는 컨트롤러(controller, 요청 처리 계층)인 registration.submit은 이 검사를 전혀 하지 않았습니다. 공개 페이지에서 확보한 토큰으로 제출 엔드포인트에 직접 요청을 보내면 권한 설정이 통째로 우회됐습니다. 폼을 '등록 사용자 전용'으로 설정한 사이트는 물론, 제출 메뉴를 공개하지 않은 사이트도 영향을 받았습니다.

접근 제어 우회에 이어 두 번째 취약점은 파일 검증 부재입니다. 컨트롤러는 방문자가 보낸 파일의 확장자를 그대로 유지한 채 웹루트 하위 폴더 images/icagenda/frontend/attachments/에 저장했습니다. Joomla 내장 보안 도우미(MediaHelper의 허용 확장자 목록)를 호출하지 않아 .php 같은 위험 확장자도 걸러지지 않았습니다. 이 폴더는 웹에서 바로 접근 가능하므로, 저장된 PHP 파일은 HTTP로 호출하는 즉시 실행됩니다. 접근 제어 우회와 확장자 미검증이 결합하면서 미인증 웹셸 업로드가 가능해집니다.

📘 INFO

JoomliC는 패치 diff나 취약 함수 소스를 공개 저장소로 제공하지 않아, 취약 코드 원문 발췌는 확인되지 않았습니다.
본문의 동작 서술은 공개된 근본 원인 분석과 PoC를 근거로 합니다.

■ PoC

공개 PoC는 앞서 설명한 토큰 확보 → 업로드 → 웹셸 호출 흐름을 단일·대량 표적에 대해 자동화하는 GitHub 게시 파이썬 익스플로잇입니다. 취약 버전을 설치한 사이트는 방문자 제출 폼을 켜지 않았더라도 이 엔드포인트가 노출됩니다.

⚠️ WARN

이 코드는 실제 익스플로잇이 아니라 공개 PoC의 검증 관점을 방어적으로 단순화한 예시입니다.

# 공격자 산출물: 확장자 검증 없는 업로드 요청 (개념 예시)
POST /index.php?option=com_icagenda&task=registration.submit HTTP/1.1
Content-Type: multipart/form-data; boundary=---x

-----x
Content-Disposition: form-data; name="jform[attachment]"; filename="note.php"
Content-Type: application/x-php

# ... 웹셸 페이로드 생략 ...
-----x

# 발동: 웹루트에 저장된 파일을 그대로 GET 호출하면 실행됨
GET /images/icagenda/frontend/attachments/note.php

■ 탐지 및 점검

• 앞선 업로드·호출 흐름을 기준으로, 접근 로그에서 icagenda-batch/1.0 User-Agent와 세션 초기화 → submit 엔드포인트 POST → attachments 경로 GET으로 이어지는 순차 요청 패턴을 검색합니다.

images/icagenda/frontend/attachments/ 디렉터리의 .php 파일을 전수 점검하고, 정상 첨부가 아닌 파일은 웹셸로 간주해 즉시 격리합니다.

• 인증 없이 큐에 쌓인 미승인 이벤트 등록 레코드를 확인해 접근 제어 우회 흔적을 찾습니다.

• 2026년 6월 15일 이후 웹 접근 가능 디렉터리에 생성·수정된 신규 PHP 파일을 타임스탬프 기준으로 대조합니다.

# 전용 스캐너 User-Agent 탐지
grep -i "icagenda-batch/1.0" /var/log/apache2/access.log

# 공격 대상 디렉터리의 PHP 파일 존재 여부
find images/icagenda/frontend/attachments/ -name "*.php"

✅ CHECK

확장을 unpublish만 해둔 상태는 안전하지 않습니다.
컨트롤러가 계속 노출되므로 패치 적용 또는 완전 제거가 필요합니다.

■ 대응 방안

• 점검 결과와 관계없이, 즉시 iCagenda 4.0.8(4.x) 또는 3.9.15(3.x 레거시)로 업데이트합니다. 비활성화(unpublish)만으로는 컨트롤러 노출을 막을 수 없습니다.

• 패치 적용 후 컨트롤러 접근 제어와 MediaHelper 허용 목록이 실제로 동작하는지 확인합니다.

• 침해가 확인된 사이트는 Joomla 관리자 비밀번호와 시크릿·API 키를 폐기·재발급합니다.

• 공격자는 지속성 확보 수단을 여러 개 심는 경우가 많으므로, attachments 폴더 외에 설치 전체를 대상으로 2차 백도어를 점검합니다.

💡 TIP

6월 15일 이후 노출됐던 사이트는 실제 악용 기간과 겹치므로, 패치만으로 끝내지 말고 침해 발생을 전제로 대응해야 합니다.
셸 파일 제거와 자격증명 재발급을 함께 해야 재감염을 막을 수 있습니다.

[참고 자료]

iCagenda and Balbooa Forms Joomla Flaws Reportedly Exploited as Zero-Days — The Hacker News

iCagenda Zero Day File Upload RCE Fixed in 4.0.8 — mySites.guru

CVE-2026-48939 — GitHub Advisory Database (GHSA-4rh3-rmh3-hv6h)

shinthink/CVE-2026-48939 — 공개 PoC 저장소

  • #EQST_NOW
  • #취약점

관련 서비스

더 많은 보안 인사이트

SK쉴더스 유튜브 채널에서 확인하세요.

SK쉴더스 유튜브 채널에서 확인하세요.
보안 트렌드와 대응방법

매월 뉴스레터로 확인하세요.

매월 뉴스레터로 확인하세요.