요새 보안 취약점 공개에 대한 논란이 계속 불거져 나오고 있습니다.
현재 상황에서 아쉬운 점은
1. 10년 전에 고민했던 문제들이 여전히 해결되지 않은 상태임.
2. 국내의 몇몇 보안 전문가들이 취약점 공개를 하면서 얻게된 노하우가 전혀 공유되지 못하고 있음.
위의 두 가지 점입니다.
제가 많은 것을 알지는 못하지만, 비교적 많은 보안 취약점을 국내외에 발표하면서, 여러분보다 더 많이 얻어터진 입장에서 제가 얻게된 교훈을 간략히 정리해보도록 하겠습니다.
1) 보안 취약점 공개란 무엇인가?
보안 취약점 공개는 다음의 두 가지 성격을 가진 것입니다.
1. 버그 리포트
여러분이 사용하시는 마이크로소프트 윈도우즈, 오피스, 혹은 아래아한글 등의 소프트웨어에 사용이 불편한 버그를 경험할 때가 있을 것입니다. 특정 상황에서 원하는 동작이 안된다거나, OS 가 죽는다거나... 이런 문제들을 버그라고 이야기하는데, 보안 취약점 공개는 버그를 벤더에 통보하는 버그 리포트의 일종입니다.
2. 결함 공개
결함 공개가 가장 발달한 분야는 자동차 분야일 것입니다. 여러분이 운전하는 자동차가 급발진 문제, 브레이크 결함 등 인체의 안전과 관련된 치명적 결함이 있다면, 여러분은 아마도 주변의 동일 차종 운전자에게 이 위험을 알리고, 자동차 제조사에도 알려서 결함에 대한 원인 분석과 리콜을 요구할 것입니다. 보안 취약점 공개는 많은 이들의 안전이 개입되어 있다는 점에서 자동차의 결함 공개와 비슷한 성격을 갖습니다.
아직 국내는 보안 취약점 공개의 역사가 짧고, 약 10 여 명 정도만이 공식적인 Coordinated Disclosure 프로세스를 밟아봤기 때문에, 보안 취약점 공개에 대한 잘못된 시각이 팽배합니다. 극단적인 생각 중에는 '보안 취약점 공개는 매우 대단한 일이다. 그런 일을 하는 나는 정말 뛰어난 사람이다.', 혹은 '보안 취약점 공개는 업체로부터 나의 Credit 을 인정받아 보안 분야의 명성을 관리하기 위한 수단이다.' 라는 생각이 있고, 반대편의 극단에는 '보안 취약점 공개는 국내의 열악한 소프트웨어 업계에 피해를 주는 백해무익한 일이며, 우리 사업을 방해하기 위해 의도적으로 하는 것이다.', '보안 취약점 공개는 관련 제품 사용자들에게 피해를 주는 행위이므로 자제되어야 한다.' 라는 생각이 있습니다.
그러나, 보안 취약점 공개는 '우리가 안전하게 컴퓨터를 사용하는데 있어 장애가 되는 소프트웨어/하드웨어 상의 버그를 벤더에 통보하여 해당 버그를 제거하도록 돕고, 동일 제품 및 서비스를 사용하는 다른 사용자들이 피해를 입지 않도록 예방하는 일련의 절차와 행위'를 통칭하는 것일 뿐입니다. 즉, 쉽게 버그 리포트라고 생각하시는 것이 좋습니다.
2) 바람직한 보안 취약점 공개 절차는?
보안 취약점 공개가 버그 리포트이긴 하지만, 많은 사용자들의 안전이 관련되어 있다는 점에서 보안 취약점 공개의 절차는 신중하게 진행되어야 합니다. 여러분이 자체적인 조사(예를 들면, Blackbox/Graybox/Whitebox test 등)를 거쳐, 혹은 우연한 기회에 특정 제품의 보안 취약점을 발견했다면 일반적으로 다음과 같은 절차를 거치는 것이 현명합니다.
1. 취약점에 대한 상세 분석
이 취약점의 원인이 무엇인지, 재현 가능한 것인지 등을 상세히 분석할 필요가 있습니다. 몇몇 취약점은 초기에는 취약점으로 보이지만, 제품 자체의 결함이 아닌 deploy 과정에서 SE 의 실수로 발생할 수 있습니다. 또한 자신의 컴퓨터에서만 일시적으로 발생한 현상이라면, 여러분 컴퓨터의 설정 혹은 다른 소프트웨어의 영향으로 발생한 것일 수 있습니다.
향후 벤더의 담당 개발자가 연락해왔을 때, 버그에 대해 설명할 수 있도록 되도록 상세한 사항을 분석해두는 것이 좋습니다.
2. 벤더에 통보
해당 취약점을 해결할 수 있는 것은 벤더의 담당 개발자 뿐입니다. 혹, 여러분이 자체적인 패치를 제작할 수도 있을 것입니다. 그러나 최종적으로 이 패치를 넣을지 말지 결정하는 것도 벤더의 개발자라는 것을 명심해야 합니다. 벤더의 웹 사이트를 통해 연락처를 파악하고, 담당자에게 연락하여 버그를 알리세요.
국내 회사의 경우 상황이 열악합니다. 때로는 영업 담당 이사의 핸드폰으로 전화를 해야 문제가 해결될 때가 있습니다. 아직 역사가 짧고, 보안 취약점 공개에 대해 사회적으로 합의된 절차가 없기 때문입니다. 여러분은 상당히 험난한 절차를 거쳐야 벤더에 연락을 취할 수 있을 것이고, 간신히 연락이 되었다 하더라도, '왜 우리 회사에 이러세요? 당신 경쟁사 사주 받고 이러는거 아니야?' 혹은 '개xx, 너 죽고 싶냐?' 라는 반응이 오거나, 조용히 무시되는 경우도 많을 것입니다. 메일을 통해 통보하면 국내 회사의 경우 99.9% 의 신뢰도로 절대 답장을 보내지 않습니다. 인내심을 발휘하여 1주 간격으로 2~3 회 이상 연락을 시도하세요. 공개는 그 다음에 해도 늦지 않습니다.
해외 회사의 경우 상황이 낫습니다. 어느 정도 규모 이상의 회사는 당신을 어떻게 대접해야 할지에 대해 정확한 프로세스가 잡혀있습니다. Security@해당 회사 메일 주소, 혹은 웹 사이트를 통해 파악한 보안 담당자, 제품 QA 담당자에게 연락을 취하세요. 보통 1~2주일 이내로 매우 정중한 답장이 옵니다. 이때 보통은 Bug Tracking 시스템의 Ticket 이 발급되는데, 연락을 주고 받는 와중에 이슈를 추적하기 위해 사용되니 메일을 주고 받을 때 주의하세요. 그들이 당신을 왕처럼 떠받든다고 하더라도, 너무 우쭐하지 마세요. 이건 그냥 '버그 리포트'일 뿐이며, 사용자인 당신과 제품 QA 담당자, 개발자가 의사 소통을 통해 함께 버그를 제거해나가는 과정일 뿐입니다.
이후 해당 벤더는 제품의 버그 패치 작업 진척 현황, 패치 릴리즈 예정일 등 상세 정보를 당신에게 메일로 알려줄 것입니다 (업체에 따라 스팸 메일처럼 지겹게 올 것입니다). 혹 버그에 대해 제대로 이해하지 못했다면, 담당 개발자가 당신에게 상세 정보를 요청할 수도 있습니다.
주의할 점은 패치 일정이 당신의 예상과 달리 매우 길어질 수 있다는 점입니다. 벤더와의 정보 교환이 원활하다면, 3 개월~6개월에 걸친 패치 일정도 나쁘지 않습니다. 그러나 당신에게 정보를 전혀 주려고 하지 않으면서, '패치 일정이 늦어지니 우리가 별도로 통보할 때까지 기다려주세요.' 라는 태도는 업체가 당신의 버그 리포트를 조용히 땅속에 묻으려는 것일 수도 있습니다. 경험이 많아지면, 벤더가 어떤 태도를 취하는 것인지 파악하는 감이 생깁니다.
당신이 원한다면, 해당 벤더가 고객들에게 제품 버그 정보를 공개할 때 당신에 대한 Credit 을 넣어달라고 솔직히 요구하세요. 그리고 당신이 Coordinated Disclosure 를 원한다는 것을 분명히 밝히세요. 벤더에 따라 최종 패치일 이전에 당신에게 패치의 품질에 대한 확인을 요청하는 경우도 있습니다. 대부분의 경우 벤더의 1차 패치는 문제를 적절히 해결하지 못합니다. 2차, 3차 패치가 나와야 비로소 문제가 해결되는 경우가 많으니 인내심을 갖고 대응하시기 바랍니다.
패치가 적절히 이루어졌으면, 당신과 미리 약속한 날짜에 벤더가 자사 웹사이트나 메일을 통해 고객에게 Security Advisory 를 내보낼 것입니다. 당신도 이 시기에 맞추어, 해외 보안 관련 메일링 리스트 등에 정보를 공개하면 됩니다.
3. CERT 등에 신뢰할만한 기관과 협조
벤더에 통보한 후에는 CERT 에 통보하는 것도 고려해볼만합니다. 아무래도 당신 개인이 시간을 투자하여 벤더와 패치 과정을 추진하는 것보다는 CERT 등 믿을 수 있는 기관이 개입하는 것이 당신에게 부담이 덜할 것입니다. CERT 는 벤더와 당신 사이의 버그 패치 과정을 적절히 중계해줄 것이며, 벤더가 해당 취약점을 조용히 묻을 수 없는 중요한 계기가 됩니다. 보통 이 과정에서 CVE 번호도 할당받게 됩니다.
아쉽게도 KrCERT 등 국내 기관은 버그 릴리즈 과정에서 보안 연구자와 벤더를 중재하는 프로세스에 대해 경험이 부족합니다. 이들은 연구자들의 버그 리포트 동기를 의심하거나, 혹은 벤더를 지나치게 압박하여 보안 연구자나 벤더 모두를 불편하게 한 사례가 있습니다. 그들 중 보안 연구자에게 우호적인 시각을 가진 사람들은 보안 취약점 리포트를 지나치게 특별한 과정으로 생각하는 경향이 있습니다. 반면 보안 연구자에게 비우호적인 시각을 가진 사람들은 해커를 이상한 종족이라고 생각하는 경향이 있습니다. 양쪽 태도 모두가 결과적으로는 보안 취약점 제거 작업에 좋지 않은 영향을 줍니다. 제 개인적인 시각으로는 보안 취약점 공개가 단순한 버그 리포트의 과정이라는 것에 대해 아직 우리 사회의 이해와 합의가 부족한게 아닌가 싶습니다. 향후 상황이 더욱 나아지면 국내 기관과 협조하는 것이 아무래도 국내 보안 여건의 향상을 위해 바람직하지 않을까 생각합니다.
4. 일반에 취약점 정보 공개
Coordinated Disclosure 과정을 거쳤다면 일반에 취약점 정보를 공개하는데 문제가 없습니다. 이 정보를 굳이 일반에 공개하는 목적은 동일 제품 사용자들의 공공의 이익을 위한 것입니다. 일부 벤더는 자사 제품의 결함을 고객에게 알리는 것을 꺼리기 때문에, 보안 결함에 대한 정보를 입수한 고객이 직접적으로 요청하는 경우에만 패치를 설치해주는 경우가 많습니다. 즉, 고객이 정보를 입수할 수 없는 경우 이 고객은 보안 취약점에 그대로 노출되게 됩니다. 따라서, 해외 보안 메일링 리스트와 같이 보안 정보가 원활하게 소통되는 곳에 정보를 올리는 것이 좋습니다. 일반적으로 일정 규모 이상의 업체들은 보안 메일링 리스트에 올라오는 보안 취약점 정보를 모니터링하기 때문에, 많은 고객들이 혜택을 입을 수 있습니다.
일반에 취약점 정보를 공개하는 것은 벤더가 당신의 버그 리포트를 아예 묵살하거나, 협박으로만 일관하는 경우 벤더가 패치를 릴리즈하도록 압박하는 방법으로도 사용될 수 있습니다. 이 역시 동일 제품 사용자들의 공공의 이익을 위한 것입니다. 일반적으로 당신이 2~3 회에 걸쳐 벤더에 통보한 후에도 벤더가 응답이 없는 경우, 최종 통보일로부터 1개월 후에는 보안 메일링 리스트에 보안 취약점 정보를 공개하는 것이 적절하다고 받아들여지고 있습니다. 그러나 이는 보안 메일링 리스트를 통해 전세계의 해커들 사이에서 논의하면서 일반적으로 타당하다고 받아들여지게 된 수치일 뿐이니 참고 용도로만 사용하는 것이 좋습니다.
이상입니다.
사실 자잘하게 더 하고 싶은 이야기들은 많습니다. 예를 들어 해외의 ZDI (Zero Day Initiative)에 버그를 돈받고 파는 건 어떠한지... 국내의 보안 생태계에서 보안 취약점 공개를 중재하기 위해 기관들이 갖추어야할 업무 프로세스라던지, 혹은 일반적으로 사용되는 소프트웨어가 아닌, 특정 사이트의 취약점을 공개하는 것은 어떠한지... 이러한 주제들은 생각해볼 여지가 많은 주제입니다.
예를 들어, 국내에서는 아직 해커들 사이에서도 보안 취약점 공개에 대한 부정적인 시각이 존재하는 상황이며 (상당수의 해커들이 회사의 보안 담당자로 근무하기 때문에 보안 취약점 공개로 인한 업무량 증가가 달갑지 않겠죠?), 일반 소프트웨어야 모르겠지만 특정 사이트의 취약점을 공개하는 것은 공공의 이익에 오히려 반하는 것이 아니냐 라는 견해가 지배적입니다. 왜냐하면 웹 사이트는 서비스적인 성격을 갖고 있고, 상대적으로 많은 수의 사용자가 해킹의 피해를 입기 때문이죠. 그러나, 이런 견해가 적절한 절차를 거친 일반 소프트웨어의 보안 취약점 공개가 공공의 이익에 합치한다는 주장과 양립할 수 있는 것인지에 대해서는 논란의 여지가 많습니다.
이런 재미있는 주제는 앞으로 기회가 닿으면 또 이야기하기로 하고 오늘은 여기까지~
저와 다른 견해를 가지신 분의 반론은 환영합니다만, 논점없는 비난은 삼가주세요.
'내 생각과 다르다' 와 '내 생각과 틀리다' 를 적절히 구분하실 수 있는 분들의 견해라면 언제든 환영입니다.
이글루스 가든 - professional secur...
현재 상황에서 아쉬운 점은
1. 10년 전에 고민했던 문제들이 여전히 해결되지 않은 상태임.
2. 국내의 몇몇 보안 전문가들이 취약점 공개를 하면서 얻게된 노하우가 전혀 공유되지 못하고 있음.
위의 두 가지 점입니다.
제가 많은 것을 알지는 못하지만, 비교적 많은 보안 취약점을 국내외에 발표하면서, 여러분보다 더 많이 얻어터진 입장에서 제가 얻게된 교훈을 간략히 정리해보도록 하겠습니다.
1) 보안 취약점 공개란 무엇인가?
보안 취약점 공개는 다음의 두 가지 성격을 가진 것입니다.
1. 버그 리포트
여러분이 사용하시는 마이크로소프트 윈도우즈, 오피스, 혹은 아래아한글 등의 소프트웨어에 사용이 불편한 버그를 경험할 때가 있을 것입니다. 특정 상황에서 원하는 동작이 안된다거나, OS 가 죽는다거나... 이런 문제들을 버그라고 이야기하는데, 보안 취약점 공개는 버그를 벤더에 통보하는 버그 리포트의 일종입니다.
2. 결함 공개
결함 공개가 가장 발달한 분야는 자동차 분야일 것입니다. 여러분이 운전하는 자동차가 급발진 문제, 브레이크 결함 등 인체의 안전과 관련된 치명적 결함이 있다면, 여러분은 아마도 주변의 동일 차종 운전자에게 이 위험을 알리고, 자동차 제조사에도 알려서 결함에 대한 원인 분석과 리콜을 요구할 것입니다. 보안 취약점 공개는 많은 이들의 안전이 개입되어 있다는 점에서 자동차의 결함 공개와 비슷한 성격을 갖습니다.
아직 국내는 보안 취약점 공개의 역사가 짧고, 약 10 여 명 정도만이 공식적인 Coordinated Disclosure 프로세스를 밟아봤기 때문에, 보안 취약점 공개에 대한 잘못된 시각이 팽배합니다. 극단적인 생각 중에는 '보안 취약점 공개는 매우 대단한 일이다. 그런 일을 하는 나는 정말 뛰어난 사람이다.', 혹은 '보안 취약점 공개는 업체로부터 나의 Credit 을 인정받아 보안 분야의 명성을 관리하기 위한 수단이다.' 라는 생각이 있고, 반대편의 극단에는 '보안 취약점 공개는 국내의 열악한 소프트웨어 업계에 피해를 주는 백해무익한 일이며, 우리 사업을 방해하기 위해 의도적으로 하는 것이다.', '보안 취약점 공개는 관련 제품 사용자들에게 피해를 주는 행위이므로 자제되어야 한다.' 라는 생각이 있습니다.
그러나, 보안 취약점 공개는 '우리가 안전하게 컴퓨터를 사용하는데 있어 장애가 되는 소프트웨어/하드웨어 상의 버그를 벤더에 통보하여 해당 버그를 제거하도록 돕고, 동일 제품 및 서비스를 사용하는 다른 사용자들이 피해를 입지 않도록 예방하는 일련의 절차와 행위'를 통칭하는 것일 뿐입니다. 즉, 쉽게 버그 리포트라고 생각하시는 것이 좋습니다.
2) 바람직한 보안 취약점 공개 절차는?
보안 취약점 공개가 버그 리포트이긴 하지만, 많은 사용자들의 안전이 관련되어 있다는 점에서 보안 취약점 공개의 절차는 신중하게 진행되어야 합니다. 여러분이 자체적인 조사(예를 들면, Blackbox/Graybox/Whitebox test 등)를 거쳐, 혹은 우연한 기회에 특정 제품의 보안 취약점을 발견했다면 일반적으로 다음과 같은 절차를 거치는 것이 현명합니다.
1. 취약점에 대한 상세 분석
이 취약점의 원인이 무엇인지, 재현 가능한 것인지 등을 상세히 분석할 필요가 있습니다. 몇몇 취약점은 초기에는 취약점으로 보이지만, 제품 자체의 결함이 아닌 deploy 과정에서 SE 의 실수로 발생할 수 있습니다. 또한 자신의 컴퓨터에서만 일시적으로 발생한 현상이라면, 여러분 컴퓨터의 설정 혹은 다른 소프트웨어의 영향으로 발생한 것일 수 있습니다.
향후 벤더의 담당 개발자가 연락해왔을 때, 버그에 대해 설명할 수 있도록 되도록 상세한 사항을 분석해두는 것이 좋습니다.
2. 벤더에 통보
해당 취약점을 해결할 수 있는 것은 벤더의 담당 개발자 뿐입니다. 혹, 여러분이 자체적인 패치를 제작할 수도 있을 것입니다. 그러나 최종적으로 이 패치를 넣을지 말지 결정하는 것도 벤더의 개발자라는 것을 명심해야 합니다. 벤더의 웹 사이트를 통해 연락처를 파악하고, 담당자에게 연락하여 버그를 알리세요.
국내 회사의 경우 상황이 열악합니다. 때로는 영업 담당 이사의 핸드폰으로 전화를 해야 문제가 해결될 때가 있습니다. 아직 역사가 짧고, 보안 취약점 공개에 대해 사회적으로 합의된 절차가 없기 때문입니다. 여러분은 상당히 험난한 절차를 거쳐야 벤더에 연락을 취할 수 있을 것이고, 간신히 연락이 되었다 하더라도, '왜 우리 회사에 이러세요? 당신 경쟁사 사주 받고 이러는거 아니야?' 혹은 '개xx, 너 죽고 싶냐?' 라는 반응이 오거나, 조용히 무시되는 경우도 많을 것입니다. 메일을 통해 통보하면 국내 회사의 경우 99.9% 의 신뢰도로 절대 답장을 보내지 않습니다. 인내심을 발휘하여 1주 간격으로 2~3 회 이상 연락을 시도하세요. 공개는 그 다음에 해도 늦지 않습니다.
해외 회사의 경우 상황이 낫습니다. 어느 정도 규모 이상의 회사는 당신을 어떻게 대접해야 할지에 대해 정확한 프로세스가 잡혀있습니다. Security@해당 회사 메일 주소, 혹은 웹 사이트를 통해 파악한 보안 담당자, 제품 QA 담당자에게 연락을 취하세요. 보통 1~2주일 이내로 매우 정중한 답장이 옵니다. 이때 보통은 Bug Tracking 시스템의 Ticket 이 발급되는데, 연락을 주고 받는 와중에 이슈를 추적하기 위해 사용되니 메일을 주고 받을 때 주의하세요. 그들이 당신을 왕처럼 떠받든다고 하더라도, 너무 우쭐하지 마세요. 이건 그냥 '버그 리포트'일 뿐이며, 사용자인 당신과 제품 QA 담당자, 개발자가 의사 소통을 통해 함께 버그를 제거해나가는 과정일 뿐입니다.
이후 해당 벤더는 제품의 버그 패치 작업 진척 현황, 패치 릴리즈 예정일 등 상세 정보를 당신에게 메일로 알려줄 것입니다 (업체에 따라 스팸 메일처럼 지겹게 올 것입니다). 혹 버그에 대해 제대로 이해하지 못했다면, 담당 개발자가 당신에게 상세 정보를 요청할 수도 있습니다.
주의할 점은 패치 일정이 당신의 예상과 달리 매우 길어질 수 있다는 점입니다. 벤더와의 정보 교환이 원활하다면, 3 개월~6개월에 걸친 패치 일정도 나쁘지 않습니다. 그러나 당신에게 정보를 전혀 주려고 하지 않으면서, '패치 일정이 늦어지니 우리가 별도로 통보할 때까지 기다려주세요.' 라는 태도는 업체가 당신의 버그 리포트를 조용히 땅속에 묻으려는 것일 수도 있습니다. 경험이 많아지면, 벤더가 어떤 태도를 취하는 것인지 파악하는 감이 생깁니다.
당신이 원한다면, 해당 벤더가 고객들에게 제품 버그 정보를 공개할 때 당신에 대한 Credit 을 넣어달라고 솔직히 요구하세요. 그리고 당신이 Coordinated Disclosure 를 원한다는 것을 분명히 밝히세요. 벤더에 따라 최종 패치일 이전에 당신에게 패치의 품질에 대한 확인을 요청하는 경우도 있습니다. 대부분의 경우 벤더의 1차 패치는 문제를 적절히 해결하지 못합니다. 2차, 3차 패치가 나와야 비로소 문제가 해결되는 경우가 많으니 인내심을 갖고 대응하시기 바랍니다.
패치가 적절히 이루어졌으면, 당신과 미리 약속한 날짜에 벤더가 자사 웹사이트나 메일을 통해 고객에게 Security Advisory 를 내보낼 것입니다. 당신도 이 시기에 맞추어, 해외 보안 관련 메일링 리스트 등에 정보를 공개하면 됩니다.
3. CERT 등에 신뢰할만한 기관과 협조
벤더에 통보한 후에는 CERT 에 통보하는 것도 고려해볼만합니다. 아무래도 당신 개인이 시간을 투자하여 벤더와 패치 과정을 추진하는 것보다는 CERT 등 믿을 수 있는 기관이 개입하는 것이 당신에게 부담이 덜할 것입니다. CERT 는 벤더와 당신 사이의 버그 패치 과정을 적절히 중계해줄 것이며, 벤더가 해당 취약점을 조용히 묻을 수 없는 중요한 계기가 됩니다. 보통 이 과정에서 CVE 번호도 할당받게 됩니다.
아쉽게도 KrCERT 등 국내 기관은 버그 릴리즈 과정에서 보안 연구자와 벤더를 중재하는 프로세스에 대해 경험이 부족합니다. 이들은 연구자들의 버그 리포트 동기를 의심하거나, 혹은 벤더를 지나치게 압박하여 보안 연구자나 벤더 모두를 불편하게 한 사례가 있습니다. 그들 중 보안 연구자에게 우호적인 시각을 가진 사람들은 보안 취약점 리포트를 지나치게 특별한 과정으로 생각하는 경향이 있습니다. 반면 보안 연구자에게 비우호적인 시각을 가진 사람들은 해커를 이상한 종족이라고 생각하는 경향이 있습니다. 양쪽 태도 모두가 결과적으로는 보안 취약점 제거 작업에 좋지 않은 영향을 줍니다. 제 개인적인 시각으로는 보안 취약점 공개가 단순한 버그 리포트의 과정이라는 것에 대해 아직 우리 사회의 이해와 합의가 부족한게 아닌가 싶습니다. 향후 상황이 더욱 나아지면 국내 기관과 협조하는 것이 아무래도 국내 보안 여건의 향상을 위해 바람직하지 않을까 생각합니다.
4. 일반에 취약점 정보 공개
Coordinated Disclosure 과정을 거쳤다면 일반에 취약점 정보를 공개하는데 문제가 없습니다. 이 정보를 굳이 일반에 공개하는 목적은 동일 제품 사용자들의 공공의 이익을 위한 것입니다. 일부 벤더는 자사 제품의 결함을 고객에게 알리는 것을 꺼리기 때문에, 보안 결함에 대한 정보를 입수한 고객이 직접적으로 요청하는 경우에만 패치를 설치해주는 경우가 많습니다. 즉, 고객이 정보를 입수할 수 없는 경우 이 고객은 보안 취약점에 그대로 노출되게 됩니다. 따라서, 해외 보안 메일링 리스트와 같이 보안 정보가 원활하게 소통되는 곳에 정보를 올리는 것이 좋습니다. 일반적으로 일정 규모 이상의 업체들은 보안 메일링 리스트에 올라오는 보안 취약점 정보를 모니터링하기 때문에, 많은 고객들이 혜택을 입을 수 있습니다.
일반에 취약점 정보를 공개하는 것은 벤더가 당신의 버그 리포트를 아예 묵살하거나, 협박으로만 일관하는 경우 벤더가 패치를 릴리즈하도록 압박하는 방법으로도 사용될 수 있습니다. 이 역시 동일 제품 사용자들의 공공의 이익을 위한 것입니다. 일반적으로 당신이 2~3 회에 걸쳐 벤더에 통보한 후에도 벤더가 응답이 없는 경우, 최종 통보일로부터 1개월 후에는 보안 메일링 리스트에 보안 취약점 정보를 공개하는 것이 적절하다고 받아들여지고 있습니다. 그러나 이는 보안 메일링 리스트를 통해 전세계의 해커들 사이에서 논의하면서 일반적으로 타당하다고 받아들여지게 된 수치일 뿐이니 참고 용도로만 사용하는 것이 좋습니다.
이상입니다.
사실 자잘하게 더 하고 싶은 이야기들은 많습니다. 예를 들어 해외의 ZDI (Zero Day Initiative)에 버그를 돈받고 파는 건 어떠한지... 국내의 보안 생태계에서 보안 취약점 공개를 중재하기 위해 기관들이 갖추어야할 업무 프로세스라던지, 혹은 일반적으로 사용되는 소프트웨어가 아닌, 특정 사이트의 취약점을 공개하는 것은 어떠한지... 이러한 주제들은 생각해볼 여지가 많은 주제입니다.
예를 들어, 국내에서는 아직 해커들 사이에서도 보안 취약점 공개에 대한 부정적인 시각이 존재하는 상황이며 (상당수의 해커들이 회사의 보안 담당자로 근무하기 때문에 보안 취약점 공개로 인한 업무량 증가가 달갑지 않겠죠?), 일반 소프트웨어야 모르겠지만 특정 사이트의 취약점을 공개하는 것은 공공의 이익에 오히려 반하는 것이 아니냐 라는 견해가 지배적입니다. 왜냐하면 웹 사이트는 서비스적인 성격을 갖고 있고, 상대적으로 많은 수의 사용자가 해킹의 피해를 입기 때문이죠. 그러나, 이런 견해가 적절한 절차를 거친 일반 소프트웨어의 보안 취약점 공개가 공공의 이익에 합치한다는 주장과 양립할 수 있는 것인지에 대해서는 논란의 여지가 많습니다.
이런 재미있는 주제는 앞으로 기회가 닿으면 또 이야기하기로 하고 오늘은 여기까지~
저와 다른 견해를 가지신 분의 반론은 환영합니다만, 논점없는 비난은 삼가주세요.
'내 생각과 다르다' 와 '내 생각과 틀리다' 를 적절히 구분하실 수 있는 분들의 견해라면 언제든 환영입니다.
이글루스 가든 - professional secur...



