본문 바로가기

Knowledge

[Knowledge] 360XSS

반응형

들어가기 전

최근에 신박한 방법의 XSS 공격에 대해 들었고, 그 부분을 다룬 글을 작성하려고 한다.


본문

본격적으로 이야기를 시작하기에 앞서, 먼저 XSS 공격이 무엇인지 간단히 알아보자

 

XSS(Cross Site Scripting)란?

XSS(크로스 사이트 스크립팅)는 사용자가 입력한 값에 대한 검증이 부족하여, 악성 스크립트가 실행되게 만드는 보안 취약점이다. 이를 통해 공격자는 사용자의 정보(예: 로그인 정보)를 탈취하거나, 악성 코드를 삽입하여 피해를 줄 수 있다.

 

XSS는 크게 두 가지 종류로 나눌 수 있다.

 

1. Stored XSS

이름 그대로 서버에 악성스크립트가 저장(Stored)되는 방식이며, 악성 스크립트가 서버 측에 저장되어 사용자가 해당 서버로 요청을 보낼 때마다, 저장된 악성 스크립트가 응답 메시지에 포함되어 실행된다. 이 방식을 악성 코드가 서버에 영구적으로 저장되기 때문에 여러 사용자에게 피해를 줄 수 있다.

 

2. Reflected XSS

이 방식은 사용자가 요청한 파라미터가 즉시 서버에서 반사되어 응답 메시지에 포함되는 형태이다.공격자는 악성 스크립트를 포함한 URL을 생성하여, 사용자가 클릭하도록 유도하고, 그 결과 악성 코드가 실행되는 방식이다.

 

이렇게 XSS 공격에 대해 간단히 알아봤다면, 이제 본격적으로 '360XSS ' 공격에 대해 이야기를 해보자

 

360XSS란?

360XSS 공격은 Krpano 프레임워크의 취약점을 악용한 공격이다.(CVE-2025-360XSS) Krpano는 유명한 3D 뷰어 프레임워크로, 이를 이용해 3D 콘텐츠를 웹에서 볼 수 있다.

 

이 공격의 유래는 보안 연구원 Oleg가 발견한 취약점에서 비롯되었다. Oleg는 구글에서 특정 단어를 검색했을 때, 신뢰할 수 있는 사이트에서 성인물 관련 포스터의 글이 올라오는 것을 발견하게 되었다. 이 상황을 이상하게 여긴 Oleg는 해당 사이트를 분석해본 결과, URL에 의심스러운 요소가 포함되어 있다는 것을 알게 되었다. 그 URL의 예시는 아래와 같다.

https://goolgle.com/?xml=https://staging-prep-cms.scouts.org.uk/Ink/video/?video=abcde.html

위 예시 URL에서 처음에는 신뢰할 수 있는 구글의 URL이 보였지만, 뒤에 XML 파라미터 값에 이상한 URL이 추가되어 있었고, 이를 이용해 공격이 가능했다는 사실을 알게되었다.

 

Krpano 프레임워크의 'onloaded' 이벤트를 활용하여 자바스크립트를 실행시킬 수 있었고 공격자는 이를 통해 base64로 인코딩된 악성 스크립트를 삽입하고, 이를 Krpano가 로드할 때 실행될 수 있도록 하였다.

<krpano version="1.0.8.15">
	<layer name="js_loader"
    	type="container"
        visible="false"
        onloaded="js(eval(var w=atob('A29ucagda...odIdsdJ');eval(w)););"/>
</krpano>

 

해당 취약점은 2020년에 이미 발견된 것으로, CVE-2020-24901에 등록되었다. 하지만 중요한 문제는 Krpano 개발자가 이를 해결하기 위한 조치를 미흡하게 취했다는 점이다. Krpano는 passQueryParameters 설정을 'true'로 설정하면 모든 파라미터를 3D 뷰어로 전달할 수 있게 되며 이로 인해 XSS가 발견될 수 있으니 false로 설정하면 일부 하용된 파라미터만 사용하도록 제한되어 취약점을 예방할 수 있다고 하였으나 그럼에도 불구하고 일부 파라미터에는 여전히 XML 파라미터가 허용되어 있어 공격이 가능했다.

 

 

 

대응방안

Krpano 프레임워크의 최신 버전으로 즉시 업그레이드를 해야 하며, 다음과 같은 Content Security Policy(CSP) 구성을 권장한다.

Content-Security-Policy: 
  default-src 'self';
  script-src 'sha256-ABC123...' 'strict-dynamic';
  style-src 'self' fonts.googleapis.com;
  img-src * data:;
  frame-src 'none';
  upgrade-insecure-requests;

 

마무리

360XSS는 Krpano 프레임워크의 취약점을 악용한 공격으로, 적절한 보안 설정이 이루어지지 않으면 XSS 공격이 발생할 수 있다. XSS 공격은 웹 보안에서 매우 중요한 이슈이므로, 이를 철저히 방어하는 것이 필요하다.


 

반응형