SQL 주입: 여전히 위협적입니까? 어떻게 피할 수 있습니까?

게시 됨: 2020-03-07

데이터 유출은 너무 흔해서 더 이상 놀라운 일이 아닙니다. 악의적인 행위자는 가능한 한 많은 데이터를 수집하는 것을 목표로 합니다. 로그인 자격 증명, 신용 카드 정보 또는 영업 비밀 뒤에 있습니다. 그런 데이터를 손에 넣으면 다크 웹에서 판매합니다.

그들이 지금까지 얼마나 많은 데이터를 훔쳤는지, 그리고 다크 웹에 얼마나 많이 버렸는지 파악할 수 없다면 여기에 걱정스러운 숫자가 있습니다. 작년에 범죄자들은 ​​16개의 해킹된 웹사이트에서만 6억 2천만 개의 계정을 훔쳐 판매했습니다. 예, 16개의 웹사이트를 해킹하면 많은 피해를 입을 수 있습니다. 하지만 더 나쁜 것이 무엇인지 아십니까? 매일 수천 개의 새로운 사이트가 해킹됩니다!

사이버 범죄자들은 ​​매일 새로운 해킹 방법을 제시합니다. 하지만 그렇다고 해서 SQL 주입과 같은 오래된 기술을 잊어버리는 것은 아닙니다. 그들은 여전히 ​​​​간단한 실행과 유익한 결과를 제공하는 가장 일반적인 공격 벡터 중 하나입니다.

목차
  • SQL 주입이란 무엇이며 왜 위험한가요?
  • SQL 주입은 어떻게 작동합니까?
    • 대역 내 SQL 주입
    • 블라인드 SQL 인젝션
    • 대역 외 SQL 주입
  • 이 위협은 여전히 ​​관련이 있습니까?
  • 예방을 위한 보안 팁
  • 마지막 단어

SQL 주입이란 무엇이며 왜 위험한가요?

SQL 프로그래밍 언어

SQLi라고도 하는 SQL 주입은 해커가 SQL 문을 실행할 수 있도록 하는 주입 공격의 한 형태입니다. 주입 공격은 다양한 공격 벡터의 광범위한 범주입니다. 그러나 그들은 모두 악의적인 행위자가 위험한 입력을 수행하도록 허용합니다. 그것들은 시스템 명령으로 작동한 다음 실행됩니다.

SQL 문은 다양한 데이터베이스에서 데이터를 추가하거나 검색하는 데 가장 일반적으로 사용됩니다. Microsoft SQL Server, Access 및 Oracle과 같은 많은 유명 관리 시스템에서 이러한 명령문을 사용합니다.

널리 사용되는 많은 데이터베이스 관리 시스템이 SQL 문을 사용하기 때문에 해커는 SQL 주입을 통해 이러한 시스템을 악용할 수 있습니다. 이는 범죄자가 데이터베이스에 저장된 민감한 데이터에 액세스하고 훔칠 수 있음을 의미합니다. 여기에는 다음이 포함될 수 있습니다.

  • 지적 재산권.
  • 신용 카드 정보.
  • 고객 정보.
  • 구애.
  • 회사 비밀.
SQL 인젝션은 민감한 데이터의 도난을 초래합니다. 모든 비즈니스, 정부 또는 조직에 치명적인 결과를 초래할 수 있습니다. 이러한 사고는 회사의 운영과 명성을 손상시킬 수 있으며 데이터 보호 규제 기관에서 부과하는 막대한 벌금을 부과할 수 있습니다.
 추천 대상: Chrome 대 Firefox: 성능, 보안 및 개인 정보 비교!

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

데이터베이스 스키마 데이터 테이블 rdbms-관계형 카디널리티-sql-mysql

SQL 인젝션 공격을 실행하기 위해 해커는 웹사이트 또는 회사 내부 애플리케이션 내에서 취약한 사용자 입력을 찾아야 합니다.

예를 들어 피해자는 웹사이트에 WordPress를 사용합니다. 코드에 삭제 작업 없이 사용자 입력을 데이터베이스로 직접 보내는 SQL 취약점이 있을 수 있습니다. 해커가 해당 취약점을 찾으면 해당 데이터베이스에 명령을 보낼 수 있습니다. 그런 다음 데이터베이스 출력이 브라우저로 돌아가 해커가 다른 명령을 실행할 수 있습니다. 이런 식으로 전체 데이터베이스를 다운로드하고, 새 명령을 설정하고, 사용자 계정을 수정하거나, 새 계정을 만들 수 있습니다.