덧글
헐랭이 2008/04/20 04:33 # 답글
혹자는 자동차 결함 공개는 일반적으로 많은 고객에게 알린 후, 벤더에게 알리는데 반해, 왜 보안 취약점은 벤더에게 먼저 통보해야 하느냐고 반론을 제기할 수 있습니다. 저는 이 경우 '어떻게 행동하는 것이 공공 대중의 이익에 합치하느냐?' 를 기준으로 판단해보면 분명하다고 생각합니다.일반적으로 자동차의 결함은 일반에 공개함으로써 벤더의 리콜을 이끌어내기 쉬워진다는 면에서, 일반에 공개하는 것이 공공의 이익에 합치하는 경우가 많습니다. 그러나, 예외적으로 자동차의 문을 손쉽게 딸 수 있다거나, 트렁크를 손쉽게 딸 수 있는 결함이라면, 자동차 벤더에 먼저 통보하여 결함에 대한 시정 조치를 취하게 하고, 다른 사용자에게 알리는 것이 공공의 이익에 더 부합한다고 생각합니다. 대책없이 일반에 먼저 공개하는 경우 자동차 도난 피해가 발생할 우려가 높기 때문입니다.
그러나, 소프트웨어나 하드웨어의 결함은 많은 경우 취약점 공개로 인한 2차 피해의 우려가 높기 때문에, 벤더에 먼저 통보하는 것이 보다 공공의 이익에 합치할 것입니다. 물론, 그 후에도 벤더가 책임있는 태도를 보이지 않을 때는 일반에 공개하여 패치를 유도하는 것이 바람직하겠지요.
헐랭이 2008/04/20 12:41 # 답글
일본 제조업체의 제조결함에 대한 대응 : http://www.neakorea.co.kr/article_view.asp?seno=593일본 자동차 업계의 결함 공개에 대한 일본 정부의 정책 변화 : http://www.hani.co.kr/arti/international/japan/280387.html
소프트웨어 결함 공개 방식에 대한 2003년의 뉴스 : http://www.solbi.com/news/content.asp?num=266&page=11
gilgil 2008/04/20 23:02 # 답글
좋은 글 퍼 갑니다. ^^http://www.gilgil.co.kr/bbs/zboard.php?id=free&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=2411
Vincent 2008/04/22 10:14 # 답글
잘 보고 갑니다.
trustno1 2008/04/22 22:24 # 삭제 답글
이전에 해외에선 나름 많이 쓰이는 공개 솔루션에 대한 취약점 리포팅을 한적이 있는데...개발자로부터 바로 답변이 오더군요..
'내가 알기로는 이건 과거버전에서 고친건데 네 말이 이상하다. 그래서 최신 버전으로 다시 테스트 해봤더니, 취약성이 재현 되더라..
그래서 이러 이러한 방식으로 다시 패치 할 예정이다... 그때까지 발표를 조금 미루어 줄수 있겠는가..'
나름 정중한 표현으로 메일이 날라왔습니다. 그리고 실제 개발자가 취약성에 대해 잘 인지 하고 있으며, 해당 내용을 테스트 해보았음을 알 수 있더군요.
저는 딱히 다른 경로로 취약점을 발표할 생각이 없었기 때문에, 그쪽에서 알아서 처리해주길 기다렸죠...
그 이후로도 지속적으로 메일이 날라오더군요..
'현재 패치 개발이 완료 되었으며, 언제쯤 공개할 예정이다.. 패치 개발을 하면서 CVE 작업도 같이 진행 하였다. 패치 개발중에 재미있게도 너와 같은 취약성을 보고한 사람이 있다.
당신이 꺼리지 않는다면 그 사람과 공동 취약성 발견자로 하고 싶다.. 어떠한가..'
물론 그 솔루션은 저도 다른 취약성 발표로 인해 보게 되었고, 여러 취약성이 나올법한 구조 였습니다만, 패치 준비중에 또다른 보고자가 있었다는 점은 상당히 흥미 있는 점이 었습니다.
그 이후에도 온 메일로는 개발된 패치 정보와, Credit 을 입력 해야 되니 원한 다면 Credit 에 사용될 간단한 개인정보에 대한 요청이었습니다.
지속적인 영어로 된 메일 답신에 긴장하긴 했지만, 국내와는 다른 색다른 분위기를 알 수 있었습니다.
물론 해외라고 해서, 회사나 단체, 개발자에 따라서 각기 다른 반응이 나올법한 일이지만....
적어도 국내에서 제가 경험했던 일과는 다른 반응이었죠...
취약점 발견은 과거에 비해 상당히 손 쉬워지다보니 굳이 전문가가 아니더라도 시간만 투자한다면 충분히 발견될만한것들이 국내에도 널렸습니다.
그러나 국내 취약점이 보고 되는일은 거의 보기 힘들죠...
그것도 가끔씩 외국애들에 의해서 보고 되고 있고...
NCSC 에서 나름대로 상금도 걸고 있긴 하지만.. 요구 하는 정보들도 부담스럽고...
KISA 는 사람마다 보는 시각이 다르니.. 언급 하기도 그렇군요... ㅡ.ㅡ
퇴근 후 잠깐 들린 게임방에서 생각 없이 쓰다보니 쓸데 없이 글이 길어졌습니다.
그냥 이런식으로 처리 하기도 하는구나라고 생각하시면 될듯.. ^^
ps. 일본의 프로세스가 이런면에선 나름 잘 정리된거 같습니다.. IPA 에서 왠만한 내부 취약점은 다 처리 하려는거 같더군요..
ps^2. 해외 벤더나, 개발자들을 보면 취약점 보고시, 공개 이전에 CVE 에 컨택을 하는 일이있던데 국내에도 직접 이러한 컨택을 가져본 분이 계신가요? ^^
헐랭이 2008/04/23 01:16 # 답글
말씀하신대로, 일본은 프로세스가 잘 정립되어 있더군요. IPA 와 JPCERT 가 JVN 을 중심으로 잘 협력하면서 취약점 DB 관리, 일본 제품의 취약점에 대한 중재 및 해외 기관과의 협력, 일반인들에 대한 보안 정보 홍보 등의 업무를 잘 처리해나가고 있습니다. 최근 일본쪽에서 발표되는 취약점 정보는 대부분 JPCERT 를 통해 해외로 발표될 정도니까요.저희보다는 늦게 시작했지만, 느려도 차근차근 갈 길을 제대로 가는 일본인의 특성이 몇 년 새에 한국과의 역전 현상으로 나타나고 있더군요.
홈페이지도 KrCERT 와 JPCERT, IPA, JVN 은 차이가 많습니다. 일본 사이트들의 경우 알찬 정보를 많이 제공하면서도 디자인을 단순하게 해서 사용자 접근성을 높인 반면, KrCERT 홈페이지는 화려한 효과는 있지만 컨텐츠의 양, 검색의 편이성, 사용자 접근성 등 측면에서 아쉬운 점이 많습니다.
trustno1 2008/04/23 10:04 # 삭제 답글
다른 이야기를 덧붙여 보면 (상관 없겠죠? ^^;;;)이번달 마이크로소프트 패치중 MS08-018 은 국내 NCSC 에서 보고한것으로 크레딧이 되어있습니다.
NCSC 내부에서 발견 한것인지, 아니면 익명의 제보자로부터 접수한것인지는 알 수 없지만...
나름대로 자부심을 갖을만한일로 생각 되는데, 특별한 언급은 있지 않네요...
언론들도 잘 몰라서였는지 해당 내용에 대한 기사도 없었는데,
일부러 숨기려고 하는 일이 아닌 이상, 적절한 홍보는 괜찮지 않을까 생각 합니다. ^^
헐랭이 2008/04/23 12:13 # 답글
다음과 같은 관례를 따르면 어떨까 합니다. Secunia 의 취약점 정보를 보면, JPCERT 의 중재로 발표된 취약점에 대해서는 제보자의 Credit 을 Toshiharu Sugiyama of UBsecure, Inc. and JPCERT/CC 와 같이 표기하고 있고, 제보자가 익명을 원하는 경우는 The vendor credits an anonymous person via JPCERT 형태로 표기하고 있습니다. 이렇게 해두면 NCSC 내부 조사로 발표된 취약점과 외부에서 제보받아 발표된 취약점을 명확히 구분할 수 있겠지요.
Saintlinu 2008/04/23 15:42 # 삭제 답글
Secunia가 나와서 생각난 김에 적어요~Secunia는 실제로 exploit이 보고된 환경에서 정상 동작하는지 테스트를 진행하는 것 같더라고요.
Advisory를 보냈을 때, CTO아저씨가 테스트환경은 어떠했냐, 어디서 취약한 파일을 받을 수 있냐 등등 자세한 걸 요구(?)했던
기억이 나요. 여전히 깔끔한 서비스를 무료(?)로 제공해주는 Secunia가 고마운 1인.
off topic: 건강하세요 (__)
ZIZI 2008/04/23 21:39 # 답글
취약점 분석 -> 벤더에 통보(솔직히 이부분이 꿀아니면 독이죠) -> 공공기관에 통보+협조요청 -> 패치 -> 취약점 발표 (음..항상 하던 순서~)최근에는 각 기업에 우리 보안바닥의 인력들이 꽤 들어가서 직접 모의해킹을 수행, 신규 서비스에 대한 취약점 테스트 등을 많이 하고 있습니다.
기업에 속한 해커들이 자사의 수십개의 취약점을 발견하더라도, 취약점에 대해 발표할 수 있을까요?! 절대 못합니다.
서비스 런칭 전에 물론 취약점이 패치되면 상관이 없겠지만, 회사라는게 서비스 발표 시점이라는게 있어서 심각하지 않으면 서비스 하면서 취약점을 패치하는 경우도 허다하죠.
이런 상황에 외부에서 동일하거나 비슷한 취약점을 누군가가 찾아내어 발표를 해버린다면??? 참으로 어이가 없습니다.
내부에서는 다 알고 있는 상황인데, 게다가 단기,중기,장기 플랜을 통해 존재하는 취약점 뿐만 아니라, 잠재적인 취약점을을 고쳐가고 있는 상황에서
외부에서 발표해서 이미지를 실추당한다면 참으로 우스운 상황일 수 밖에 없습니다.
벤더에 통보하면, 욕을 먹을 수도, 감사함을 받을 수도 있습니다. 하지만, 욕 먹기 싫다고 동종의 업종에 있는 사람까지 난감하게 할 필요는 없다고 봅니다.
그래서, 벤더에 통보하는 것이 중요하다고 생각하는거죠. (하긴, 가끔 알고 있다고 이야기 듣고도 발표해버리는 사람들이 있긴 하더이다.)
Secunia나 ZDI에서도 취약점을 받고나서 벤더에 확인을 하는 절차가 있는 것으로 알고 있습니다. 잘못알고 있는건가?ㅋㅋ
아무튼, 앞에서 말한 바와 같이 순서대로만 한다면, 서로 WIN-WIN하는 절차가 되리라 믿습니다.