보안 취약점은 공격자가 시스템과 데이터를 침해하기 위해 악용할 수 있는 약점입니다. 본 가이드는 다양한 유형의 취약점, 조직에 미칠 수 있는 잠재적 영향, 그리고 취약점 관리의 중요성을 살펴봅니다.
소프트웨어 버그 및 잘못된 구성 등 취약점의 일반적인 원인을 알아보고, 이러한 위험을 식별, 평가 및 완화하기 위한 모범 사례를 확인하세요. 취약점 관리의 최신 동향과 조직의 보안 태세를 강화하는 방법에 대한 최신 정보를 확인하세요.
기업이 소프트웨어 취약점으로부터 안전을 유지하는 방법
 보안 취약점으로부터 안전을 유지하기 위해 기업은 사이버 보안 모범 사례를 따라야 합니다. 여기에는 다음과 같은 조치가 포함될 수 있습니다.
- 보안 감사를 정기적으로 수행하여 취약점을 식별하고 우선순위를 지정하십시오.
 - 모든 소프트웨어와 시스템이 최신 보안 패치 및 수정 사항으로 업데이트되도록 강력한 패치 관리 프로그램을 구현하십시오.
 - 취약점 스캐너 및 기타 보안 도구를 사용하여 취약점을 신속하게 식별하고 수정합니다.
 - 직원들에게 잠재적 취약점을 식별하고 보고하는 방법을 교육하고, 보고된 취약점에 대응하기 위한 프로세스를 구현합니다.
 - 신뢰할 수 있는 보안 파트너 또는 관리형 보안 서비스 제공업체와 협력하여 환경 내 취약점을 식별하고 완화하는 데 도움을 받습니다.
 - 실제 공격을 시뮬레이션하고 환경 내 취약점을 식별 및 수정하기 위해 정기적으로 침투 테스트를 수행하십시오.
 - 시스템 및 데이터에 대한 무단 접근을 방지하기 위해 강력한 접근 제어 및 인증 메커니즘을 구현하십시오.
 
기업을 대상으로 하는 취약점 유형은 무엇인가요?
보안 침해에 활용되는 가장 유명한 취약점으로는 다음과 같은 것들이 있습니다:
- SQL 인젝션: 공격자가 악성 SQL 코드를 데이터베이스에 주입하여 민감한 데이터에 접근하거나 데이터베이스를 조작할 수 있게 하는 취약점입니다.
 - 크로스 사이트 스크립팅(XSS): 공격자가 악성 자바스크립트 코드를 웹사이트에 주입하여 사용자 데이터를 훔치거나 다른 악의적인 행동을 수행할 수 있게 하는 취약점입니다.
 - 원격 코드 실행(RCE): 이 취약점을 통해 공격자는 원격 시스템에서 임의의 코드를 실행하거나, 무단 접근 권한을 획득하거나, 기타 악의적인 행동을 수행할 수 있습니다.
 - 검증되지 않은 입력값: 이 취약점을 통해 공격자는 웹사이트나 애플리케이션에 악의적인 입력값을 제공하여 보안 통제를 우회하거나 임의의 코드를 실행할 수 있습니다.
 - 보안되지 않은 자격 증명: 사용자 이름 및 비밀번호와 같은 민감한 데이터가 보안되지 않은 상태로 저장되어 공격자가 쉽게 접근할 수 있을 때 발생하는 취약점입니다.
 - 보안되지 않은 네트워크: 네트워크가 방화벽이나 기타 보안 조치로 적절히 구성되거나 보호되지 않아 공격자가 쉽게 접근할 수 있을 때 발생하는 취약점입니다.
 - 보안되지 않은 장치: 노트북이나 휴대폰과 같은 장치가 제대로 보호되지 않아 공격자가 쉽게 접근하여 민감한 데이터를 훔칠 수 있을 때 발생하는 취약점입니다.
 
