XSS/CSRF 공격

XSS와 CSRF

XSS 공격은 Cross Site Scripting의 약자로, 웹 애플리케이션에서 많이 나타나는 취약점 중 하나입니다. 공격자가 웹페이지에 악성스크립트를 삽입하는 공격입니다.

[XSS 종류]

▷ Reflected XSS: 사용자(웹브라우저) -> 서버 -> 사용자(웹브라우저)

=> EX) 피싱메일, 스미싱링크

Stored XSS(=persistent XSS): 사용자(웹브라우저) -> 서버 -> DB -> 서버 -> 사용자(웹브라우저)

=> 가장 위험한 공격

=> DB/서버에 악성 스크립트가 저장되기 때문에 이 데이터를 지우지 않는다면 해당 페이지를 볼 때 마다 스크립트가 실행됩니다. 

DOM-Based XSS: 사용자(웹브라우저) 

 

CSRF 공격은 Cross Site Request Forgery의 약자로, 사용자 의지와는 무관하게 공격자가 의도한 행위를 웹사이트에 요청하게 만드는 공격입니다. 

 

취약점 설명

특정 페이지나 기능에 악의적인 스크립트를 삽입하여 공격자가 의도한대로 행동하도록 하는 취약점

=> 사용자 정보유출(비밀번호, 계정 등)을 탈취하는 피싱공격

=> 사용자 인증 도용

=> 악성코드 유포 및 브라우저 무한 반복 등의 공격

 

공격포인트

사용자 입력으로부터 들어오는 파라미터 값이 화면에 출력되는 부분을 확인

ex) 게시판 제목, 내용, 댓글, 검색 등 사용자 입력 값

 

해킹 시나리오


공격자는 악성 스크립트가 삽입된 게시물을 서버에 등록합니다. 악성스크립트가 삽입된 게시물을 열람하게 된 사용자는 PC 내 악성스크립트를 실행하게 됩니다. 악성스크립트를 통해 사용자의 중요정보가 공격자에게 유출됩니다.

 

보안대책

  • 외부로부터 입력되는 모든 문자열에 대해 특수문자 및 키워드 필터링 적용
  • 오픈소스 XSS 필터링 라이브러리 적용(Lucky-Filter, Anti-Samy)
  • 보안장비 내 XSS 필터링 정책 활용(WAF)
  • Http Only 설정 / CSP(Contents Security Policy)

 

[특수문자 필터링]

From To
<
>
( (
) )
# #
& &
'
"