SQL 주입 공격에는 세 가지 기본 형태가 있습니다.

  • 대역 내 SQL 주입:
    • 오류 기반 SQL 주입.
    • 유니온 기반 SQL 주입.
  • 블라인드 SQL 인젝션:
    • 부울.
    • 시간 기반.
  • 대역 외 SQL 주입.

대역 내 SQL 주입

In-band SQL 주입은 간단하고 효율적이기 때문에 가장 일반적인 유형 중 하나입니다. 여기서 공격자는 동일한 통신 채널을 사용하여 공격을 실행하고 결과를 수집합니다. 오류 기반 및 Union 기반 SQL 주입의 두 가지 하위 변형이 있습니다.

  • 오류 기반 SQL 주입 을 통해 해커는 데이터베이스에서 오류 메시지를 생성할 수 있습니다. 그런 다음 이러한 오류 메시지를 사용하여 데이터베이스 자체에 대한 정보를 수집할 수 있습니다.
  • Union 기반 SQL 주입 을 통해 범인은 UNION SQL 연산자를 이용할 수 있습니다. 하나의 HTTP 응답을 얻기 위해 데이터베이스에서 제공하는 다양한 명령문을 결합합니다. 이러한 응답에는 종종 해커가 악용할 수 있는 데이터가 포함됩니다.

블라인드 SQL 인젝션

블라인드 SQL 인젝션은 서버의 행동 패턴에 의존합니다. 실행 속도가 훨씬 느립니다. 해커는 데이터 페이로드를 내보내고 서버의 응답을 검사하여 구조를 분석합니다. 데이터가 해커에게 직접 전달되지 않기 때문에 이를 "블라인드"라고 합니다. 따라서 대역 내 익스플로잇에 대한 정보를 볼 수 없습니다. 부울 및 시간 기반의 두 가지 변형으로 제공됩니다.

  • 부울 변형 을 통해 해커는 SQL 쿼리를 보낼 수 있으며, 이 쿼리는 데이터베이스에 정보를 반환하라는 메시지를 표시합니다. HTTP 응답 내의 정보는 이전 결과에 따라 변경됩니다.
  • 시간 기반 변형 은 악의적인 행위자가 SQL 쿼리를 데이터베이스에 직접 보낼 수 있도록 하여 데이터베이스가 반응하기 전에 대기하도록 합니다. 공격자는 데이터베이스가 응답하는 데 필요한 시간을 확인하고 쿼리가 참인지 거짓인지 결정합니다. 결과에 따라 HTTP 응답은 즉각적이거나 지연됩니다.

대역 외 SQL 주입

대역 외 SQL 주입을 사용하면 데이터베이스 서버에서 특정 기능이 활성화된 경우에만 해커가 데이터베이스를 공격할 수 있습니다. 가장 널리 사용되지 않는 SQL 주입 방법입니다. 많은 해커가 이를 오류 기반 및 블라인드 SQL 인젝션의 대체품으로 사용합니다.

이 특정 공격은 해커가 동일한 매체를 사용하여 공격을 실행하고 정보를 수집할 수 없는 경우의 옵션입니다. 또는 서버가 불안정하고 다른 두 가지 주입 유형을 수행하는 데 느릴 때 이 주입을 사용할 수 있습니다. 이 기술은 도난당한 데이터를 전달하기 위해 DNS 및 HTTP 요청을 생성합니다.

 다음을 좋아할 수 있습니다 . 중소기업을 위한 사이버 보안 위험 평가 및 관리 팁.

이 위협은 여전히 ​​관련이 있습니까?

사이버 보안 보호 개인 정보 보호 암호화 안전 암호 방화벽 액세스

SQL 주입은 가장 오래된 형태의 공격적인 사이버 공격 중 하나입니다. 그러나 그것은 여전히 ​​​​매우 관련이 있습니다. Open Web Application Security Project는 2년 전 SQL 인젝션을 1위 위협으로 선정했습니다. 클라우드 서비스 제공업체 Akamai는 2017년부터 2019년까지 모든 웹 기반 공격의 65%가 SQL 인젝션에 의한 것으로 밝혀진 인터넷 현황 보고서(State of the Internet Report)를 작성했습니다. 따라서 SQL 인젝션은 여전히 ​​웹 공격의 2/3에 나타난다고 말할 수 있습니다. 최근 몇 년 동안.