기업을 침해하는 데 사용된 취약한 소프트웨어의 예로는 다음과 같습니다:
- Adobe Flash: 이 소프트웨어는 인터넷에서 널리 사용되었으나 버퍼 오버플로우 및 힙 오버플로우 공격을 포함한 여러 보안 취약점에 취약한 것으로 알려져 있습니다.
 - Microsoft Windows: 이 운영체제는 세계에서 가장 널리 사용되지만, 원격 코드 실행 및 권한 상승 취약점을 포함한 수많은 보안 취약점의 표적이 되어 왔습니다.
 - 아파치 웹 서버: 이 웹 서버 소프트웨어는 인터넷에서 널리 사용되지만, 크로스 사이트 스크립팅 및 크로스 사이트 요청 위조 공격을 포함한 보안 취약점의 표적이 되어 왔습니다.
 - Oracle 데이터베이스: 이 데이터베이스 소프트웨어는 기업에서 널리 사용되지만, SQL 인젝션 및 권한 상승 공격을 포함한 보안 취약점의 표적이 되기도 했습니다.
 - Adobe Acrobat Reader: 이 소프트웨어는 PDF 파일 열람에 널리 사용되지만, 원격 코드 실행 및 힙 오버플로 공격을 포함한 보안 취약점의 표적이 되기도 했습니다.
 - Java: 이 프로그래밍 언어는 웹 애플리케이션 개발에 널리 사용되지만, 크로스 사이트 스크립팅 및 원격 코드 실행 공격을 포함한 보안 취약점의 표적이 되기도 했습니다.
 - PHP: 이 프로그래밍 언어는 웹 애플리케이션 개발에 널리 사용되지만, SQL 인젝션 및 크로스 사이트 스크립팅 공격을 포함한 보안 취약점의 표적이 되기도 했습니다.
 
현장에서 가장 흔히 악용되는 취약점 중 하나는 CVE-2017-0199로, Microsoft Office의 원격 코드 실행 취약점으로, 공격자가 피해자의 시스템에서 악성 코드를 실행할 수 있게 합니다. 이 취약점은 Ryuk, Emotet, Dridex 악성코드 패밀리 등이 악용해 왔습니다.
취약한 소프트웨어에 패치를 적용하는 것이 중요한 이유는 무엇일까요?
CISO는 보안 침해로부터 조직을 보호하고, 업계 표준을 준수하며, 법적 책임을 피하고, 전반적인 보안 태세를 개선하기 위해 취약한 소프트웨어에 패치를 적용하는 것을 우선순위로 두어야 합니다. 이를 위해서는 조직 내에서 사용되는 모든 소프트웨어에 대한 보안 패치를 정기적으로 확인하고 설치하는 패치 관리 프로그램을 구현해야 할 수 있습니다. 또한 패치가 신속하고 일관되게 적용되도록 IT 팀과 같은 다른 부서와 협력해야 할 수도 있습니다. 또한 보안 환경을 모니터링하고 최신 위협 및 취약점에 대한 최신 정보를 유지하여 잠재적 위험이 발생할 때 이를 식별하고 해결하는 것도 포함될 수 있습니다.
요약하자면, 취약한 소프트웨어에 패치를 적용하는 것은 여러 가지 이유로 중요합니다:
- 보안 침해로부터 보호하기 위해: 취약한 소프트웨어에 패치를 적용함으로써 조직은 데이터 도난, 랜섬웨어 공격 및 기타 형태의 사이버 범죄와 같은 보안 침해로부터 스스로를 보호할 수 있습니다. 예를 들어, 2017년에 발생한 WannaCry 랜섬웨어 공격은 Microsoft Windows 운영 체제의 취약점을 악용하여 데이터를 암호화하고 몸값을 요구했습니다.
 - 업계 표준을 준수하기 위해: 많은 업계에는 조직이 취약한 소프트웨어에 대한 패치를 적시에 적용하도록 요구하는 특정 규정 준수 표준이 있습니다. 예를 들어, 지불 카드 산업 데이터 보안 표준(PCI DSS)은 보안 침해를 방지하기 위해 조직이 보안 패치를 출시 후 30일 이내에 적용할 것을 요구합니다.
 - 법적 책임을 피하기 위해: 조직이 취약한 소프트웨어에 대한 패치를 적용하지 못할 경우, 그 결과로 발생하는 보안 침해에 대해 법적 책임을 질 수 있습니다. 예를 들어, 2018년 미국 법원은 타겟이 결제 카드 시스템의 알려진 취약점을 패치하지 않아 발생한 데이터 유출 사고에 대해 책임을 져야 한다고 판결했습니다.
 - 전반적인 보안 태세 개선을 위해: 취약한 소프트웨어에 패치를 적용함으로써 조직은 잠재적 공격 경로의 수를 줄이고 침해 위험을 감소시켜 전반적인 보안 태세를 강화할 수 있습니다. 예를 들어, 어도비 플래시, 마이크로소프트 윈도우, 아파치 웹 서버와 같은 소프트웨어에 패치를 적용함으로써 조직은 버퍼 오버플로우, 힙 오버플로우, 원격 코드 실행 공격을 포함한 다양한 보안 취약점으로부터 보호할 수 있습니다.
 
