SQL 주입 공격이란 무엇입니까?

2022년 10월 26일
SQL 주입 공격이란?

내용물

무료로 씨디네트웍스를 이용해보세요

지금 바로 신청하면, 씨디네트웍스의 다양한 솔루션을 한 달간 무료로 체험하실 수 있습니다.

이 게시물 공유하기

해킹 기술이 더욱 발전하고 악의적인 행위자가 새로운 공격 벡터를 사용할 수 있게 되더라도 일부 오래된 방법은 여전히 그 어느 때보다 효과적입니다. 

SQL 인젝션은 사이버 범죄자들이 수십 년 동안 사용해 온 기술 중 하나입니다. SQL 인젝션이 정기적으로 OWASP(Open Web Application Security Project) 상위 10개 웹 취약점. 실제로 "SQL 주입" 유형의 약 1162개의 사이버 보안 취약점이 공개적으로 알려진 정보 보안 취약점을 문서화하기 위한 시스템인 CVE(Common Vulnerabilities and Exposures)로 승인되었습니다. 

SQL 인젝션이란?

SQL 인젝션은 공격자가 악성 코드를 입력하여 다른 방법으로는 제한되었을 수 있는 데이터베이스의 데이터에 액세스하는 사이버 공격에 사용되는 일반적인 기술입니다. 

SQL은 SQL 쿼리라는 명령을 통해 데이터베이스에 액세스하고 조작하는 데 사용되는 구조화된 쿼리 언어입니다. SQL 주입 공격은 웹 페이지의 웹 양식과 같은 사용자 입력 유효성 검사 방법을 통해 SQL 명령 또는 쿼리 문자열을 삽입하는 것과 관련됩니다.

SQL 인젝션 취약점은 MySQL, Oracle, SQL Server 등과 같은 SQL 데이터베이스에 의존하는 애플리케이션에 영향을 미칠 수 있습니다. SQL 인젝션을 통해 공격자는 애플리케이션 보안 조치를 우회하고 인증 프로세스를 우회하여 데이터베이스에 대한 무단 액세스 권한을 얻을 수 있습니다. 

예를 들어 회사 기밀 문서, 사용자 데이터, 고객 데이터 및 기타 민감한 정보에 무단으로 액세스할 수 있습니다. 해커는 또한 데이터를 수정 또는 삭제하고, 데이터베이스에서 관리 작업을 수행하고, 데이터베이스 관리 시스템을 종료할 수 있습니다. 심지어 기본 SQL 서버 또는 운영 체제에 대한 명령을 실행하여 비즈니스에 심각한 피해를 줄 수 있습니다. 

SQL 주입 공격은 어떻게 작동합니까?

SQL 주입 공격은 SQL 명령을 사용자 입력 필드에 주입하여 데이터베이스에서 특정 명령을 실행하는 방식으로 작동합니다. 이러한 데이터베이스 쿼리에 대한 응답을 기반으로 공격자는 데이터베이스 아키텍처를 이해하고 응용 프로그램 내에서 제한된 정보에 액세스할 수 있습니다. 

예를 들어 해커는 "1=1"과 같이 항상 참인 문을 사용하여 응용 프로그램에서 데이터를 검색하기 위해 SQL 주입을 수행할 수 있습니다. 이 문은 항상 참이므로 쿼리 문자열은 테이블 세부 정보가 포함된 응답을 반환합니다. 

공격자는 또한 “105; 드롭 테이블 공급자”. 여기서 세미콜론 뒤의 문은 응용 프로그램 데이터베이스에서 공급자 테이블을 삭제합니다.

SQL 삽입 공격 위험 – 얼마나 위험한가요?

SQL 삽입 공격의 위험은 해커가 무단 데이터에 액세스할 수 있다는 데 있습니다. 그리고 이 데이터가 암호, 신용 카드 세부 정보 또는 사용자 또는 고객의 개인 식별 정보와 같은 민감한 데이터와 관련된 경우 공격자는 비즈니스에 심각한 재정적 및 평판 손상을 입힐 수 있습니다. 경우에 따라 SQL 주입 공격은 공격자에게 눈치채지 못한 채 조직의 시스템에 장기간 액세스할 수 있는 권한을 부여할 수도 있습니다.

과거에는 SQL 인젝션을 사용하여 세간의 이목을 끈 수많은 데이터 유출이 있었습니다. 예를 들어, APT 그룹의 GhostShell 공격 2013년에는 SQL 삽입을 사용하여 53개 대학의 학생 및 교직원의 개인 기록 36,000개를 훔쳐 게시했습니다. 그리고 같은 해에 또 다른 그룹 RedHack Collective는 SQL 인젝션을 사용했습니다. 터키 정부 웹 페이지를 위반하고 정부 기관에 대한 부채를 탕감합니다.

SQL 삽입 공격 유형

