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일까지모니터랩 파워비즈 5월 31일까지위즈디엔에스 2018파워비즈배너 시작 11월6일 20181105-20200131
설문조사
7월 1일부터 주 52시간 근무제가 확대 시행됩니다. 보안종사자로서 여러분의 근무시간은 어느 정도 되시나요?
주 32시간 이하
주 40시간
주 48시간
주 52시간
주 58시간
주 60시간 이상
기타(댓글로)
      

티제이원
PTZ 카메라

인콘
통합관제 / 소방방재

현대틸스
팬틸트 / 카메라

파나소닉코리아
Sevurity Camera / CCTV

시큐인포
CCTV / NVR

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

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

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

쿠도커뮤니케이션
스마트 관제 솔루션

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

원우이엔지
줌카메라

AVIBILON
영상 보안 / 출입 통제

다후아 코리아
CCTV / DVR

씨앤비텍
통합보안솔루션

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

한국하니웰
CCTV / DVR

이화트론
DVR / IP / CCTV

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

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

한국씨텍
PTZ CCTV

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

트루엔
IP 카메라

디비시스
CCTV토탈솔루션

에스카
CCTV / 영상개선

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

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

CCTV프랜즈
CCTV

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

구네보코리아
보안게이트

옵티언스
IR 투광기

디케이솔루션
메트릭스 / 망전송시스템

지와이네트웍스
CCTV 영상분석

KPN
안티버그 카메라

베일리테크
랜섬웨어 방어솔루션

화이트박스로보틱스
CCTV / 카메라

신우테크
팬틸드 / 하우징

네이즈
VMS

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

혜인에스앤에스
통합보안시스템

셀링스시스템
IP 카메라 / 비디오 서버

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

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

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

이노뎁
VMS

새눈
CCTV 상태관리 솔루션

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

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

창우
폴대

수퍼락
출입통제 시스템

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

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

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

엔클라우드
VMS / 스위치

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

엘림광통신
광전송링크

싸이닉스시스템즈
스피드 돔 카메라

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

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

인사이트테크놀러지
방폭카메라

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

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

넷플로우
IP인터폰 / 방송시스템

글로넥스
카드리더 / 데드볼트

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

화인박스
콘트롤박스 / 배전향