Home > 전체기사
SQL 인젝션 해킹 공격, 어떻게 대응해야 하나요?
  |  입력 : 2015-03-14 12:06
페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기

Q. 최근 문제가 되고 있는 SQL 인젝션 공격에 대한 가장 효과적인 대응방법에는 어떤 것이 있나요?


A-1. SQL 인젝션(Injection)은 데이터베이스(DB)와 연동된 웹 어플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안 취약점을 말합니다.

취약한 웹 어플리케이션에서는 사용자로부터 입력된 값을 필터링 과정 없이 넘겨받아 동적 쿼리(Dynamic Query)를 생성합니다.
이는 개발자가 의도하지 않은 쿼리가 생성되어 정보 유출에 악용될 수 있습니다. 이처럼, SQL 인젝션은 입력값 검증 절차 문제에 기인하므로 개발단계에서부터 반드시 모든 입력값에 대한 적절한 검증절차를 설계하고 구현해야 합니다.


행정자치부 ‘시큐어코딩’ 가이드(2012년 9월 발간)에 따르면, SQL 인젝션을 방지하기 위한 안전한 코딩기법으로 PreparedStatement 클래스와 하위 메소드 executeQuery(), execute(), executeUpdate()를 사용할 것을 권고하고 있습니다.

일반 질의문(Statement)를 사용하면, 쿼리분석→최적화→권한체크→쿼리실행 단계를 매번 거치게 되는데, 이른바 동적 쿼리를 생성하게 되어 SQL 인젝션에 취약할 수 있지만, Prepared Statement를 사용하게 되면, 쿼리분석→최적화를 1번만 거치므로, 매번 실행될 때마다 재컴파일이 필요 없고(선)컴파일된 상태로 여러 번 실행될 수 있으므로, 원천적으로 쿼리 조작을 방지할 수 있습니다.


그러나 완벽하게 코드를 작성했다 하더라도 해당 어플리케이션과 관련없는 서드파티 소프트웨어를 통해 취약점이 생길 수 있으므로 주기적으로 취약점 점검을 통해 보안문제들을 점검하고 진단하는 과정이 필요하며, 새로운 취약점 발견사항에 대해 신속한 보안조치를 통해 웹서버, SQL 서버 보안을 강화할 수 있도록 해야 합니다.

(박정환 한국인터넷진흥원 팀장)


A-2. 현재 기업이나 기관은 SQL 인젝션 공격에 크게 2가지로 대응하고 있습니다. 첫 번째는 보안 솔루션(웹 방화벽 등)으로 대응하는 방법이고 두 번째는 시큐어코딩으로 대응하는 방법입니다. 기업이나 기관은 위 두 가지를 모두 다 적용한 경우와 둘 중 하나만 적용하는 경우로 나뉘는데 보안 솔루션으로 대응하는 것은 디폴트로 룰을 설정해 사용하는 경우 우회 가능성이 있기 때문에 효과적인 대응이 아니며, 가장 효과적인 대응방법은 소스코드단에서 시큐어 코딩을 통해 SQL 인젝션을 방어하는 것이 원천적으로 차단할 수 있습니다.


