AI Security


Professor

Yunheung Paek

Members

Sunwoo Ahn

Hyunjun Kim

Whoi Ree Ha

Seonggwan Ahn

Current Research

지난 10년 간 사람의 인지 및 분석이 중요했던 보안 문제 (스팸 탐지, 새로운 악성코드 유형의 탐지, 방대한 네트워크 트래픽 내에서 악성 이벤트 분류, 소프트웨어 취약점 탐지, 피싱 사이트 차단, 사기거래 예방 등) 에서는 분석이나 보안 설정을 담당하는 보안전문가/보안관리자의 부담을 줄이기 위해 기계학습을 도입하려는 다양한 시도가 있어 왔으나 대부분 학계에서만 조금 관심을 보이는 연구주제 정도의 선에서 그쳤다. 하지만 현재 딥러닝 기법의 부상으로 학계뿐 아니라 산업계에서도 큰 관심을 보이고 있으며, 앞다투어 딥러닝 기법을 도입한 보안 솔루션의 개발이 이루어지고 있다. 본 연구실에서는 이와 관련하여 새로운 악성코드 유형의 탐지, 소프트웨어 취약점 탐지, 코드 저자 식별 등 딥러닝 기법을 활용한 보안을 위한 코드 모델링 연구를 위주로 연구를 진행하고 있다.


Code Authorship Identification


날로 소프트웨어의 복잡성 및 크기가 커짐에 따라 개발 시간을 절감 등의 이점을 위해서 프로그램 개발자들이 자신들의 코드에 기 개발된 오픈 소스 소프트웨어(OSS) 채용이 급격히 증가하고 있다. 이렇게 OSS를 다수 채용해 개발된 프로그램은 내부에 출처가 불분명한, 또는 저자 불명의 코드들이 포함되게 됨으로써 해당 코드로부터 잠재적 보안 위협이 발생하게 된다. 이러한 잠재적 보안 위협은 해당 코드의 저자를 찾아내 신뢰할 수 있는지 검증하고, 신뢰할 수 없다면 선제적 보안 분석을 통해 미리 제거할 수 있다. 즉, 프로그램의 저자를 찾아내는 연구를 활용하여 프로그램의 보안성을 향상시킬 수 있다. 한편, 소프트웨어의 복잡성 및 크기가 커지면서 해당 소프트웨어가 표절을 하여 저작권을 침해하는지 분석하기 어려워지고 있다. 프로그램의 저작권 소유자는 프로그램의 저자를 찾아내는 연구를 활용하여 소프트웨어 내의 저자를 찾아냄으로써, 해당 소프트웨어가 저작권을 침해하고 있는지 판별할 수 있다. 프로그램의 저자를 찾아내는 연구는 기 서술된 문제들을 포함한 여러 활용 가능성을 가지고 있어, 다양한 방안으로 연구가 진행되고 있다. 기존의 많은 연구들은 코드 내에 있는 개발자를 특정 지을 수 있는 특징을 전문가가 정의하여 저자를 찾아내는 알고리즘의 입력으로 사용하였다. 하지만, 프로그램의 복잡성 및 크기가 커지고, 프로그램이 동작하는 플랫폼도 다양해지고 있어, 프로그램을 작성하는 개발자의 코딩 패턴도 함께 다양해지고 있다. 코딩 패턴이 다양해짐에 따라 코딩 스타일의 분석하고, 분석된 결과를 바탕으로 정의된 특징들의 상호 관계를 알아내는 방법을 사람이 찾아내기 어려워지고 있다. 이러한 어려움을 극복하기 위해, 프로그램의 특징들을 머신 러닝의 입력으로 넣어 저자를 판별하려는 시도가 있었고, 일정 부분 성공을 거두고 있다. 본 연구실에서는 이러한 연구들에 기반하여 data에서 원하는 작업에 필요한 특징들을 뽑아내는데 큰 강점을 가지는 인공신경망을 활용하여 그 정확도를 높이는 연구를 진행하고 있다.

