
CVE-2026-9806 is a Stored Cross-Site Scripting (Stored XSS) vulnerability affecting CTI Transmute versions prior to the patched release.
CVE-2026-9806은 패치된 릴리스 이전 버전의 CTI Transmute에 영향을 주는 저장형 교차 사이트 스크립팅(Stored XSS) 취약점입니다. 이 결함은 알림 패널에 존재하며, 사용자가 제어하는 convert 이름이 포함된 알림 메시지가 알림 벨 드롭다운에서 innerHTML을 통해 제대로 된 살균 없이 렌더링될 때 발생합니다. 공격자가 알림에 나타나는 convert 이름을 생성하거나 조작할 수 있다면, 인증된 사용자가 알림 패널을 열 때 해당 브라우저에서 임의의 JavaScript가 실행될 수 있습니다.
알림 패널은 innerHTML을 사용하여 알림 항목을 구성합니다. 알림 메시지에는 사용자가 제어하는 convert 이름이 포함됩니다. 이 값들은 HTML 인코딩이나 살균 없이 DOM에 직접 삽입되므로, convert 이름에 포함된 모든 HTML 또는 JavaScript는 브라우저에서 해석됩니다.
개념적으로:
Attacker creates or influences a convert name
│
▼
Convert name stored in notification
│
▼
User opens notification panel
│
▼
Notification rendered using innerHTML
│
▼
Browser parses HTML
│
▼
Embedded JavaScript executes
이 취약점은 신뢰할 수 없는 입력을 일반 텍스트가 아닌 HTML로 렌더링하기 때문에 발생합니다.
Attacker
│
▼
Creates or modifies a malicious convert name
│
▼
Notification containing the convert name is generated
│
▼
Victim opens notification panel
│
▼
Notification dropdown inserts message using innerHTML
│
▼
Browser executes malicious JavaScript
│
▼
Actions performed within victim's authenticated session
convert가 HTML이 포함된 특수하게 조작된 이름으로 생성되었다고 가정해 봅시다.
이후 다른 인증된 사용자는 해당 convert를 참조하는 알림을 받습니다. 사용자가 알림 벨을 클릭하면 애플리케이션은 innerHTML을 사용하여 알림 메시지를 페이지에 삽입합니다.
브라우저는 convert 이름을 텍스트로 표시하는 대신 이를 HTML로 해석하고 포함된 JavaScript를 실행하므로, 공격자는 피해자의 브라우저 세션 내에서 작업을 수행할 수 있습니다.
정상 사용자가 다음과 같은 이름의 convert를 생성합니다:
Monthly Sales Report
애플리케이션은 이를 데이터베이스에 저장합니다.
대신 공격자는 HTML이 포함된 이름을 입력합니다:
Quarterly Report <b>Important</b>
애플리케이션이 저장하는 내용:
Quarterly Report <b>Important</b>
이후 다른 사용자는 다음과 같은 알림을 받습니다:
Convert "Quarterly Report <b>Important</b>" completed successfully.
애플리케이션이 다음과 같이 처리하면:
notification.innerHTML = response.message;
브라우저는 다음과 같이 렌더링합니다:
Convert Quarterly Report Important가 성공적으로 완료되었습니다.
는 HTML로 해석되기 때문입니다.
애플리케이션이 대신 다음과 같이 사용하면:
notification.textContent = response.message;
브라우저는 다음의 리터럴 텍스트를 표시합니다:
Convert "Quarterly Report <b>Important</b>" completed successfully.
어떤 HTML도 해석되지 않습니다.
성공적인 악용 시 공격자는 다음을 수행할 수 있습니다:
| 지표 | 점수 |
|---|
| CVSS v4.0 (CNA) | 6.3 (중간) |
NVD는 아직 자체 CVSS 평가를 할당하지 않았습니다.
참고: 공급업체는 정확한 취약 소스 코드를 공개하지 않았습니다. 다음은 취약한 패턴을 보여줍니다.
// User-controlled convert name
const message = response.notificationMessage;
// Unsafe rendering
notificationDropdown.innerHTML += `
<div class="notification">
${message}
</div>
`;
innerHTML은 알림 메시지를 HTML로 취급합니다. 메시지에 악성 convert 이름에서 비롯된 HTML이나 JavaScript가 포함된 경우, 브라우저는 이를 파싱하여 실행합니다.
const notification = document.createElement("div");
notification.className = "notification";
// Safe rendering
notification.textContent = response.notificationMessage;
notificationDropdown.appendChild(notification);
textContent를 사용하면 알림 메시지가 HTML이 아닌 일반 텍스트로 렌더링됩니다. 공개된 수정 사항에 명시된 대로, innerHTML 대신 DOM 메서드로 알림 요소를 구성하고 textContent로 콘텐츠를 할당하여 내장 스크립트의 실행을 방지했습니다.