취약점 우선순위 지정 방법?
매년 제출되는 공통 취약점 및 노출(CVE)의 수는 변동되지만 최근 몇 년간 증가 추세에 있습니다. 2020년에는 24,000개 이상의 CVE가 제출되어 이전 연도에 비해 크게 증가했습니다. 연결된 장치의 수와 온라인에서 공유되는 민감한 데이터의 양이 증가함에 따라 이러한 추세는 계속될 것으로 보입니다.
공통 취약점 평가 시스템(CVSS)은 취약점의 심각도를 측정하는 데 일반적으로 사용되는 척도입니다. 이 척도는 공격 유형, 성공적 악용 가능성, 기밀성·무결성·가용성에 미치는 영향 등 다양한 지표를 활용해 취약점의 잠재적 영향을 판단합니다.
CVSS 척도는 0에서 10까지의 점수를 사용하며, 0은 가장 심각도가 낮고 10은 가장 심각합니다. 예를 들어, 점수 0.1의 취약점은 낮은 심각도로 간주되는 반면, 점수 9.0의 취약점은 심각한 심각도로 간주됩니다. CVSS 점수는 취약점의 잠재적 영향에 기반하여 패치 적용 및 위험 완화 노력의 우선순위를 정하는 데 조직에 도움을 줄 수 있습니다.
가장 심각한 수준으로 간주되는 CVSS 10 취약점의 예시로는 다음과 같습니다:
- OpenSSL의 Heartbleed 취약점은 공격자가 취약한 서버에서 비밀번호 및 개인 키와 같은 민감한 데이터에 접근할 수 있게 합니다.
 - WannaCry 랜섬웨어 공격은 Microsoft Windows의 취약점을 악용하여 파일을 암호화하고 몸값을 요구했습니다.
 - BlueKeep Microsoft Windows의
 - Shellshock 취약점은 공격자가 취약한 시스템에서 원격으로 임의의 코드를 실행할 수 있게 합니다.
 - Bash의 Shellshock 취약점은 공격자가 임의의 코드를 실행하고 시스템에 무단 접근할 수 있게 합니다.
 - Microsoft Windows의 EternalBlue 취약점은 공격자가 원격으로 임의의 코드를 실행하고 네트워크 전반에 악성 코드를 확산시킬 수 있게 합니다.
 
제로데이 취약점이란 무엇인가요?
제로데이 취약점은 아직 발견되거나 공개되지 않은 보안 결함을 의미합니다. 이는 공격자가 해당 취약점이 패치되거나 수정되기 전에 악용할 수 있어 시스템이나 네트워크에 무단 접근할 수 있음을 뜻합니다. 제로데이 취약점은 피해자에게 알려지지 않아 방어가 어렵다는 점에서 특히 위험합니다.
 악성 코드는 위협인가, 취약점인가?
악성코드는 취약점이 아닌 위협 유형입니다. 취약점은 공격자가 무단 접근을 얻거나 피해를 입히기 위해 악용할 수 있는 시스템이나 네트워크의 약점입니다. 반면 악성 소프트웨어는 취약점을 악용하여 시스템이나 네트워크를 침해하도록 설계된 악성 프로그램입니다. 따라서 악성 소프트웨어는 시스템이나 네트워크에 접근하기 위해 취약점을 이용할 수는 있지만, 그 자체가 취약점은 아닙니다.
악성코드와 취약점 중 어느 쪽이 더 위험한지 단정하기는 어렵습니다. 이는 구체적인 상황에 따라 달라지기 때문입니다. 취약점이 없다면 악성코드는 시스템이나 네트워크를 침해할 수 없습니다. 반면 악성코드가 없다면 공격자는 취약점을 악용해 접근할 수 없습니다. 잠재적 영향 측면에서 악성코드는 데이터 도용, 파일 암호화, 운영 중단 등 시스템이나 네트워크에 심각한 피해를 입힐 수 있습니다. 반면 취약점은 시스템이나 네트워크에 직접적인 영향을 미치지 않을 수 있지만, 공격에 더 취약하게 만들 수 있습니다. 전반적으로 악성코드와 취약점은 심각한 사이버 보안 위협이며, 포괄적인 보안 전략의 일환으로 대응해야 합니다.
 
