본문 바로가기
TREND/ISSUE KEYWORD

SQL Injection을 통한 해킹

by ojava 2015. 9. 18.
반응형

커뮤니티 사이트인 뽐뿌가 해킹당해서 190만명의 정보가 털렸다고 하네요.

저도 한 때 스마트폰을 바꿔볼까하고 들어가본적이 있었던 곳인데 이렇게 기사로 뜨니까

충격적이네여. 해킹의 뒷 얘기도 놀라웠지만 여튼..

 

그 해킹에 사용된 방법이 SQL Injection이라고 하는데 그 개념과 막기위한 방법을

기사로 작성한 내용이 있어서 원문 기사는 링크 걸어두고 내용은 요약해서 적어보고자 합니다.

 

출처 원문 : 보안뉴스 <뽐뿌가 당한 SQL인젝션 해킹, 어떻게 막을 수 있나?>

http://www.boannews.com/media/view.asp?idx=47836&kind=1&search=title&find=%BB%CB%BB%D1

 

 

 

 

 

SQL Injection?

 

공격자 (해커) 가 주소창이나 아이디, 비밀번호 등을 입력하는 입력창에 SQL 명령어를 입력해

웹 사이트에 침투해서 서버를 제어하여 데이터베이스 정보를 출력하는 공격방식

 

 

 

SQL Injection 해킹/정보 유출 사례

 

- 2011, 소니픽처스 프랑스 웹 사이트, 170여 개의 이메일 주소 탈취

- 2014, 이스라엘 정부 관련 사이트 (어나니머스 공격), 기밀문서 유출

- 2014, 42만개 웹 사이트 (러시아 해킹 그룹 공격), 12억 개의 사용자 이름과 비밀번호

- 2015, 워드프레스용 플러그인이 해킹당해 100만개의 웹 사이트 해킹

- 2015, WTO 웹 사이트, 대량의 재직자 정보 유출

 

 

 

SQL Injection 공격으로부터 안전할 수 있는 방법

 

SQL Injection은 데이터베이스와 연동된 웹 어플리케이션에서 입력값에 대한

유효성 검증을 거치지 않기 때문에 가능한 공격 방법이다.

입력값에 대해 검증 없이 받아들이게 되면 동적 쿼리를 생성할 수 있게 된다.

의도하지 않게 데이터베이스의 정보를 전체 출력하도록 하는 쿼리가 생성될 수도 있으므로

개발단계에서 입력값에 대한 검증절차를 거치도록 설계 및 구현해야 한다.

 

 

아래의 방법은 한국인터넷진행원 인터넷침해대응센터에서 소개한 방법이라고 합니다.

 

1. DB 연동 시 동적 SQL을 사용하지 않는다. 저장 프로시저로 대체하여 사용한다.

입력한 값을 변수값으로 사용하여 SQL을 완성시키는 동적 SQL은 공격에 용이하다.

 

2. 안전한 웹 사이트 설계와 구현. 당연히 그렇게 하려고 노력하겠지만,

최소한 SQL Injection을 막기 위해서는 입력값을 검증하는 절차를 적절하게 구현해야 한다.

입력값의 크기를 검사하고 특수문자를 입력한 경우, 공격이 가능한 SQL 문장이 되지 않도록

안전한 문자로 치환하도록 해야 한다.

 

3. DB의 에러 메시지를 사용자에게 노출하지 않는다.

에러 메시지는 DB 정보를 노출하게 되므로 공격을 용이하게 만든다.

 

4. 웹 방화벽 활용. 근본적인 문제 해결은 프로그램 자체를 보완 조치하는 것이지만

프로그램 수정으로 인한 문제를 검토해야 하므로 그 동안 웹 방화벽이나 추가 보완 조치를

통해 공격 시도를 차단해야 한다.

 

5. 웹 보안 취약점에 대한 주기적인 점검.

초기 구현 단계에서 잘 구현했다고 하더라도 주기적으로 점검해줘야 한다!

 

 

 

 

 

보안은 열 번 잘 막아도 한 번 뚫리면 그간의 노력이 소용없어지니

늘 즉각대응하고 조치하고 주기적으로 점검하는 것 뿐이 방법이 없겠네요.

 

 

 

 

 

반응형