XSS란 무엇인가
1.XSS
XSS는 웹 해킹 공격 중 하나이다.
XSS는 Cross site scripting의 약자지만 CSS가 아닌 이유는 동음이의어로 Cascading Style Sheets와 겹쳐서 XSS라고 한 다. (이와 비슷하게 CSRF도 있는데 XSS는 공격대상이 Client이고 이는 공격대상이 Server 라는 차이가 있다.)
2.XSS의 방법
크로스 사이트 스크립트라는 이름처럼 이 방법은 자바스크립트를 일반적으로 사용한다.
이를 이용해서 악성 스크립트를 기존 웹 사이트의 url에 덧붙이거나,새로 url을 만들어 유저에게 노출시키는 등으로 정 보를 빼오는 공격 방법이다.
XSS자체는 url에 덧붙이는 sql 인젝션과 비슷하지만 sql은 새 스크립트를 작성 한 것을 덧붙이는게 아니라 수정한 쿼 리 문을 덧붙인다는게 다르다.
3.XSS의 종류
XSS의 공격 방법에는 아래 세가지가 있다.
- Reflected XSS
- Stored XSS
- Dom based XSS
(1) Reflected XSS
Reflected XSS는 악성 스크립트가 포함된 url을 유저에게 노출시켜 클릭하도록 유도해서 데이터를 받는 일시적인 방 법이다.
(2) Stored XSS
Stored XSS는 유저에게 클릭을 유도하지 않고 서버의 취약한 부분에 악성 스크립트를 삽입해서 데이터베이스에 저 장 한다.따라서 지속적으로 공격한다 고 해서 persistent XSS라고도 불린다.
(3) DOM based XSS
DOM(Document Object Model) based XSS에서 DOM은 HTML및 XML문서 에 접근하는 방법을 표준으로 정의하는 문서 객체 모델이다. 즉 구조화된 문서를 표현하는 방식인데 유저의 브라우저에서 DOM환경을 수정하여 공격 구문 이 실행되는 XSS공격이다.즉 검증되지 않은 값이 자바 스크립트를 통해 삽입되어 발생하는 취약점이다.
추가적으로 위의 두 방법은 서버 측 결함으로 인해 응답 페이지에 악성 스 크립트 구문이 포함되어 브라우저로 전달 되는 것이지만,이것은 서버와 관계 없이 브라우저에서 발생한다.
4.대응 방안
- 필터링
- 방어 라이브러리 사용
- 브라우저 확장 앱 사용
- 웹 방화벽을 사용
(1)필터링
필터링은 정규식을 이용해서 파라미터 값을 대한 검증을 하는 것이다.그냥 한마디로 덧붙이는 스크립트에 들어가는 공통 파라미터 scipt,<>같은 특수 문자를 미리 지정해 놓고 의심되는 것들을 거르는 것이다.
(2)방어 라이브러리
위의 필터링을 모아놓은 것을 방어 라이브러리라고 한다. 아래는 대표적인 오픈소스 라이브러리이다.
- -AntiXSS AntiXSS 라이브러리(Microsoft)
- -OWASP ESAPI 라이브러리(비영리)
- -NAVER Lucy(Naver)
(3)브라우저 확장 앱
브라우저 확장 앱은 보안을 확장하는 것으로 Microsoft Edge나 Chrome등의 브 라우저의 스토어에서 다운 받고 적 용 해주면 된다.
(4)웹 방화벽
웹 방화벽은 웹방화벽의 기본 역할은 그 이름에서도 알 수 있듯,SQL Injection,XSS 등과 같은 웹 공격을 탐지하고 차 단하는 것입니다.웹 방화벽에는 하드웨어형,소프트웨어형,클라우드형으로 세가지 종류가 있다.
먼저 하드웨어형 웹 방화벽이 있다.이는 웹 및 애플리케이션 서버와 가까운 LAN 내에 설치되고 하드웨어를 구입해서 설치해야하지만 빠르고 고성능이다.
다음으로 소프트웨어형 웹방화벽은 하드웨어 기기 없이 가상 머신(Virtual Machine, VM) 위에 설치됩니다. 하드웨 어형과 차이점은 Hypervisor 가 필요하단 것이다.소프트웨어형 웹방화벽은 느리지만 활용도가 높다.
마지막으로 클라우드형 웹방화벽은 서비스 제공업체가 SaaS(Software-as-a-Service) 형태로 직접 제공, 관리하는 웹방화벽 형태로 구매해야한다.세부적인 설정은 어렵지만 간편하다.
이와 같이 여러 방법이 있지만 예방법이기 때문에 가급적 소프트웨어를 제 때 업데이트 하는 것이 좋다.
왜냐하면 소프트웨어만 업데이트 하는 것이 아니라 발견된 취약점을 반영한 보안 기능들도 업데이트
되는 것이기 때문이다.