결론
소프트웨어 취약점의 위험은 정기적인 패치 및 업데이트와 안전한 개발 관행 구현을 통해 줄일 수 있습니다. 그러나 공격자들이 지속적으로 새로운 취약점을 발견하고 악용하기 때문에 위험이 완전히 제거될 가능성은 희박합니다. 조직은 취약점을 지속적으로 모니터링하고 효과적인 완화 전략을 구현하여 위험을 최소화하는 것이 중요합니다.
보안 취약점 FAQ
보안 취약점은 공격자가 무단 접근을 얻거나 피해를 입히기 위해 악용할 수 있는 소프트웨어, 하드웨어 또는 프로세스의 결함이나 약점을 말합니다. 코딩 오류, 잘못된 설정, 누락된 패치 등이 해당됩니다. 취약점을 방치하면 악성코드, 데이터 도난 또는 서비스 중단의 원인이 되므로 신속히 식별하고 수정해야 시스템의 안전성과 신뢰성을 유지할 수 있습니다.
버퍼 오버플로는 공격자가 메모리 버퍼를 초과하여 임의의 코드를 실행할 수 있게 합니다. SQL 또는 명령어 주입과 같은 주입 결함은 신뢰할 수 없는 입력이 쿼리나 명령어를 변경할 때 발생합니다. 크로스 사이트 스크립팅(XSS)은 공격자가 사용자의 브라우저에서 스크립트를 실행할 수 있게 합니다.
손상된 접근 제어는 권한 상승을 허용합니다. 기본 자격 증명이나 열린 포트와 같은 잘못된 구성도 높은 순위를 차지합니다. 이러한 요소들이 합쳐져 많은 침해 및 데이터 유출을 초래합니다.
취약점은 CVSS와 같은 시스템에서 점수를 받습니다. CVSS는 악용 난이도, 기밀성·무결성·가용성에 미치는 영향, 사용자 상호작용 필요 여부 등을 기준으로 심각도를 0~10점 척도로 평가합니다. 그런 다음 팀은 자산 가치, 악용 가능성, 비즈니스 영향 등 자체 환경을 고려하여 가장 중요한 수정 사항을 순위화합니다. 이렇게 하면 고가치 시스템의 중요한 취약점이 먼저 패치됩니다.
코드 검토, 자동화된 스캐너, 결함을 탐색하는 침투 테스트를 통해 발견됩니다. 버그 바운티 프로그램은 외부 연구원들이 실제 운영 중인 시스템의 취약점을 찾아내도록 유도합니다. 보안 연구원과 벤더들도 새로운 버그를 발견하면 공지를 게시합니다. 사고 조사 과정에서 수정해야 할 이전에 발견되지 않은 취약점이 드러나기도 합니다.
책임 있는 공개는 공급업체나 유지보수 담당자에게 비공개로 통보하고 수정 일정에 합의하는 것으로 시작됩니다. 공급업체는 공개 전 패치를 개발하고 테스트합니다. 조정된 취약점 공개란 권고사항과 패치를 함께 공유하여 세부 정보가 공개되기 전에 사용자가 업데이트할 수 있도록 하는 것을 의미합니다. 이는 공격자가 문제를 악용할 수 있는 시간을 줄여줍니다.
주요 지표로는 패치 적용까지의 평균 시간(발견부터 배포까지 소요 시간)이 포함됩니다. 시스템별 패치 적용률과 미해결 고위험 수정 사항 수를 추적하세요. 반복되는 취약점 발생률을 측정하여 프로세스상의 허점을 파악하십시오. 패치되지 않은 문제가 활발한 공격에 노출되는지 확인하기 위해 위협 피드에서 악용 동향을 모니터링하여 우선순위 설정에 활용하십시오.