전체 소스코드에서 DB와 연동된 페이지를 목록화한 후, DB 쿼리문에 들어가는 입력 데이터에 대해 검증을 수행하는지 체크하고 SQL 쿼리 문(select, from, union, where, substr 등) 및 특수문자(',--,/*)가 있을 경우 필터링 및 치환하도록 적용하는 것이 가장 좋은 대응방법입니다.

(손기종 KISA 취약점분석팀 선임연구원/skj@kisa.or.kr)


A-3. 일반적으로 SQL 인젝션 취약점은 웹사이트가 데이터베이스와 연동된 기능 수행 시 사용자의 입력 값으로 쿼리 문자열을 전송했을 때 발생되는 에러나 비정상적인 결과에 DB정보, 인증정보 등 중요정보가 포함되거나 인증우회 등이 발생할 수 있다고 판단할 수 있습니다. 이런 SQL Injection에 대한 효과적인 대응방법으로는 △데이터베이스 쿼리문에 사용되는 문자열 검증 △사용자 입력 값 및 서버로 전송되는 파라미터에 대한 검증 △에러페이지에 대한 오류정보 노출 확인 △DB 접근권한(어플리케이션 접근) 최소화 등의 방법이 있습니다.

(임동철 열심히커뮤니케이션즈 리스크관리실 대리/neo3712@keencomms.com)


A-4. 취약점 진단을 통한 웹사이트 점검, 웹 방화벽 운영, 시큐어코딩 적용 등이 될 수 있으며, 최근 인젝션 툴이 많이 사용되고 있으므로 이러한 패턴을 보안 시스템에서 확인하여 차단하는 것도 필요합니다.

(강정훈 11번가/jhkang@sk.com)


A-5. KISA에서 운영중인 인터넷침해대응센터(Krcert)에 따르면 SQL 인젝션에 대한 대응 방안을 제시하고 있습니다.

첫 번째로 동적 SQL 사용을 지양하는 것입니다. 데이터베이스와의 연동 부분에서는 동적 SQL을 더 이상 사용하지 말고 저장 프로시저를 사용해야 합니다. 지금까지도 많이 사용되고 있는 동적 SQL 완성 방식은 변수의 입력값을 연결시켜 SQL문을 완성(Concatenation of SQL)시키는 형태이므로 공격자의 SQL문 주입이 매우 용이합니다.

그러나 저장 프로시저를 통해 데이터베이스 연동을 구현한다면, 이미 프로시저 내부에서 입력값에 대한 자료형 검증이 이루어지며, 해당 프로시저의 내부에서만 영향을 끼치기 때문에 보안 측면에서도 더욱 더 안전하고, 성능이나 유지보수 측면에서도 대단히 효과적입니다.


두 번째로 안전한 웹사이트 설계와 구현입니다. SQL 인젝션 취약점은 입력값 검증 절차 문제에 기인하므로, 개발단계에서부터 반드시 모든 입력값에 대해 적절한 검증절차를 설계하고 구현해야 합니다. 간략히 검증과정을 요약하면, 입력값의 크기를 검사하고 특수문자가 있는 경우 위험하지 않은 문자로 치환한 후 입력값이 허용범위 내에 존재하는지 검사하는 방식입니다.


세 번째로 오류 내용의 표시를 차단하는 등 웹서버 보안을 강화하는 것입니다. SQL 인젝션에 대한 근본적인 문제 해결을 위해서는 프로그램 보완 조치가 반드시 필요하지만,웹 서버의 보안 강화 설정을 통해서도 보완적인 효과를 볼 수 있습니다.


네 번째로 웹 방화벽의 활용입니다. 웹 보안 취약점의 근본적인 문제 해결을 위해서는 프로그램의 보완조치가 반드시 필요하지만 운영 중인 홈페이지에서 프로그램 수정으로 인한 문제들도 검토해 조치해야 하기 때문에 그 시간 동안은 웹방화벽이나 부가적인 보완조치들을 통해 시간을 확보할 수 있습니다.


마지막으로 웹보안 취약점에 대한 점검입니다. 설계와 구현에 있어서 안전한 개발 절차에 따라 개발됐더라도 존재할 수 있는 보안 문제들을 점검하고 진단하는 과정이 필요합니다. 특히 SQL 인젝션의 경우는 프로그램 소스 상에서 입력값 검증이 적절히 이루어졌는지 점검(White box test) 해 보고 웹 취약점 점검 도구를 병행하여 점검(Black box test)해 본다면 더욱 더 안전한 웹 서비스 운영이 될 것입니다.

KrCERT/CC에서 제공하는 원격 웹 취약점 점검 서비스를 이용하면 웹 취약점 원격 점검 서비스를 제공받을 수 있으며, 점검 신청은 홈페이지(http://webcheck.krcert.or.kr/)에서 접수 받고 있습니다. 다만, 비영리단체나 영세기업 등 정보보호 취약계층을 대상으로 제공하므로 서비스 대상에 해당하는 경우에만 서비스 받을 수 있습니다.

(홍준석 한국산업기술보호협회 관제운영팀 팀장/jun0817@kaits.or.kr)

[김태형 기자(boan@boannews.com)]


<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>

  •  
  • 7
  • 페이스북 보내기 트위터 보내기 네이버 밴드 보내기 카카오 스토리 보내기


  •  SNS에서도 보안뉴스를 받아보세요!! 
IBM 파워비즈 배너 2019년2월8일~2020년2월7일까지/7월25일 수정위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
2019년 국정감사에서 가장 중점적으로 다뤄야 할 보안이슈는 무엇이라고 보시나요?
잇따른 개인정보 유출사고
드론 테러 대응 대책
보안 관련 법 체계, 제도 정비
국가 사이버안보 거버넌스(보안 콘트롤타워) 정립
국가 차원의 사이버테러 대응 방안
스마트시티에서의 보안위협 대응
https 접속 차단 정책
국가핵심기술 및 기업 기밀 보호 방안
기타(댓글로)
      

유니뷰코리아
CCTV / 영상보안

인콘
통합관제 / 소방방재

현대틸스
팬틸트 / 카메라

아이디스
DVR / IP / VMS

시큐인포
CCTV / NVR

한화테크윈
CCTV 카메라 / 영상감시

Videotec
PTZ 카메라

대명코퍼레이션
DVR / IP카메라

티제이원
영상 보안 / 출입 통제

하이크비전 코리아
CCTV / IP / NVR

원우이엔지
줌카메라

도마카바코리아
시큐리티 게이트

다후아 코리아
CCTV / DVR

씨앤비텍
통합보안솔루션

지케이테코
출입통제 / 얼굴인식

아이디스
DVR / IP / VMS

한국하니웰
CCTV / DVR

이화트론
DVR / IP / CCTV

경인씨엔에스
CCTV / 자동복구장치

테크스피어
손혈관 / 차량하부 검색기

비전정보통신
IP카메라 / VMS / 폴

슈프리마
출입통제 / 얼굴인식

동양유니텍
IR PTZ 카메라

트루엔
IP 카메라

링크플로우
이동형 CCTV 솔루션

보쉬시큐리티시스템즈
CCTV / 영상보안

엔토스정보통신
DVR / NVR / CCTV

CCTV협동조합
CCTV

아이티엑스엠투엠
DVR / NVR / IP CAMERA

디비시스
CCTV토탈솔루션

씨오피코리아
CCTV 영상 전송장비

테크어헤드
얼굴인식 소프트웨어

씨엠아이텍
근태관리 소프트웨어 / 홍채 스케너

구네보코리아
보안게이트

다민정보산업
기업형 스토리지

에스카
CCTV / 영상개선

이스트시큐리티
엔트포인트 보안

신우테크
팬틸드 / 하우징

에프에스네트웍스
스피드 돔 카메라

엔클라우드
VMS / 스위치

케이제이테크
지문 / 얼굴 출입 통제기

알에프코리아
무선 브릿지 / AP

사라다
지능형 객체 인식 시스템

일산정밀
CCTV / 부품 / 윈도우

엘림광통신
광전송링크

티에스아이솔루션
출입 통제 솔루션

창우
폴대

퍼시픽솔루션
IP 카메라 / DVR

새눈
CCTV 상태관리 솔루션

이노뎁
VMS

케이티앤씨
CCTV / 모듈 / 도어락

아이유플러스
레이더 / 카메라

진명아이앤씨
CCTV / 카메라

브이유텍
플랫폼 기반 통합 NVR

아이엔아이
울타리 침입 감지 시스템

두레옵트로닉스
카메라 렌즈

이후커뮤니케이션
CCTV / DVR

DK솔루션
메트릭스 / 망전송시스템

옵티언스

대산시큐리티
CCTV 폴 / 함체 / 랙

포커스에이치앤에스
지능형 / 카메라

휴컴스
PTZ 카메라 / 줌카메라

더케이
투광기 / 차량번호인식

유진시스템코리아
팬틸트 / 하우징

세환엠에스
시큐리티 게이트

지에스티엔지니어링
게이트 / 스피드게이트

카티스
출입통제 / 외곽경비

유니온커뮤니티
생체인식 / 출입통제