버그헌팅이란 SW/APP에서 버그를 찾는 활동이다. 예상하지 못한 오류, 오작동 등을 찾는다고 볼 수 있다. 내가 버그 바운티를 할 일은 없겠지만, 보안 담당자가 된다면 버그 헌팅 정도는 할 수 있어야 할 것이다. 취약점을 찾아내 조직 내 보안에 기여해야 하기 때문이다.
시스템이란 것을 처음 구축하면, 구축을 거의 하자마자 공격이 들어오는 것을 확인할 수 있다고 한다. 이는 끊임없이 공격 대상을 찾는 공격자들이 세계적으로 널려 있다는 것을 의미할 것이다. 그렇기에 취약점에 대해 인지하고 있다면, 천천히 해도 되겠지라는 안일한 마인드로 업무에 임해서는 안 될 것이다.
그런데 취약점을 찾는다면, 이것의 리스크를 정량화할 수 있어야 할 것이다. 그래야 우선순위를 고려할 수 있기 때문이다. 취약점 리스크 정량화에 고려되는 요소로는 공격 복잡성, 공격 범위, 취약점 유형, 영향 범위 등이 있을 것이다.
취약점 리스크 정량화 모델로는 가장 유명한 CVSS가 있고, 그외에 DREAD(Damage, Reproducibility, Exploitability, Affected Users, Discoverability), OWASP Rist Rating Methodology가 있다. 살펴 보고, 조직에게 가장 적합한 모델을 선택해야 할 것이다. 보통은 CVSS를 고르겠지만 말이다.
CVSS는 최신 버전이 CVSS 3.1인데, 메트릭으로는 다음과 같다.
① 공격벡터: 공격자가 취약점을 악용할 수 있는 위치로, 네트워크 상으로 접근해서 가능한지, 로컬 네트워크에 한해서 가능한지, 물리적으로 공격해야 가능한지, 인접한 네트워크에서 가능한지로 분류하는 것이다.
② 공격 난이도/복잡도: 높고 낮음으로, 낮을 경우 언제든 공격자의 공격이 반복될 것이라고 예상할 수 있다.
③ 요구되는 권한: None, Low, High가 있다.
④ 유저 상호작용: None, Required가 있다. 사용자 참여가 요구되는 경우라면, 공격이 수행되기 위해서는 사용자의 참여가 필요하다는 것을 의미한다.
⑤ 영향 범위: Unchanged, Changed로, 타 리소스에도 범위를 미치는지를 확인하는 것이다.
⑥ 기밀성, 무결성, 가용성: 이는 조직에서의 중요도를 판단하여 결정하면 된다.
그래서 CVSS Calculator를 통해 위의 내용을 토대로 정량화 계산을 할 수 있다. 따라서 더욱 손쉽게 계산을 할 수 있을 것이다. 그래서 하단을 보면 비슷한 취약점이라고 해도, 그 내용에 따라 점수가 나뉘는 것을 볼 수 있다.
다만 여기서 한가지 확실히 해야할 것은, 저 점수를 너무 맹신해서는 안 된다는 것이다. 조직만의 환경, 보안 정책, 중요도 등에 따라 저 점수는 언제든 바뀔 수 있는 것이다. 이것을 고려하여, CVSS 계산은 참고할 수 있는 정도로 생각해야 할 것이다.
그렇다면, 보안담당자로서 만약 모의해킹이나 버그헌팅 중 하나를 선택해서 외부 인력을 통해 진행해야 한다면 무엇을 해야 할까? 사실 개인적으로 모의해킹에 대해서는 그다지 긍정적이지는 않지만, 둘은 우위관계에 있지 않다. 서로 다른 목적에 따라 선택을 해야 하는 것이다.
성공적으로 버그헌팅, 취약점을 찾기 위해서는 어떻게 해야 할까? 자산 및 기능을 쉽게 시각화하기 위해 웹 어플리케이션을 자동/수동 탐색해야 한다. 엔드포인트 디렉터리를 퍼징할 때는 일반 목록 대신 상황에 맞는 리스트를 사용해야 할 것이다. 그리고 공격 대상의 영역을 포함한 흥미로운 정보를 얻기 위해 웹 뿐만 아니라, 모바일 앱, 브라우저 확장 프로그램, 데스크톱 앱 등을 디컴파일하는 등 범위를 확장해야 한다. 특히 자바스크립트 파일은 숨겨진 파라미터, 하드코딩된 크리덴셜 정보, 만료된 도메인 노출 등 많은 힌트를 남기니 이것을 유의해야 한다.
그런데 버그헌팅을 함에 있어서 가장 중요한 게 있다면 시나리오를 만드는 일이 될 것이다. 취약점을 파악하고, 그 위험도를 계산하는 것에서 끝나는 게 아니라, 그것을 토대로 어떤 악성 행위가 발생할 수 있는지를 기재해야 한다. 이것은 담당자에게 매우 중요한 일이 될텐데, 이렇게 시나리오를 써야 예상 손실액도 파악할 수 있고, 예산에 대한 설득을 할 수 있기 때문이다.
'보안 > 교육' 카테고리의 다른 글
버그헌팅 #3 웹 취약점 (0) | 2024.08.16 |
---|---|
버그헌팅 #2 웹 기본 (0) | 2024.08.14 |
[USG]주요 위험 관리 표준 및 프레임워크 #5, 6 (0) | 2024.06.09 |
[USG]주요 위험 관리 표준 및 프레임워크 #4 (0) | 2024.06.09 |
[USG]주요 위험 관리 표준 및 프레임워크 #3 (0) | 2024.06.09 |