영향
교차 사이트 스크립팅(XSS) 취약점을 성공적으로 악용한 공격자는 피해자 사용자로 가장하여 사용자가 수행하도록 승인된 작업을 수행하고 사용자의 데이터 [S1]에 액세스할 수 있습니다. 여기에는 계정을 하이재킹하기 위해 세션 쿠키를 훔치는 행위, 가짜 양식을 통해 로그인 자격 증명을 캡처하는 행위, 가상 변조 [S1][S2] 등이 포함됩니다. 피해자에게 관리 권한이 있는 경우 공격자는 애플리케이션과 해당 데이터 [S1]에 대한 모든 권한을 얻을 수 있습니다.
근본 원인
XSS는 애플리케이션이 사용자가 제어할 수 있는 입력을 수신하고 [S2]를 적절한 중화 또는 인코딩하지 않고 웹 페이지에 포함할 때 발생합니다. 이를 통해 피해자의 브라우저에서 입력을 활성 콘텐츠(JavaScript)로 해석하여 웹사이트를 서로 격리하도록 설계된 동일 출처 정책을 우회할 수 있습니다. [S1][S2].
취약점 유형
- 반영된 XSS: 악성 스크립트는 일반적으로 URL 매개변수 [S1]를 통해 웹 애플리케이션에서 피해자의 브라우저로 반사됩니다.
- 저장된 XSS: 스크립트는 서버(예: 데이터베이스 또는 주석 섹션)에 영구적으로 저장되며 나중에 [S1][S2]에게 제공됩니다.
- DOM 기반 XSS:
innerHTML[S1]에 쓰기와 같이 신뢰할 수 없는 소스의 데이터를 안전하지 않은 방식으로 처리하는 클라이언트 측 코드에 취약점이 전적으로 존재합니다.
구체적인 수정
- 출력 시 데이터 인코딩: 사용자가 제어할 수 있는 데이터를 렌더링하기 전에 안전한 형식으로 변환합니다. HTML 본문에는 HTML 엔터티 인코딩을 사용하고 특정 컨텍스트 [S1][S2]에는 적절한 JavaScript 또는 CSS 인코딩을 사용합니다.
- 도착 시 입력 필터링: 예상 입력 형식에 대해 엄격한 허용 목록을 구현하고 [S1][S2]를 준수하지 않는 모든 항목을 거부합니다.
- 보안 헤더 사용: JavaScript [S2]를 통한 액세스를 방지하려면 세션 쿠키에
HttpOnly플래그를 설정하세요.Content-Type및X-Content-Type-Options: nosniff를 사용하여 브라우저가 응답을 실행 가능한 코드 [S1]로 잘못 해석하지 않도록 하세요. - 콘텐츠 보안 정책(CSP): 강력한 CSP를 배포하여 스크립트를 로드하고 실행할 수 있는 소스를 제한하고 심층 방어 레이어 [S2]를 제공합니다.
FixVibe가 이를 테스트하는 방법
FixVibe는 확립된 스캐닝 방법론 [S1]에 기반한 다층 접근 방식을 통해 XSS를 감지할 수 있습니다.
- 패시브 스캔: XSS [S1]를 완화하도록 설계된
Content-Security-Policy또는X-Content-Type-Options와 같은 누락되거나 취약한 보안 헤더를 식별합니다. - 활성 프로브: 고유한 비악성 영숫자 문자열을 URL 매개변수 및 양식 필드에 삽입하여 [S1]를 적절하게 인코딩하지 않고 응답 본문에 반영되는지 확인합니다.
- Repo 스캔: DOM 기반 XSS의 일반적인 지표인
innerHTML,document.write또는setTimeout와 같이 신뢰할 수 없는 데이터를 안전하지 않게 처리하는 "싱크"에 대한 클라이언트 측 JavaScript 분석 [S1].