기존의 많은 연구들은 코드 내에 있는 개발자를 특정 지을 수 있는 특징을 전문가가 정의하여 저자를 찾아내는 알고리즘의 입력으로 사용하였다. 하지만, 프로그램의 복잡성 및 크기가 커지고, 프로그램이 동작하는 플랫폼도 다양해지고 있어, 프로그램을 작성하는 개발자의 코딩 패턴도 함께 다양해지고 있다. 코딩 패턴이 다양해짐에 따라 코딩 스타일의 분석하고, 분석된 결과를 바탕으로 정의된 특징들의 상호 관계를 알아내는 방법을 사람이 찾아내기 어려워지고 있다. 이러한 어려움을 극복하기 위해, 프로그램의 특징들을 머신 러닝의 입력으로 넣어 저자를 판별하려는 시도가 있었고, 일정 부분 성공을 거두고 있다. 본 연구실에서는 이러한 연구들에 기반하여 data에서 원하는 작업에 필요한 특징들을 뽑아내는데 큰 강점을 가지는 인공신경망을 활용하여 그 정확도를 높이는 연구를 진행하고 있다.


Binary Similarity



오픈 소스 소프트웨어(OSS) 사용이 급격히 증가함에 따라, 프로그램 사용자와 개발자 모두 무분별하게 프로그램을 받아 사용하고 있다. 이러한 무분별한 사용은 취약점이 있는 코드의 확산을 야기할 수 있다. 이에 따라, 기존 코드와 유사한지 판별하는 모델을 활용하여, 취약점 및 표절 탐지를 해내는 연구가 진행되고 있다. 하지만, 프로그램이 기계어로 번역된 실행 가능한 파일(binary)의 형태로 배포되는 경우가 늘어나고 있는데, 이 binary 파일에는 프로그램 실행에 필요한 정보만 남아있기 때문에, 취약점 분석을 위한 정보가 많이 사라진 상태이다. 정보 상의 한계를 해결하기 위해, binary에서 추출 가능한 특징들의 상호 관계를 머신 러닝을 활용하여 저자를 판별하려는 시도가 있다. 이러한 시도에 기반하여, 본 연구실에서는 전문가의 개입이 들어가는 binary의 특징 추출을 대신하여, raw data에서 특징을 뽑아내는데 큰 강점을 가지는 인공신경망을 활용하여 그 정확도를 높이는 연구를 진행하고 있다.


Fuzzing with AI



일반적으로 프로그램에 대한 버그나 에러를 일으키는 공격은 공격자가 특정 입력값 생성을 통해 프로그램의 특정 위치에 도달해서 해당 코드가 비정상적인 행위나 결과를 초래하는 방식으로 일어난다. 따라서 개발자들은 이러한 잠재적 공격으로부터 자신들의 프로그램을 안전하게 만들기 위해서 개발 단계에서 이런 입력값이 존재하는지 미리 알아내는 것에 노력을 기울이고 있다. 하지만 프로그램이 점차 복잡해지면서 입력으로 받는 변수의 수가 증가해 무수히 많은 입력값을 실행해보아야 하므로 그 특정 입력값을 알아내는 것은 해변에서 바늘 찾기처럼 어려워졌다. 무수히 많은 입력값 중 일부를 실제로 수행하며 코드 내의 취약점을 찾는 기술을 fuzzing이라 한다. 과거엔 fuzzing을 위해 brute-force 한 방법으로 입력값들을 생성해 에러가 일어나는지 확인했지만, 점차 AI 기술을 적용하여 입력값과 취약한 코드 사이의 복잡한 관계를 학습해 스마트하게 입력값을 찾아내는 방법이 연구되고 있다. 본 연구실에서는 fuzzing 기술에 AI 기술을 접목해 에러를 일으키는 특정 입력값을 찾는 연구를 진행하고 있다.