지니언스에서는 22년 3월부터 버그바운티를 시행하고 있습니다. 이번 블로그에서는 23년 12월 말까지의 데이터를 통해 지난 2년간 지니언스 버그바운티가 어떻게 운영되었는지를 알아봅니다. 또 신고서 작성의 좋은 예와 나쁜 예, 취약점을 찾는 법 등 버그바운티 프로그램의 참여 방법에 대해 상세히 소개해 드리겠습니다.
1. 지니언스 버그바운티 실적
지난 2년간 신고서 자체 접수 및 국내 버그바운티 플랫폼과 협업을 하였고, 미국 법인 버그바운티 프로그램도 정식 오픈하여 전 세계의 보안 연구원 및 윤리적 해커로부터 수많은 취약점 보고서를 받고 있습니다.
여러 가지 보고서를 받으며 실적도 많이 쌓았는데요, 지금부터 그 실적을 보여드리도록 하겠습니다.
지니언스 버그바운티 프로그램의 제보 대상은 NAC(네트워크 접근제어 솔루션), CSM(클라우드 고객 관리 서비스), GDPI(지니언스 장치 식별 관리 솔루션), 홈페이지 등으로 다양한 분야에서 진행하고 있습니다.
1) 2년간 접수된 총 신고서
총 신고서 546건 중 취약점은 105건으로 약 19.2%의 비중을 차지하였고, 취약점의 포상금 합계는 약 4,700만원이 사용되었습니다.
NAC에 대한 신고서는 44건이 취약점 신고서로 분류되었으며, 약 2,400만원이 포상금으로 사용되었습니다.
CSM에 대한 신고서는 55건이 취약점 신고서로 분류되었으며, 약 2,000만원의 포상금이 사용되었습니다.
GDPI에 대한 신고서는 취약점으로 분류된 신고서가 없었고, 따라서 사용한 포상금도 없었습니다.
홈페이지에 대한 신고서는 2건이 취약점 신고서로 분류되었으며, 약 60만원의 포상금이 사용되었습니다.
기타에 대한 신고서는 4건이 취약점 신고서로 분류되었으며, 약 200만원의 포상금이 사용되었습니다.
2) 총 신고서 중 유효한 취약점 신고서
유효한 취약점 신고서란 실제 취약점으로 분류되어 패치가 필요한 신고서 입니다.
대상별로 가장 많이 받아간 포상금을 확인했을 때, NAC가 약 237만원 정도로 제일 높았고, 2번째는 CSM으로 약 112만원을 받아갔습니다.
3) 유효한 신고서 취약점 심각도별 분류
유효한 취약점 신고서는 CVSS 점수로 취약점 심각도를 평가합니다.
총 105건의 유효한 취약점 신고서 중 낮음 등급은 80건, 보통 등급은 23건으로 두 등급 비율이 약 98%로 대부분이었으며, 심각 등급 1건, 위험 등급 1건으로 평가되었습니다.
NAC의 신고서 44건 중 30건은 낮음, 12건은 보통, 1건은 심각, 1건은 위험으로 분류되었습니다.
CSM의 신고서 55건 중 46건은 낮음, 9건은 보통으로 분류되었습니다.
4) 신고자 분류(해외, 국내)
지니언스 버그바운티 프로그램은 약 90명의 제보자로부터 약 550건의 신고를 받아왔으며, 약 70% 정도가 해외 버그바운터로 해외에서도 많은 관심을 가지고 신고를 해왔습니다.
한 명이 가장 많이 신고한 건수는 해외에서는 54건이며, 국내에서는 50건이었습니다.
한 명이 가장 많이 받아간 포상금 금액은 해외에서는 약 1,550달러였으며, 국내에서는 약 237만원이었습니다.
2. 버그바운티 신고서 작성 사례
지니언스는 현재 구글폼을 통하여 취약점 신고서를 접수받고 있습니다.
어떤 신고서가 평가하기 좋은 신고서가 되는지, 어떤 신고서가 평가하기 힘든 신고서가 되는지에 대해 예시를 보여드리면서 소개해 드리겠습니다.
신고서는 해외에서 들어온 영어로 작성된 신고서를 사용하였으며, 보안상의 이유로 내용을 모자이크 하여 설명하겠습니다.
1) 평가하기 좋은 잘 작성된 신고서
[그림 1. 평가하기 좋은 잘 작성된 신고서-1]
[그림 2. 평가하기 좋은 잘 작성된 신고서-2]
잘 작성된 신고서 같은 경우에는 항목에 대한 설명이 올바르고, 간결한 핵심 내용 위주로 잘 작성이 되어 있었습니다. 평가가 용이하도록 신고자가 확인한 파일도 첨부하였습니다. 다른 신고자의 경우 자신이 직접 공격한 영상파일을 첨부하는 사람들도 있습니다. 이런 식으로 첨부파일이 있으면 더욱더 평가하기가 좋아져 서로 간의 문제가 생길 일이 적습니다.
2) 평가하기 어려운 잘못 작성된 신고서
[그림 3. 평가하기 어렵게 잘못 작성된 신고서-1]
[그림 4. 평가하기 어렵게 잘못 작성된 신고서-2]
평가하기 어렵게 잘못 작성된 신고서 같은 경우에는 항목도 불일치 되어있고, 내용 설명 또한 부실하게 작성이 되어 있었습니다. 따로 첨부 파일도 있지 않아 평가에 어려움이 있었습니다. 이러한 신고자들은 평가를 위해서 추가 정보를 요청해야 하므로 불필요한 소통 시간이 늘어나게 되고, 이에 따라 취약점 여부를 판단할 수 있는 시간이 줄어들게 되는 등 문제가 생겨 프로세스가 더욱 지연되고 평가가 힘들어집니다.
지니언스 버그바운티 프로그램 뿐만 아니라 무언가를 제보할 때는 받는 사람이 내용을 확실하게 알 수 있게 잘 작성하여 전달하는 것이 중요하다고 생각합니다.
3. 취약점을 찾는 방법 (No rate limiting 사례)
대부분의 사람들이 취약점을 찾기가 어렵다고 생각하지만, 사실 매우 간단한 방법을 사용하여 포상금을 받아 가는 경우도 있습니다.
이번 챕터에서는 간단한 공격과 함께 공격의 예방책까지 알아보겠습니다.
소개하려는 취약점은 No rate limiting 이라고 불리며, 예를 들어 로그인 시 실패 횟수 제한 및 로그인 잠금을 하지 않는 것과 관련 있습니다.
1) 공격 사례
물건을 구매하기 위해 어떤 쇼핑몰 페이지에 접속하는 상황을 생각해 보겠습니다. 쇼핑몰에 로그인을 할 때 일반적으로 사용자의 아이디와 비밀번호를 입력하게 됩니다. 비밀번호는 쉬울 수도 어려울 수도 있습니다. 아이디와 비밀번호 입력 시 그 입력값이 맞는지 쇼핑몰 서버에 확인 요청을 하게 됩니다. 만약 이 과정에서 요청 횟수가 제한되지 않는다면, 공격자는 서버에 무수히 많은 요청을 보낼 수 있습니다. 짧은 시간 안에 쇼핑몰 서버에 엄청난 양의 요청이 보내지게 되면 서버의 처리량이 느려져서 쇼핑몰 사이트가 멈추거나 접근이 불가능해질 수 있습니다.
이러한 상황에서 공격자는 피해자의 아이디를 알아낸 후, 비밀번호 입력값에 가능한 비밀번호를 추측하여 무수히 많은 시도를 할 수 있습니다. 이 과정에서 로그인이 성공된다면, 피해자의 아이디와 비밀번호가 공격자의 손에 넘어가게 되어 피해자의 보유 포인트나 다른 개인 정보를 탈취할 수 있는 범죄로 이어질 수 있습니다.
다음 사진은 실제로 속도 제한이 없는 페이지에 대해 사용자의 비밀번호를 알아내기 위해 아무 값이나 입력하여 알아내는 과정 중 한 부분입니다.
[그림 5. 프로그램을 사용하여 무작위 대입 공격을 하는 과정]
실제 위의 방법을 사용하여 공격자가 피해자의 계정 정보를 알아내 로그인을 한 후 정보를 가져갈 수 있습니다.
2) 방어 사례
그렇다면 이러한 공격을 막을 수 있는 방법은 무엇일까요?
독자 분들께서도 이미 경험해 보셨을 텐데요. 몇 회 이상 로그인 시도 시 보안 문자 입력 또는 주제에 맞는 그림 클릭 등의 문제를 해결해야 로그인이 가능해지는 것을 본 적이 있을 겁니다. 예를 들면 다음 사진처럼 말이죠.
[그림 6. CAPTCHA 적용 시 출력되는 화면]
CAPTCHA라는 기능을 사용하게 되면 일정 횟수 이상 로그인 시도 시 위와 같은 이미지가 나오며 No rate limiting의 취약점을 예방할 수 있습니다. 자세한 설정법은 본 주제에서는 다루기 어려운 내용들이 있어 작성하지 않겠습니다.
취약점을 찾는 과정은 물론 쉽지만은 않습니다. 하지만 위 방법처럼 생각보다 쉽게 접근을 할 수도 있습니다.
이상으로 간단한 공격과 방어 방법에 대해 알아보았습니다.
4. 버그바운티 소개
1) 버그바운티란?
버그바운티(Bug Bounty)란 취약점 보상 프로그램(VRP: Vulnerability Reward Program)이라고도 하는데요. 기업의 서비스, 소프트웨어나 IT 인프라를 해킹하고 보안 취약점을 발견하여 최초로 신고한 보안 연구원에게 포상금이나 기타 보상을 지급하는 크라우드소싱(crowdsourced) 기반의 침투 테스트 프로그램입니다. 주요 글로벌 기업은 자사 제품 및 서비스의 취약점 발굴 및 보안 강화를 위해 버그바운티를 운영중에 있으며, 국내 기업들도 독립적인 버그바운티를 자체적으로 운영 중입니다.
2) 지니언스 버그바운티 소개
지니언스 버그바운티 프로그램은 자사 제품 및 서비스의 취약점 발굴 및 보안 강화를 위해 2022년 3월부터 자체적으로 운영하고 있습니다.
대상, 신고 및 포상 절차, 포상금 지급 기준 등 자세한 내용에 대해서는 지니언스 버그바운티 페이지를 참조해 주시길 바랍니다.
5. 마치며
이번 글에서는 지니언스 버그바운티의 실적과 함께 간단한 공격과 방어 방법에 대해 공유해 드렸습니다.
버그바운티는 수많은 장점을 갖고 있습니다. 신고자 입장에선 취약점을 찾아내면 보상을 받는 것은 물론, 취약점을 찾는 과정에서 공부와 지식을 넓힐 수 있습니다. 자신의 능력도 향상시키고 돈도 번다는 것이 참 매력적입니다. 신고받은 기업 입장에서는 버그를 고칠 수 있으니, 말 그대로 일석삼조 또는 그 이상의 효과를 내는 프로그램입니다.
또 보상과 관계없이 신고 과정에서 쌓인 지식과 능력은 자신만의 자산이 된다고 생각합니다. 버그바운티를 시도해 볼 가치는 충분히 있다고 생각합니다.
앞으로도 지니언스는 버그바운티 프로그램을 더욱더 확대시키기 위해 다양하게 활동할 예정입니다. 이 글을 통하여 지니언스 버그바운티 프로그램에도 많은 관심을 가져주시고, 참여해 주시면 감사하겠습니다.
글쓴이. 이동건
지니언스 연구기획실에서 버그바운티 업무와 취약점 관리 업무를 담당하고 있습니다.