2016년 9월 10일 토요일

인공지능 이상징후 탐지 시스템?

재미난 미국 특허를 발견했다.

아래는 발명 개요.

"A real-time anomaly SQL Injection detection system is provided to detect anomalies specific to the backend Database layer and the Web application layer of a Website. 

To reduce false alarms, the system correlates abnormal scores for the Database layer and Web application layer to detect and catch different forms of SQL injection attacks. The attacks are detected based on anomalies and not signatures or patterns."

요약하면 SQL 인젝션 공격 발생 시 URI 변수 영역의 길이가 평소(공격이 없는 정상 상태)보다 길어지는 점을 이용해서 대응하는 SQL 인젝션 이상징후 탐지 시스템.

[0048]
The ParameterValue Abnormal Score 84A or 84B is generally defined, for SQL injection to happen, such that the parameter Value length Will be longer than normal in most cases.

[0068]
From the above example, with SQL injection, it can be readily seen that the character distribution of parameters inside the URL will tend to appear unusual than the normal cases, in the sense of both length and the character distribution.

URI 프로파일링을 통해 정상 상태의 점수를 산정한 뒤 공격이 발생했을 때의 점수와 비교하겠다는 발상인데 베리 굿 아이디어.


웹서버는 사용자로부터 전달받은 URI를 이용해서 데이터베이스에 전달할 쿼리문을 생성한 후, 데이터베이스로부터 쿼리문에 대한 답을 받아서 다시 사용자에게 전달한다.
  • URI : GET /lib/comment/board_read_post.asp?BoardID=820646
  • 쿼리문 : select '필드' from '테이블' where BoardID='820646'

전달된 URI의 변수값은 쿼리문의 조건절(where 구문)에 사용된다. 일반적인 SQL 인젝션 공격은 이런 구조를 이용, URI의 변수 영역을 조작해서 쿼리문의 변조를 시도한다.
  • URI : GET /lib/comment/board_read_post.asp?BoardID=820646' and if(1=1,BENCHMARK(53733,MD5(0x41)),0) and 'x'='x
  • 쿼리문 : select '필드' from '테이블' where BoardID='820646' and if(1=1,BENCHMARK(53733,MD5(0x41)),0) and 'x'='x'

변수 영역의 길이가 늘어났다. 서비스가 안정화된 웹 서버라면 변수값에 사용되는 문자열의 분포나 변수값의 길이가 일정 범위 안에서 발생할 가능성이 분명 높을 것이다. 그 범위를 벗어나면 당연히 이상하지.

이런 생각을 왜 진작 못했을까? 이런 바보, 멍충이..는 아니고 사실 주변에서 자주 들어본 얘기.^^; 사람들 다 비슷한 생각하고 사는구나 싶다. 그런데 왜 생각만 하고 못했지?


또 하나 흥미로운 건 

해당 발명의 작업 흐름도. 306 단계를 보면 수집된 데이터를 'SOM ENGINE'으로 보내서 처리하게끔 되어 있는데 뭔가 싶어 찾아봤더니 'Self Organization Map'의 약자라고. 요새 유행하는 'Deep learning'의 조상(?)쯤 되는 인공신경망 모델이란다. 그냥도 아니고 무려 인공지능 보안 시스템에 대한 발명이었던 것.


요새 정보보안 분야에 부는 인공지능 바람의 방향을 제시해주는 아이디어가 아닐까 싶다. 빅데이터가 잘 할 수 있는 분야는 이상징후 탐지 분야이며, 인공지능 성공의 조건은 빅데이터란 얘기를 한 적이 있다. 정보보안 분야에서 인공지능이 갈 길은 빅데이터를 바탕으로 한 이상징후 탐지라는 게 개인적인 생각.

결국 해당 발명의 성패는 데이터에 달려 있다. 웹페이지별 변수 프로파일링, 웹페이지에 종속된 변수별 프로파일링 등 다양한 데이터 수집과 분석 과정이 필요할 것이다. 물론 웹사이트별 작업 난이도는 천차만별이겠지만, 얼마나 많이 수집하고 잘 정리하느냐가 관건.

빅데이터로 쌓고, 잘 정리해서 인공지능에 밀어넣고 하다 보면 뭐라도 되지 않을까? 공격 유형별로 이상징후 기준만 잘 정해서 데이터를 정리해 나간다면 SQL 인젝션 알파고, 웹쉘 알파고, DDoS 알파고 등등이 나올텐데. 걔들이 모이면 알파고 어벤져스. 오~^O^

그런데 우리나라에서도 비슷한 접근을 시도한 사례가 있다. 하지만 우리나라는 물론 미국에서도 당시에는 이런 시도가 유행을 타지는 못한 듯. 왜일까? 결국 데이터가 부족했겠지.

페이스북과 구글이 자신들의 인공지능 기술인 토치나 텐서플로우를 누구나 쓸 수 있게 공개할 수 있는 배경에는 기술만 가지고는 자신들을 추월하지 못한다는 자신감, 바로 데이터에 대한 자신감이 깔려 있다.

데이터가 있어야, 그것도 인공지능 모델을 만들고, 검증하고, 개선할 수 있을만큼 충분해야 하기 때문. 한마디로 다다익선. 기술 선도 이미지도 쌓고, 주가도 올리고, 그러면서 데이터는 독점하고, 참 똑똑해.

결국 앞으로 인공지능 한다고 어깨에 힘 좀 주려면 필요한 만큼의 데이터 수집이 가능해야 한다. 인터넷으로 빨대 꽂은 구글이나 페이스북처럼. 사람이 필요없다는 인공지능이 돌아가려면 데이터 수집과 특히 정제를 위한 사람의 노가다가 무지막지하게 필요하다는 건 함정.

msdn.microsoft.com/en-us/library/mt422593.aspx

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스