
cve-2018-8108
보안 테스트 중 우연히 발견한 문제입니다. bui는 프런트엔드 프레임워크로, 많은 기업에서 이 프레임워크를 사용하여 자체 프런트엔드를 구축하고 있습니다.
일반적으로 xss를 방어하는 방법은 사용자 입력을 불신 원칙에 따라 일괄 처리하고, 출력 시 이스케이프(escape)하여 프런트엔드 페이지에 전달해 표시하는 것입니다. 하지만 bui의 select 컴포넌트는 이 출력 부분을 표시할 때, 이미 이스케이프된 사용자 입력을 다시 역이스케이프(un-escape)하여 xss 페이로드가 기존 보안 메커니즘을 우회하고 계속 실행되도록 만들었습니다.
첨부 파일의 예제는 실제 사례에서 가져온 것입니다.
id가 “workGroupList”인 input 태그의 데이터가 이미 이스케이프된 것을 확인할 수 있습니다. 아래의 BUI.use는 select 컴포넌트를 사용할 때 "workGroupList"의 데이터를 호출하여, 우리가 입력한 xss 페이로드의 실행을 직접 트리거했습니다.
직접 실행해 보시기 바랍니다.