Microsoft 4분 소요

17조 행에 5천 달러라면, 버그바운티는 위험을 제대로 평가할까요?

핵심 요약

  • ‘17조 행에 접근 가능했다’는 주장은 실제 유출 규모와 구분해야 합니다.
  • JWT 인증 우회의 위험은 어떤 데이터에 접근하고 어떤 작업까지 할 수 있었는지에 따라 달라집니다.
  • 버그바운티 보상액은 잠재적 피해액을 그대로 돈으로 환산한 금액이 아닙니다.
  • 보상이 적절했는지 판단하려면 금액과 함께 취약점을 평가한 근거를 살펴봐야 합니다.

Microsoft Titan의 JWT 인증 우회로 17조 행에 접근할 수 있었는데 보상은 5천 달러였다면, 누구라도 고개를 갸웃할 만합니다. 다만 이 두 숫자를 확정된 사실로 받아들이고 결론을 내리기 전에, 어디까지 접근할 수 있었고 어떤 조건으로 보상을 지급했는지부터 확인해야 합니다. 기업이 지급하는 취약점 보상금은 우리가 생각하는 위험의 크기를 얼마나 반영할까요?

17조 행은 17조 명의 개인정보가 아닙니다

데이터베이스의 ‘행’은 데이터를 담는 기록 단위입니다. 예를 들어 한 사람이 서비스를 쓰면서 남긴 접속 기록이 여러 행으로 저장될 수 있습니다. 그러니 17조 행이라는 숫자를 피해자 17조 명이나 개인정보 17조 건으로 읽어서는 안 됩니다.

그 안에 무엇이 담겼는지도 봐야 합니다. 단순한 상태 기록과 비밀번호 재설정에 쓰이는 비밀값은 똑같이 한 행을 차지해도 위험이 다릅니다. 데이터가 많다는 사실만으로 얼마나 민감한 정보인지까지 알 수는 없습니다.

접근 가능 범위와 실제로 조회하거나 반출한 양도 구분해야 합니다. 시스템 전체에 17조 행이 저장돼 있다는 것과 취약한 경로를 통해 그 전체를 읽을 수 있다는 것은 다릅니다. 일부 기록에 접근하는 모습을 시연했다고 해서 전체에 접근할 수 있음을 입증한 것도 아닙니다.

그렇다고 실제 반출량이 적다는 이유로 취약점을 가볍게 볼 수는 없습니다. 연구자가 피해를 줄이려고 꼭 필요한 만큼만 조회했을 수도 있기 때문입니다. 숫자가 얼마나 큰지에 앞서 입증된 접근 범위를 따져봐야 합니다.

JWT 인증 우회, 출입증의 어느 부분이 뚫렸을까요?

JWT는 사용자 식별 정보나 권한 같은 내용을 전달할 때 쓰는 토큰 형식입니다. 쉽게 말하면 서버에 제시하는 디지털 출입증에 가깝습니다. 서버는 이 출입증을 믿어도 되는지 검증한 뒤 요청을 처리해야 합니다.

‘JWT 인증 우회’라는 표현만으로는 구체적으로 어떤 결함이 있었는지 알 수 없습니다. 서명 검증에 문제가 있었는지, 발급 주체나 사용 대상을 제대로 확인하지 않았는지 등은 따로 확인해야 합니다. Titan의 실제 결함도 이 표현만 보고 어느 유형이었는지 짐작할 수는 없습니다.

위험을 판단하려면 인증을 우회한 뒤 무엇을 할 수 있었는지 살펴봐야 합니다.

  • 로그인 없이 접근할 수 있었는지, 기존 계정이나 특정 권한이 필요했는지
  • 자기 조직의 데이터만 보였는지, 다른 조직의 데이터까지 보였는지
  • 데이터를 읽는 데 그쳤는지, 수정하거나 삭제할 수도 있었는지

이 조건에 따라 공격이 얼마나 어렵고 피해가 어디까지 미칠지가 달라집니다. 출입증 하나가 검사를 잘못 통과했다는 설명만으로는 부족합니다. 그 출입증으로 어느 방까지 들어갈 수 있었는지도 알아야 합니다.

5천 달러는 예상 피해액의 가격표가 아닙니다

버그바운티는 취약점을 찾아 정해진 절차로 제보한 사람에게 보상하는 제도입니다. 잠재적 피해액의 일정 비율을 보상금으로 지급한다는 뜻은 아닙니다.

기업은 취약점이 얼마나 심각한지, 공격에 어떤 조건이 필요한지 등을 평가할 수 있습니다. 프로그램에서 정한 보상 범위도 고려할 수 있고요. 정확한 기준은 개별 프로그램의 규정에 달려 있습니다. 따라서 5천 달러라는 숫자만 보고 Microsoft가 어떤 판단을 내렸는지 거꾸로 알아낼 수는 없습니다.

그렇다고 곧바로 “규정대로 지급했으니 적절하다”고 결론 내릴 수도 없습니다. 규정에 맞는 보상이라도 연구자가 납득할 만한 금액인지는 별개의 문제입니다. 규정 자체가 큰 위험을 충분히 반영하지 못할 가능성도 따져봐야 합니다.

만약 충족해야 할 조건이 적고 광범위한 민감 정보에 접근할 수 있었다면, 낮은 보상에 의문을 품을 만합니다. 반대로 제한적인 데이터에만 접근할 수 있었다면 평가가 달라질 수 있습니다. 이를 판단하려면 숫자가 크다는 데 머물지 않고 취약점의 구체적인 조건을 봐야 합니다.

보상액을 납득하려면 판정 근거가 필요합니다

저는 버그바운티에 대한 신뢰가 보상금뿐 아니라 판정 근거에도 달려 있다고 봅니다. 연구자가 심각한 문제라고 본 이유와 기업이 인정한 영향 범위가 다르다면, 왜 그렇게 판단했는지 설명해야 합니다.

예를 들어 연구자는 다른 조직의 데이터까지 조회할 수 있다고 보고했는데, 기업은 제한된 테스트 데이터에만 영향을 미친다고 판단할 수 있습니다. 이때 “내부 기준에 따른 금액”이라는 한 문장으로는 설명이 부족합니다. 어떤 접근을 재현할 수 있었고 어디서 막혔는지 밝혀야 합니다. 그 결과를 심각도 평가에 어떻게 반영했는지도 설명해야 하고요.

독자에게 공격의 세부사항을 모두 공개할 필요는 없습니다. 다만 공개된 보상액이 적절한지 판단할 만큼은 사정을 알 수 있어야 합니다. 처음 지급한 금액인지, 추가 보상까지 포함한 최종 금액인지에 따라서도 판단은 달라질 수 있습니다.

기업에도 이런 설명이 도움이 됩니다. 연구자는 앞으로 시간을 들여 제보할지 결정할 때 보상 규모만 보지는 않을 수 있습니다. 자신의 발견을 얼마나 일관되게 평가해주는지도 고려할 수 있기 때문입니다.

‘17조 행에 5천 달러’라는 구도는 눈길을 끌지만, 그것만으로 위험과 보상의 관계를 설명할 수는 없습니다. 버그바운티가 위험을 제대로 평가하는지 보려면 입증된 영향과 보상 기준을 함께 살펴봐야 합니다. 제보자가 그 금액을 납득하려면 기업이 어디까지 위험을 인정했고, 이를 보상액에 어떻게 반영했는지 알 수 있어야 합니다.

Microsoft JWT 버그바운티

댓글

    댓글을 불러오는 중...