2022-08-11 18:10 (목)
[인터뷰] 김도현 스틸리언 선임연구원 “버그는 항상 친구가 있습니다”
상태바
[인터뷰] 김도현 스틸리언 선임연구원 “버그는 항상 친구가 있습니다”
  • 길민권 기자
  • 승인 2022.07.19 13:39
이 기사를 공유합니다

“비슷한 모양의 버그를 찾는 것이 생각보다 효율적...취약점 연구에 도움될 것”
김도현 스틸리언 선임연구원.
김도현 스틸리언 선임연구원.

스틸리언(대표 박찬암)은 지난 6월 29일 첫 자체 보안 세미나인 ‘Stealien Security Seminar(이하 3S)’를 오프라인·온라인 동시 개최했다. 

올해 처음으로 개최되는 3S에서는 프로그램 분석 기법, 블록체인 관련 연구, 오프라인 한정 비공개 주제 등 스틸리언 소속 연구원의 연구 내용과 상세 기술에 대해 정보는 공유하는 자리였다. 

데일리시큐는 이번 세미나에서 정적 취약점 분석을 주제로 강연을 진행한 스틸리언 김도현 선임연구원과 인터뷰를 진행해 취약점 분석 노하우를 들어보는 시간을 가졌다.  


[인터뷰 / 스틸리언 김도현 선임연구원]

Q. 스틸리언이 개최한 3S에 대해 간략히 소개를 부탁합니다.  

A. 2022년 처음으로 개최된 스틸리언의 보안 세미나 Stealien Security Seminar(이하 ‘3S’)는 사이버 보안 업계의 발전에 이바지하고 미래 인재 양성에 도움이 되고자 다양한 연구 내용과 기술에 대해 공유하는 장으로써 기획되었습니다. 프로그램 분석 기법, 블록체인 관련 연구, 오프라인 한정 비공개 주제 등 스틸리언 소속 연구원의 연구 내용과 상세 기술에 대해 다루었으며, 작년에 진행된 스틸리언의 멘토링 프로그램 SSL 2기 수료생의 연구 성과를 발표하는 시간도 마련하였습니다. 

Q. 이번에 발표한 취약점 연구와 관련 주요 내용은 무엇이었나요?

A. Program Analysis를 이용해 정적으로 취약점을 찾아내는 방법(Static Vulnerability Analysis, 이하 SVA)에 대해 소개했습니다. 대부분 보안 연구원들이 취약점을 자동으로 발굴하기 위해 fuzzing(퍼징. 프로그램에 반복적으로 무작위 입력 값을 전달해 버그를 찾는 기술)을 사용하는 데 비해 SVA는 많이 사용되지 않는데요.

이번 세미나에서는 SVA에 대한 소개와 몇 가지 예시를 바탕으로 장단점을 비교하였습니다. SVA는 'Static Program Analysis'라는 컴파일러 이론의 한 부분에 바탕을 두고 있는데요. 프로그램을 실제로 실행하지 않고 프로그램이 어떤 행위를 하는지 예측할 때 사용할 수 있습니다.

fuzzing과 다르게 프로그램을 실제로 실행하지 않기 때문에 SVA가 실제로 찾아내는 취약점이 100% 구현 가능하지는 않지만, 플랫폼이나 아키텍처가 각기 다른 프로그램에서도 별도의 환경 구축 없이 취약점을 빠르게 찾아내는 것이 장점입니다. 추가적인 연구는 올해 여름에 모집하는 스틸리언의 연구 지원 프로그램 SSL(Stealien Security Leader)에서 함께 진행할 예정입니다.

Q. 자신만의 취약점 분석 과정을 소개해 주신다면?

A. 취약점 분석 과정은 연구원 개개인에 따라 매우 다양합니다. 저는 저만의 방법론을 자주 보는 타깃들에 대입해 취약점을 분석하는데요. 그 내용을 요약하자면 다음과 같습니다. 

①프로그램 분석: 역공학, 코드 리뷰 등을 통해 우선 타깃 프로그램에 대해 이해하고 취약점 분석이 가능한 환경을 구축합니다.

②사례 분석: 취약점을 찾고자 하는 타깃 또는 그와 비슷한 타깃에서 어떠한 취약점이 발견되었는지 지난 사례를 분석합니다.

③취약점 패턴 검색: SVA를 통해 취약점의 패턴을 검색해 나오는 결과들에 대해 우선적으로 분석합니다.

④취약점 찾기: 직접 코드를 보며 취약점을 찾습니다.

(보다 상세한 내용은 아래 링크를 참고해 주시기 바랍니다.)

-클릭

-클릭

Q. 취약점을 찾거나 분석하는데 자신만의 노하우가 있다면.

A. 좋은 버그는 항상 친구가 있습니다. 비슷한 모양의 버그를 찾는 것이 생각보다 효율적이기 때문에 항상 시도해 보면 좋다고 생각합니다. 이번 발표의 주제인 SVA 또한 비슷한 모양의 버그를 서로 다른 프로그램에서 찾도록 도와줄 수 있습니다. 오픈소스라면 CodeQL, weggli를, 바이너리라면 여러분이 쓰기 편한 역공학 플랫폼을 이용할 수 있을 것 같습니다.

Q. 취약점 연구와 관련 전문가가 되려면 어떤 공부를 중점적으로 해야 하나요?

A. 취약점만 찾는 것은 딱히 많은 공부를 할 필요가 없습니다. C언어, 리버싱 기술과 몇 가지 bad secure coding practice만 알고 있어도 취약점은 찾을 수 있습니다. 

하지만 전문가들이 말하는 '천재적인' 연구원이 되기 위해서는 컴퓨터 공학의 기초적인 분야들에 대해 아주 깊은 이해가 필요합니다. 또한, 계속 트렌드를 따라가야 하기 때문에 트위터나 security patch commit 알림을 구독하는 등 개인적인 보안 이슈 창구를 만드는 것도 중요하다고 생각합니다. 

★정보보안 대표 미디어 데일리시큐!★