데이터베이스에 액세스하는 데 사용되는 방법에 따라 SQL 주입 공격 유형은 몇 가지 범주로 분류할 수 있습니다.

  • 인밴드 SQLi(클래식): 

이것은 공격자가 공격을 시작하고 결과를 검색하기 위해 동일한 통신 채널을 사용하는 일반적인 유형의 SQLi 공격입니다. 이는 데이터베이스 구조에 대한 정보를 드러내는 데이터베이스 오류 메시지인 오류 기반이거나 공격자가 활용할 수 있는 데이터가 포함된 단일 HTTP 응답을 얻기 위해 여러 선택 문을 결합하는 Union 기반 SQLi일 수 있습니다.

  • 추론 SQLi(블라인드)

이러한 유형의 SQLi 공격에서 공격자는 전송된 데이터 페이로드를 기반으로 서버의 동작 패턴을 관찰하여 해당 구조에 대해 자세히 알아봅니다. 블라인드 SQL 인젝션은 쿼리가 참인지 거짓인지에 따라 달라지는 결과를 반환하도록 응용 프로그램에 프롬프트를 표시하는 부울 SQL 인젝션 공격이거나, SQL 명령이 반응하기 전에 데이터베이스를 기다리게 하는 시간 기반 공격일 수 있습니다. 이 대기 시간을 기반으로 공격자는 쿼리가 참인지 거짓인지 알 수 있습니다.

  • 대역 외 SQLi

대역 외 SQLi 공격은 동일한 채널을 사용하여 정보를 공격하고 검색할 수 없거나 SQL 서버가 너무 느린 경우 공격자가 다른 두 가지 방법에 대한 대안으로 사용합니다. 이러한 유형의 공격은 응용 프로그램에서 사용하는 데이터베이스 서버에서 활성화할 특정 기능에 따라 다릅니다. 

SQL 삽입 예

해커가 SQL 인젝션 취약점을 악용할 수 있는 방법에는 여러 가지가 있습니다. 공격자가 찾고 있는 것과 데이터베이스에서 사용할 수 있는 정보의 유형에 따라 SQL 삽입 예제는 일반적으로 다음과 같은 유형으로 나뉩니다.

  • 숨겨진 데이터를 검색하려면: 쇼핑 사이트에서 미출시 상품 등 숨은 결과를 보여주기 위해 SQL 쿼리를 수정하는 공격.
  • 애플리케이션 논리를 파괴하려면: 여기에는 쿼리 문자열을 수정하여 애플리케이션의 논리를 방해하는 것이 포함됩니다. 예를 들어, 비밀번호가 맞는지 확인하는 쿼리의 당사자를 주석 처리하여 비밀번호를 입력하지 않고 사용자로 로그인합니다.
  • 데이터베이스를 검사하려면: 테이블 자체뿐만 아니라 구조 및 버전을 포함하여 데이터베이스에 대한 정보를 검색하는 공격입니다. 
  • 추가 테이블 검색을 위한 UNION 기반 SQL 주입: 공격자가 SQL 데이터베이스 내의 다른 테이블에서 중요할 수 있는 데이터를 검색하기 위해 UNION select와 같은 키워드를 사용하여 추가 쿼리와 함께 원래의 적법한 쿼리 결과를 추가하는 공격입니다.

CDNetworks가 SQL 공격으로부터 사용자를 보호하는 방법

대부분의 경우 SQL 주입 공격은 SQL 코드에서 매개 변수화된 쿼리 또는 준비된 문을 사용하여 방지할 수 있습니다. 여기에는 사용자 입력이 쿼리 구조를 방해하지 않도록 코드를 다시 작성하는 작업이 포함됩니다.

SQL 인젝션 공격으로부터 비즈니스를 보호하는 방법 중 하나는 웹 애플리케이션 방화벽(WAF)을 사용하는 것입니다. WAF는 앱 안팎으로 흐르는 트래픽을 모니터링하고 사용자 지정 가능한 웹 보안 규칙 세트를 기반으로 악성 트래픽을 차단합니다. 취약점 스캐닝 또한 도구는 성공적인 SQL 주입을 위해 공격자가 악용할 수 있는 애플리케이션 및 SQL 데이터베이스의 약점을 탐지하는 데 큰 도움이 될 수 있습니다.

씨디네트웍스는 기업에게 다음을 제공합니다. Application Shield, 다른 보안 기능 중에서 웹 애플리케이션 방화벽(WAF)을 통합하는 클라우드 기반 솔루션입니다. 1,000개 이상의 기본 제공 WAF 보호 규칙이 제공되며 이 중 200개는 SQL 주입 공격에 특정한 것이므로 이러한 유형의 위협에 대한 방어를 강화할 수 있습니다. 동시에 SQL 공격의 진화를 처리하고 향후 새로운 기술을 저지할 준비를 하기 위해 새로운 WAF 규칙도 추가되고 있습니다. 

더 알아보기