아침에 메일링 리스트에 들어온 질문을 보고 괜찮은 내용인 것 같아서 정리합니다.
* Ravi Chunduru 씨의 질문:
현재 약 3만개가 넘는 CVE 취약점 보고서가 있습니다. 이에 반해 대부분의 IDS/IPS 장비들은 약 4천개에서 5천개 정도 되는 룰만 가지고 있습니다. 이 정도 갯수라면 실제 공격은 4천~7천가지 공격만 막을 수 있을 것 같은데요. 그러면 2만 3천개에서 2만 6천개쯤 되는 CVE는 커버가 안 되는 것인가요?
그렇다면 뭔가 IDS/IPS 벤더에서 시그니처를 개발할 때 CVE 선택하는 기준이 있을 것 같은데요. 가령 뭐 NIDS라면 로컬 머신에서만 발생하는 공격은 막을 필요가 없겠고.. 또 다른 기준들이 있나요?
* abhicc285 씨의 답변:
여러가지 있겠지만 시장 점유율도 중요한 요인이 되겠지요. 별로 팔리지도 않은 제품이라서 쓰는 사람도 거의 없다면 굳이 시간과 자원을 투입해서 시그니처를 만들 이유가 없을테니까요.
* Enigma 씨의 답변:
여러가지가 있겠지만,
1. NIDS에 한정해서 말하자면 모든 취약점이 원격에서 공격 가능한 것은 아니라는 것이죠. 로컬 취약점 같은 경우 HIDS에서만 탐지할 수 있습니다.
2. CVE는 Common Vulnerability and Exposures의 약자입니다. 당연히 이쪽은 취약점을 중점적으로 다루고, 반면에 IDS/IPS는 익스플로잇을 중점적으로 다룹니다. 뭐.. 알려지지 않은 익스플로잇으로 취약점을 공격하면 어떻게 탐지하겠습니까? 일단 어떻게 생겨먹었는지 알아야지 찾든지 말든지 하겠죠.
* Dimitris Patsos 박사의 답변:
아주 소수의 IDS/IPS 벤더만이 침입탐지/방지 제품과 연동되는 취약점 평가 도구를 가지고 있습니다. 그렇다고는 해도 딱히 취약점, 익스플로잇, 침입탐지 시그니처가 연결이 쉽지 않은게, 공격이 실제로 들어올 때는 취약점 하나 이상을 이용하여 익스플로잇하는 경우가 많으니까요.
제가 알기로는 아직 시스템/네트워크 상에서 발견되는 실제 취약점에 기반한 잠재적인 공격을 뽑아내는 배포 환경에 기반한 기법이 없습니다. 게다가 여전히 false positive를 제거하는 것인 거의 불가능하죠. (학습 모드를 써본 사람은 알겠지만 지옥이 따로 없습니다.) 반대로 취약점 평가 도구에서는 false negative를 제거하는 것이 정말 어렵죠. (발견된 공격의 징후를 부분적으로 활용해서 결과를 보완할 수 있으면 꽤 괜찮겠는데 말이죠)
제가 그래서 하고 있는 작업이 사후 침입 처리 능력 (보안관제시스템의 정보) 과 취약점 점수화 (MITRE의 CVSS 같은 것) 를 침입탐지/취약성 평가 도구와 통합하는 일입니다.
이렇게 되면 취약성 평가 도구에 의해 발견된 취약점들이 거의 반자동적으로 점수가 매겨지고 (CVSS), 검증하는 방법을 이용해서 (관제시스템; SIEM) 적은 수의 침입탐지 룰만 가지고도 공격을 효율적으로 방어할 수 있게 한다는 것이죠.
다시 말하자면 더이상 운영체제나, 네트워크 토폴로지, 컬리젼 도메인, 그룹이나 VLAN 같은걸 안 따져도 공격 경로에 기반해서 정책을 세우는 것이 가능해진다 이 얘기입니다.
감사합니다.
* Srinivasa Addepalli 씨의 답변:
다른 분들이 많이 답변 달아줬는데 몇 가지 더 써볼게요.
1. 일반적인 탐지 룰
거의 1만개 정도의 XSS와 SQL 인젝션 취약점이 있습니다. (www.osvdb.org 찾아보세요) 우리를 포함해서 많은 IPS/IDS 벤더들이 저런 것들을 일일이 룰 만들지 않습니다. 한 200개 정도 룰을 만들어 놓으면 저런 것들은 대부분 커버할 수 있지요.
그리고 IPS는 아주 적은 수의 시그니처만 가지고도 많은 수의 버퍼 오버플로우 공격을 탐지할 수 있습니다. 가령 HTTP URL, HTTP 요청 헤더/응답 헤더 필드, SMTP/FTP/IMAP/NNTP 커맨드 버퍼 오버플로우 공격을 예로 들 수 있겠네요. CVE 대응되는 룰을 따로 만들지 않아도 이런 것들은 탐지할 수 있습니다.
2. IDS/IPS 성능 문제 때문에 룰을 삭제하는 경우가 있습니다. 이것도 하나의 요인이 되겠죠. 아주 오래된 룰 같은 경우에는 골라내서 삭제하는 경우도 있고요, 유명 웹 사이트가 스크립트 인젝션 당해서 로컬 프로그램을 시작시키는 상황이라면 그 사이트 복구될 때까지만 룰 걸어놨다가 지우는 경우도 있겠죠.
3. 인증을 거쳐야만 익스플로잇 할 수 있는 취약점들은 우선순위가 밀립니다.
4. 같은 네트워크 안에서만 접근 가능한 서비스에 관련된 취약점 역시 우선순위가 밀립니다. LDAP이나 RADIUS 서버 같은게 대표적이죠. 인터넷 망에 노출되지 않는게 보통이니까요.
5. 데이터를 아주 깊게 살펴봐야 되는 클라이언트 단의 공격은 NIDS 룰을 만들기가 아주 곤란합니다. 도무지 false positive나 false negative를 내지 않고 탐지하기가 어렵거든요. 가령 오피스 취약점 같은 경우 파일을 열면 충돌이 일어나거나 임의의 코드를 실행하게 될텐데, 이런것 탐지하려면 파일을 얻는 다양한 경로를 모두 고려해야 되는데다가 (http, email 등) 인코딩 해놓는 경우도 다 고려해야 해서 힘듭니다. CVE-2008-0105 취약점 같은 경우에도 대응하는 룰이 없죠.
6. 취약점 자체에 대한 정보 부족
* Jose Nazario 씨의 답변:
NVD CVE의 range (공격 가능 범위) 가지고 통계를 내봤습니다.
nvd=# SELECT range_type, count(range_type) from range group by range_type;
range_type | count
---------------+-------
local | 5368
remote | 19697
user_init | 3121
network | 6929
local_network | 114
(5 rows)




