아주 스마트한 최신 머신러닝을 사용해 알려진, 알려지지 않은 침입 위험을 제거하는 새로운 첨단 네트워크 침입 탐지 장치에 대해 들어봤을 것이다. 네트워크의 정상 동작 및 비정상 동작에 대해 학습해, 비정상 동작을 확인하면 즉시 알려줄 정도로 IDS(Intrusion Detection System)는 확실히 스마트해졌다.
또한 모든 악성 트래픽을 차단하는 침입 방지 시스템(Intrusion Prevention System, IPS)에 대해서도 들어봤을 것이다. 이런 AI 기반 솔루션은 99%의 정확도로 공격을 탐지한다고 주장한다. 심지어 기존에 알려지지 않았던 공격도 탐지할 수 있다고 강조한다.
대단히 놀라운 주장이다. 그리고 멋진 마케팅 홍보’다. 그러나 정말 그럴까? 필자는 이런 주장에 설득되지 않는다. 2가지 중요한 이유 때문이다.
1. 앞서 언급한 마케팅 주장은 공격 탐지와 침입 탐지를 혼동하고 있다. 공격에는 성공 못해도, 침입에는 성공할 수 있다. 5개의 새로운 공격을 탐지했다고 가정하자. 그러나 단 1개가 진짜 침입이다. 4개의 실패한 공격이 아닌, 1개의 성공한 침입에 초점을 맞추고 싶지 않은가?
2. 머신러닝으로 강화된 보안이 견고하지 않을 수도 있다. 공급업체에 해당되는 경우가 많은 1개 데이터 세트에는 잘 작동하지만, 사용자의 진짜 네트워크에는 효과가 없다는 의미다. 간단히 말해, 공격자는 탐지 회피를 중시한다. 그런데 머신러닝 관련 조사 결과에 따르면, 탐지를 회피하는 것이 어렵지 않은 경우가 많다.
머신러닝 알고리즘은 일반적으로 활성 공격자를 이기려는데 목적을 두고 있지 않다. 사실 공격자 관련 머신러닝 분야는 학술 연구조차 아직 유년기’이다. 머신러닝 기술이 적용된 실제 제품은 두 말할 나위 없다. 오해는 하지말기 바란다. 멋진 연구, 훌륭한 연구원이 많다. 그러나 완전한 ‘자율 보안’에 대한 준비가 되었다고 생각하지 않는다.
자율 보안(autonomous security)은 머신이 탐지, 대응, 방어를 한다는 비전을 갖고 있다. 앞서 언급한 2가지 이유 때문에 완전 자율 보안이 될 수 없다. 간단히 설명하면 다음과 같다.
- (대다수 실패하는) 공격을 표적으로 쫓는 완전 자율 시스템은 무용지물이다. 진짜 침입을 방지하는 것이 중요하다. - 견고하지 못한 시스템은 회피하기 쉽다. 배포되는 즉시, 공격자가 효과가 있는 부분과 없는 부분을 파악해 침입한다.
침입 탐지 및 방지를 사용하는 것을 중심으로, 네트워크 보안(Netsec)과 머신러닝에 대해 조금 더 자세한 얘길해보자. 탐지율의 대상은 ‘진짜 침입’!필자가 머신러닝에 설득이 되지 않는 중요한 이유 중 하나는 탐지율(detection rates)을 진짜 공격 비율과 혼동하는 경우가 많기 때문이다. IDS의 경우, 사용자는 진짜 침입을 파악하기 원한다. 공격자에 대해 조사하고 싶어하는 것이 아니다. 공격자가 실제 공격에 성공했을 때, 이를 탐지하기 원한다. 유감스럽게, 실제는 그렇지 못하다.
필자는 이 기사 첫 문장에서 독자들을 속이려 시도했다. 눈치챘는가? 침입 탐지에 대해 이야기를 해서 관심을 유발한 후, 정확한 공격 탐지율에 대해 설명을 한 것이다. 유인책을 썼는데, 알아차린 독자들도 있을 것이라 본다.
공격 탐지와 침입 탐지를 바꾼 것이다. 이 둘은 다른 개념이다. 공격은 침입 징후이다. 그러나 이런 공격은 성공할 수도, 그렇지 못할 수도 있다. 침입이란 누군가 액세스를 한 것이다.
포트 스윕(Port Sweep, 예: nmap), 기본 비밀번호를 시도해보는 스크립트 키디(Script Kiddies), 표적화 된 시스템 익스플로잇 공격을 생각해보자.
Nmap 스윕은 침해로 이어지지 않고, 스크립트 키디는 성공하지 못할 확률이 높다. 그러나 표적화 된 공격은 조금 다르다. 성공 확률이 높다. 사용자는 제한된 리소스, 인력, 주의 범위를 진짜 침입에만 집중하고 싶을 것이다.
이를 이해하는 데 필요한 핵심 개념이 ‘기저율의 오류(base rate fallacy)’이다. 그렇게 어려운 오류는 아니지만, 사람이 즉각적으로 이해하기 어려운 통계 개념이다. 수학과 통계에 관심이 많은 사람을 위해 덧붙이면, 필자가 카네기 멜론 대학 과정에서 중요하게 다루는 논문은 스테판 액셀슨(Stefan Axelsson)의 논문이다.
영업 담당자를 당황시키고 싶다면, 이 논문을 읽었는지 물어보라. 예를 들어, 도박꾼이 승승장구할 때 기저율의 오류를 확인할 수 있다. 그들은 이기는 경우가 많기 때문에, 그들의 시스템이 승자’라고 생각한다. 동일한 원칙이 보안에도 적용될 수 있다. 머신러닝 알고리즘이 옳은 때가 많기 때문에, 이를 실제보다 더 낫게 착각한다.
기저율의 오류를 설명하면 다음과 같다. 병원을 방문해 질병 발견에 대한 정확도가 99%인 테스트를 받았다고 가정하자. 나쁜 소식은 테스트 결과에 따르면 질병이 있다는 것이며, 좋은 소식은 발병 확률이 아주 드문 질병이라는 것이다. 발병자가 500명 중 1명에 불과하다. 실제 해당 질병을 앓고 있을 확률은 얼마나 될까?
여기에서 오류가 발생한다. 대부분은 테스트 정확도가 99%이기 때문에 자신이 질병을 앓고 있을 확률이 아주 높다고 생각한다. 그러나 수학적으로는 그렇지 않다. 실제 질병을 앓고 있을 확률은 약 20%에 불과하다. 왜 그럴까?
테스트가 99%가 정확하다는 것은 100명 중 1명이 음성임에도 양성인 것으로 밝혀진다는 것이다. 그러나 이 질병의 실제 발병자는 500명 중 1명이다. 500명 테스트에서 5명이 질병에 대해 양성인 것으로 밝혀지지만, 실제 양성인 사람은 1명, 즉 전체의 약 20%에 불과하다(수학 전공자라면 베이즈의 정리로 정확한 확률을 계산할 수 있다. 우리는 조건부 확률보다 용이하기 때문에 근사치를 사용한다).
숫자가 커지면 상황이 더 복잡해진다. 예를 들어, 실제 침입율이 1/100만 이벤트에 불과하다고 가정하자. 99% 정확도의 탐지율에서 진짜 경고(알람) 당 긍정 오류는 대략 9,999개다. 이 많은 긍정 오류를 추적할 시간이 있을까?
이를 IDS, 알고리즘, 머신러닝, 이것들이 없는 경우 모두에 대입해보자. 실제 침입율이 아주 낮다면, 99%의 정확도를 가진 IDS는 정말 많은 수의 긍정 오류가 발생할 것이다. SOC의 원칙 가운데 하나는 분석가가 시간당 처리할 수 있는 이벤트의 수는 약 10개라는 것이다. 대부분이 진짜 침입이 아닌 긍정 오류라면, 잘해야 수많은 긍정 오류 처리에 시간을 뺏기게 되고, 더 나쁜 경우에는 IDS를 무시하라고 가르치는 셈이 된다.
수학적으로 보면, 실제로는 긍정 오류율이 더 높을 확률이 크다. 머신러닝은 견고하지 않다 머신러닝은 견고하지 않다. 여기에서 견고하다는 것은 ‘공격자가 예상을 한 후에도 계속 효과가 있어야 한다’는 의미다.
자신이 공격자라고 가정하자. 밀수를 시도하다가 검문소에서 붙잡혔다. 법 집행 기관(IDS)이 승리한 것이다. 검문 대상이 무엇인지 몰랐고, 발각이 되도록 무언가 건드렸기 때문에 법 집행 기관이 승리한 것이다.
자신이 지능적인 범죄자라면 어떻게 하겠는가? 자연스럽게 검문소, 검문 규칙을 파악하고, 이를 회피할 것이다. 그렇지 않은가? 다시 말해, ‘방어 체계’를 인식한 즉시 이를 회피할 방법을 파악할 것이다. 동일한 원칙이 공격자에게 적용된다.
공격자가 공격 방법을 바꾸는 경우에도 계속 공격을 탐지하는 IDS 시스템이 견고한 IDS 시스템이라 할 수 있다. 이것이 중대한 문제점이다. 현재 머신러닝 시스템이 매력적으로 보이는 이유는 공격자가 이를 회피할 시도를 하지 않기 때문이다. 머신러닝 시스템을 배포하는 즉시, 공격자는 통과되지 않는다는 점을 알고, 이에 대한 회피를 시도하게 될 것이다.
여기에 적용되는 이론이 NFL(No Free Lunch)이라는 이론이다. 수학에 관심이 많은 사람이라면 ‘NFL 정리(No Free Lunch Theorem)’라는 논문을 참조하고, 이를 이해하기 쉽게 간추린 요약본도 있다.
NFL 정리에 따르면, 모든 문제에 효과적으로 적용할 수 있는 그런 단일 모델은 존재하지 않는다. 보안에서의 ‘함의’를 설명하면, 어떤 머신러닝 알고리즘이든 공격자는 가정을 무너뜨려 머신러닝이 제대로 작동하지 않도록 만드는 공격 방법을 만들 확률이 있다.
지금까지 머신러닝 기반 보안 분야에 대한 조사 및 연구에 따르면, 견고성이 입증되지 않은 실정이다.
- 캐리 게이츠와 캐롤 테일러는 여러 측면에서 머신러닝 기반 IDS의 문제점을 지적하고 있다. 특히 견고성과 트레이닝 데이터 품질을 큰 단점으로 꼽는다.
- 악성코드 개발자는 탐지를 회피하도록 악성코드를 수정할 때 바이러스 토털(VirusToral, 많은 상용 안티 악성코드 솔루션을 가동시키는 시스템)을 많이 이용한다.
- 2016년, 버지니아 대학교 연구원들은 PDF 악성코드를 탐지하는 첨단 머신러닝 알고리즘을 회피할 수 있음을 입증해 보였다. 이에 대한 결과는 https://evademl.org/에서 확인할 수 있다. 중요한 점은 연구에 사용한 모든 표본에서 머신러닝 분류자(ML classifiers)를 회피할 수 있는 변종’을 자동으로 찾을 수 있음을 보여줬다. 추가 연구에 따르면, 2번의 간단한 변이로 47%(시도) 확률로 지메일의 악성코드 분류자를 속일 수 있다. 구글만 회피할 수 있는 것이 아니다. 다른 머신러닝 기반의 안티 바이러스 엔진 또한 속일 수 있다.
- 카네기 멜론 대학교의 루조 바우어 연구팀은 첨단 안면 인식 알고리즘이 공격자를 다른 특정 사람으로 인식하도록 속이는 안경을 3D 프린팅으로 만들 수 있다는 점을 입증해 보였다. 공격자가 공항 검문대의 안면 인식 시스템을 회피하는 안경을 3D 프린팅으로 만들 수 있다는 의미다. 분야가 다르지만 적용되는 원칙은 동일하다. 머신러닝은 이런 회피에 견고하지 못하다.
- 침입 탐지 분야에서 평판이 높은 브로(Bro) 네트워크 IDS의 아키텍트인 번 팩슨과 로빈 섬머스는 침입 방어 시스템의 머신러닝과 비정상 탐지 기술의 도전 과제에 대해 개략적으로 설명하는 자료를 발표했다.
이것이 알려주는 교훈은 공격자는 방어 체계에 대해 학습을 할 수 있고, 방어 체계가 견고하지 않을 경우 이를 회피할 수 있다는 것이다. 설득이 되지 않는 이유필자는 머신러닝 기반 보안에 대한 주장에 설득이 되지 않는다. 이번 기사에서 2가지 이유를 제시했다.
- 인공지능과 머신러닝 기반 IDS 제품들은 쉽게 회피가 가능하다. 그런데 이 부분이 제대로 반영되지 않은 경우가 많다. 이를 배포할 경우, 지금 당장은 탐지율을 높일 수 있지만 오래가지 않을 것이다.
- 수학적으로 실제 침입이 공격 대비 드물 경우, 긍정 오류 발생 비율이 지나치게 높을 확률이 크다.
이는 시작에 불과하다. 여기에서 다루지 않은 다른 기술적인 문제들도 존재한다. 트레이닝에 사용한 데이터가 네트워크를 실제 반영하고 있는지 여부 등을 예로 들 수 있다. 구글과 AT&T 같은 기업은 엄청나게 많은 데이터를 보유하고 있으며, 여전히 여기에 어려움을 겪고 있다.
유기적 문제도 있다. 내부 직원들이 알려지지 않은, 또는 이상한 위험을 관리하지 않도록 SAL를 조정하는 문제를 예로 들 수 있다. 역량이 높은 보안 운영 센터의 경우, 먼저 자신이 처리할 수 있는 양을 파악한 후 탐지 도구를 적절히 하향 조정하는 경우가 많다. 권장 사항먼저 단기적인 해결을 추구할지, 회피에 대해 견고할 필요가 있는 장기적인 해결을 추구할지 생각해야 한다. 인터넷 쓰레기를 막는 것에만 관심이 있다면, 새로운 머신러닝 제품이 도움이 될 수 있다. 하지만 공격자가 학습을 할 경우에도 머신러닝이 계속 탐지할 것이라는 믿음은 과학적으로 입증되지 않았다.
둘째, 탐지 대상에 대해 깊이 생각해야 한다. 공격자에 대해 조사하기 원하는가? 아니면 진짜 문제에 대한 대응을 책임지고 있는가? ‘기저율의 오류’에 따르면, 침입의 공격에서 실제 침입이 차지하는 비중이 아주 낮다면, 수학적으로 머신러닝이든 아니든 모든 접근법에 한계가 있다.
머신러닝이 도움이 될 수 있는 분야는 어디일까? 아직 결론이 나지 않았지만, 일반적으로 말하면 머신러닝은 통계다. 통계적 정확도를 크게 높이려 시도하는 영역에 더 효과적으로 적용이 된다. 필자는 일부러 ‘통계’라는 단어를 사용하고 있는데, 이는 위험이 존재한다는 점을 받아들여야 한다는 것이다. 예를 들어, 구글은 머신러닝 덕분에 광고 클릭율에서 큰 성과를 일궈냈다. 5%만 향상시켜도 매출이 크게 증대되기 때문이다. 그러나 자사의 조직에서도 5% 향상이 충분한지 생각해보자.
머신러닝이 도움을 줄 수 있는 두 번째 영역은 단순한 공격자를 저지하는 것이다. 잘 알려진 익스플로잇을 사용하는 스크립트 키디가 여기에 해당된다. 이 경우, 견고성이 필요없다. 단호하게 알고리즘을 회피하려 시도하는 공격자를 배제할 수 있기 때문이다.
마지막으로 현재 머신러닝에 대한 훌륭한 연구, 우수한 연구원이 많다는 점을 강조하고 싶다. 하지만 더 많이 필요하다. 아직 ‘거기’에 도달하지 못했다고 생각한다. 최소한 일반 사용자가 기대하는 수준에서는 그렇다.
처음 이 글을 시작하면서 필자는 애플리케이션의 최소한 일부 보안을 완벽하게 자율화(자동화)시킬 확률이 더 높을 것이라고 언급했다. 이의 근거는 다음과 같다.
- 퍼징(Fuzzing) 같은 애플리케이션 보안 테스트 기법의 긍정 오류는 ‘0’이다. - 공격자는 배포되는 앱은 통제하지 못한다. 따라서 회피의 개념이 적용되지 않을 수도 있다.
그렇다면 머신러닝 기반 IDS가 완전히 자율적인 네트워크 방어 체계가 될 가능성이 있을까? 지금 당장은 아니다. editor@itworld.co.kr
원문보기: http://www.itworld.co.kr/news/130311#csidxda1a3545ab9a6cab10543b1cd2ff115
|