핵심 요약
- 오픈소스 플랫폼 소스헛의 빌드 로그 변환 라이브러리(ansi2html.py)에서 XSS 취약점이 발견되었습니다.
- 공개 메일링 리스트 CI 등을 통해 로그에 악성 코드를 주입하면 열람자의 CSRF 토큰과 배포 키를 탈취할 수 있습니다.
- 인라인 스크립트를 허용하던 보안 정책(CSP)의 문제점과 함께 권한 탈취 시나리오가 공개되었습니다.
요약 오픈소스 호스팅 및 CI 플랫폼인 소스헛(SourceHut)에서 빌드 로그를 통해 계정 탈취와 관리자 권한 획득까지 가능했던 치명적인 XSS 취약점 분석 글이 공개되었습니다.
작성자는 소스헛 인스턴스를 직접 구축하려다 빌드 로그 화면의 스크롤 문제를 확인하고 페이지 소스를 열어보게 되었습니다. 그 과정에서 ANSI 이스케이프 코드를 웹용 HTML로 변환해 주는 라이브러리인 ansi2html.py의 비효율적인 코드와 파싱 구조를 발견했습니다.
추가 분석 결과, ansi2html이 하이퍼링크(OSC 8)를 처리할 때 악의적인 따옴표나 이벤트 핸들러(autofocus, onfocus 등)를 제대로 검증하지 않아 그대로 브라우저에 임베드되는 XSS 취약점이 존재함을 찾아냈습니다. 이로 인해 공격자는 소스헛 유료 계정이 없더라도 공개 메일링 리스트에 패치를 보내 CI를 돌리거나, 로그에 출력되는 외부 리소스를 조작하는 것만으로 빌드 로그에 임의의 자바스크립트를 삽입할 수 있었습니다.
더 큰 문제는 해당 빌드 로그 페이지에 CSRF 토큰이 포함되어 있어, 관리자나 다른 사용자가 해당 로그를 열람하는 즉시 스크립트가 실행되어 관리자 권한을 부여받거나 배포 키(Deploy Key)를 탈취할 수 있는 구조였다는 점입니다. 작성자는 안전하지 않은 인라인 스크립트를 허용하는 CSP(Content-Security-Policy) 정책의 강화를 방어 대책으로 제시했습니다.
Sponsored · 광고