2017년 1분기에 이러한 벡터는 애플리케이션 계층 공격의 44%를 차지했습니다. 설상가상으로 SQL 주입만큼 빠르게 성장하는 애플리케이션 공격 벡터의 다른 형태는 없습니다. 2018년 11월에는 또 다른 중요한 급증이 있었습니다. 3,500만 건 이상의 SQL 주입 공격 시도가 있는 것으로 나타났습니다. 전문가들은 이러한 급증의 주요 원인이 휴가철이라고 생각합니다. 모든 웹사이트 소유자가 알고 있어야 하는 사항입니다. 특히 소매업에 종사하는 경우에는 더욱 그렇습니다. 그러나 휴가 시즌이 끝난 후에도 SQL 인젝션은 여전히 ​​주의해야 할 위협입니다.

미국은 애플리케이션 계층 공격의 최대 대상입니다. 불과 17개월 만에 약 30억 건의 공격에 직면했습니다. 다른 인기 있는 희생자로는 영국, 독일, 브라질, 인도, 일본, 캐나다, 호주, 이탈리아 및 네덜란드가 있습니다. 따라서 여전히 큰 위협이며 모든 기업이 광범위한 예방 조치를 취해야 한다고 가정하는 것이 안전합니다.

예방을 위한 보안 팁

개발자를 위한 최선의 조치는 공격이 발생하지 않도록 예방 조치를 도입하는 것입니다. 다음은 가장 효과적인 예방 조치입니다.

  • 입력 유효성 검사: 입력 유효성 검사는 특정 사용자 입력이 허용되는지 여부를 확인합니다. 이는 형식, 길이 및 유형이 집합적으로 허용되어야 함을 의미합니다. 입력 문자열에 해커가 심은 명령과 싸우는 데 유용합니다.
  • 매개변수화된 쿼리: 매개변수화된 쿼리는 다양한 SQL 문을 미리 컴파일하는 방법입니다. 그런 다음 명령문이 실행될 수 있도록 매개변수를 저장합니다. 이를 통해 데이터베이스는 코드를 인식하고 일반 입력 데이터와 구별할 수 있습니다.
  • 저장 프로시저: 개발자가 하나 이상의 SQL 문을 논리 단위로 클러스터링해야 합니다. 이름에서 알 수 있듯이 저장하고 나중에 사용할 수 있도록 저장할 수 있는 코드 형식입니다.
  • 이스케이프: 개발자는 DBMS가 사용자 입력을 SQL 문과 혼동하지 않도록 문자 이스케이프 기능을 사용해야 합니다.
  • 웹 응용 프로그램 방화벽: SQL 주입 공격을 방지하는 가장 안전한 방법 중 하나입니다. 방화벽은 서버에서 순환하는 트래픽을 모니터링합니다. 잠재적으로 유해한 요청과 그렇지 않은 요청을 식별합니다. 이 솔루션은 다른 많은 익스플로잇에 충분하므로 항상 적절합니다.
  • 관리 권한 피하기: 개발자는 루트 액세스 권한이 있는 계정을 통해 앱을 데이터베이스에 연결해서는 안 됩니다. 그렇지 않으면 해커가 전체 시스템에 액세스하여 복구할 수 없는 손상을 일으킬 수 있습니다. 또한 개발자는 모든 데이터베이스에 제한된 자격 증명 집합이 있는지 확인해야 합니다.
 당신은 또한 좋아할 수 있습니다: Top 10 Best Selling Internet Security Software (Antivirus & Security).

마지막 단어

해킹 공격 마스크 사이버 범죄 바이러스 데이터 보안

SQL 주입에 대해 우려하는 사람은 다른 공격 가능성도 잊어서는 안됩니다. 일반적인 사이버 보안 관행이 적용됩니다. 강력한 암호 사용, 위협 인식 방법 배우기, 웹 사이트 또는 데이터베이스에 연결할 때마다 VPN 켜기 등. VPN이란 무엇이며 어떤 역할을 합니까? 온라인에 접속할 때마다 온라인 트래픽을 암호화합니다. 따라서 데이터베이스에 SQL 요청을 보내면 DB만 해독할 수 있습니다. 누군가 문제의 데이터 패킷을 가로채면 의미가 없습니다. 귀하 또는 귀하의 회사는 모든 종류의 위협에 대비할수록 좋습니다.

포괄적인 예방 조치의 도입만이 SQL 인젝션 또는 공격이 성공하지 못하도록 합니다. 다양한 악용에 맞서 싸울 적절한 도구가 있는지 확인하기 위해 많은 시간, 노력 및 돈을 투자할 준비를 하십시오.