> THE-ARSENAL
> _

새벽 2시의 고요함 속에서 모니터 불빛만이 유일한 조명인 순간을 상상해 보자. 수많은 해커들이 지금 이 순간에도 불을 켜고 취약점을 찾고 있다. 하지만 정작 중요한 것은 취약점을 찾아낸 그 희열의 순간이 아니다. 진짜 게임은 그 다음부터 시작된다. 바로 그 발견을 남에게, 그것도 아주 까다롭고 피곤에 절어 있는 보안 담당자에게 납득시키는 과정이다. 우리는 종종 착각한다. 기술적으로 뛰어나면, 코드가 완벽하면, 공격 기법이 화려하면 상대방이 알아서 인정해 줄 것이라고 말이다. 하지만 천만에. 이것은 인간이 하는 일이다. 기계가 채점하는 시험이 아니란 말이다. 당신이 발견한 그 치명적인 버그가, 단지 보고서가 지루하고 읽기 싫다는 이유만으로 'N/A(Not Applicable)' 처분을 받고 휴지통으로 들어갈 수 있다는 사실을 직시해야 한다.

이것은 비즈니스다. 자신의 상품을 파는 세일즈맨의 마음가짐이 필요하다. 아무리 좋은 다이아몬드라도 신문지에 대충 싸서 던져주면 그 가치를 알아보는 사람은 드물다. 벨벳 케이스에 담아 조명을 비추며 건네야 비로소 상대방의 눈이 번쩍 뜨이는 법이다. 해킹 실력만큼이나 중요한 것, 어쩌면 그 이상으로 수익을 결정짓는 요소는 바로 '보고서의 미학'이다. 가독성은 곧 돈이다. 이 차가운 자본주의의 논리를 보안 보고서라는 장르에 어떻게 녹여낼지, 그 은밀하고도 매력적인 기술을 이야기하려 한다.

새벽 3시, 카페인에 절어있는 그를 상상해라

보고서를 쓰기 전에 가장 먼저 해야 할 일은 모니터 너머에 있는 사람을 그리는 일이다. 트리아저(Triager). 그들은 당신의 보고서를 가장 먼저 받아보는 1차 관문이자 심판관이다. 그들의 하루를 생각해 보자. 전 세계에서 쏟아지는 수백, 수천 개의 리포트가 그들의 메일함에 쌓인다. 그중 90퍼센트는 봇이 보낸 자동 스캔 결과이거나, 매뉴얼도 안 읽고 보낸 헛소리들, 혹은 "안녕하세요"만 적혀 있는 무의미한 텍스트들이다. 그들은 지쳐 있다. 반복되는 업무와 형편없는 보고서들의 홍수 속에서 이미 인내심은 바닥이 난 상태다. 그런 그들의 눈에 복잡하고 정돈되지 않은, 줄바꿈조차 제대로 되어 있지 않은 빽빽한 텍스트 덩어리가 들어온다면 어떤 반응을 보일까. 아마도 무의식적으로 거부감부터 들 것이다. 읽기도 전에 '이건 또 무슨 시간 낭비일까'라는 편견을 갖게 되는 것이다.

이것이 바로 인간의 심리다. 따라서 현명한 사냥꾼이라면 이 지친 트리아저에게 '휴식' 같은 보고서를 선물해야 한다. 제목만 봐도 무슨 내용인지 알 수 있고, 스크롤을 내리는 것만으로도 핵심이 파악되는 깔끔한 글. 그것은 그들에게 사막의 오아시스나 다름없다. 이 보고서는 읽을 만한 가치가 있다는 신호를 첫인상에서부터 강렬하게 심어줘야 한다. 그들의 피로도를 낮춰주는 배려심, 그것이 바로 승인율을 높이는 첫 번째 열쇠다. 내 보고서를 읽는 사람이 방금 여자친구와 헤어졌거나, 상사에게 깨지고 온 상태일 수도 있다는 가정을 해라. 그럼에도 불구하고 내 글이 술술 읽힌다면, 이미 절반은 성공한 셈이다.

섹시하지 않은 제목은 죄악이다

서점의 베스트셀러 코너를 가보자. 사람들은 책의 내용을 다 읽어보고 구매를 결정하지 않는다. 표지와 제목, 그 단 몇 초의 승부에서 지갑을 열지 말지가 결정된다. 버그 바운티 보고서도 마찬가지다. "XSS 발견됨" 같은 제목은 너무나 게으르다. 이것은 마치 식당 메뉴판에 "음식 있음"이라고 적어놓은 것과 다를 바가 없다. 트리아저의 메일함에는 이미 "XSS 발견"이라는 제목의 리포트가 수천 개 쌓여 있다. 당신의 리포트가 그 수많은 쓰레기들 사이에 묻히기를 원하지 않는다면, 제목부터 섹시하게 뽑아야 한다. 호기심을 자극하거나, 공포심을 조장하거나, 혹은 명확한 이익을 제시해야 한다. 단순히 기술명을 나열하는 것을 넘어, 그 기술이 초래할 비즈니스적 임팩트를 제목에 담아야 한다.

예를 들어보자. "검색창에서 반사형 XSS 취약점 발견"이라는 제목은 팩트일 뿐이다. 하지만 이를 "관리자 세션 탈취가 가능한 검색 기능의 XSS 시나리오"라고 바꾼다면 어떨까. 전자가 단순한 기술적 오류라면, 후자는 당장 해결하지 않으면 회사가 망할 수도 있다는 위기감을 준다. 심박수를 높이는 제목은 클릭을 부른다. 담당자가 당신의 보고서를 클릭하는 순간, 이미 마음속으로는 '이건 뭔가 있다'는 기대를 품게 된다. 제목은 보고서의 얼굴이다. 아무리 내용이 좋아도 얼굴이 매력적이지 않으면 눈길조차 주지 않는 것이 냉정한 현실이다. 구체적인 피해 시나리오를 한 줄로 요약해서 제목에 박아넣는 연습을 해야 한다. 그것이 당신의 몸값을 올리는 가장 쉬운 방법이다.

3초 안에 승부하는 엘리베이터 피치, 요약 섹션

영화 예고편이 재미없으면 본영화를 보지 않는다. 보고서의 '요약(Summary)' 섹션은 바로 이 예고편에 해당한다. 많은 해커들이 이 부분을 대충 작성하거나 기술적인 로그로 채워 넣는 실수를 범한다. 하지만 트리아저는 바쁜 사람들이다. 그들은 긴 글을 정독할 시간이 없다. 그들은 요약만 읽고 이 보고서의 등급을 마음속으로 매긴다. 그러니 이 요약 섹션에서 모든 승부를 봐야 한다. 여기서 주절주절 서론을 늘어놓거나, 인사를 건네는 건 하수나 하는 짓이다. 바로 본론으로 들어가야 한다. 어떤 취약점인지, 어디서 발생하는지, 그리고 가장 중요한 것, 그래서 '어떤 피해가 발생하는지'를 명확하고 간결하게 꽂아 넣어야 한다.

3줄 요약의 미학이 여기서 발휘된다. 첫 문장에서 취약점의 유형과 위치를 명시하고, 두 번째 문장에서 공격이 성공했을 때의 파급력을 설명하며, 마지막 문장에서 이것이 왜 중요한지 강조하는 구조가 이상적이다. 마치 투자자를 엘리베이터에서 우연히 만났을 때, 30초 안에 내 사업 아이템을 설명해서 투자를 받아내는 심정으로 써야 한다. 트리아저가 요약을 읽고 "아, 이거 큰일이다" 혹은 "오, 기발한데?"라는 생각이 들게 만들어야 한다. 요약이 명쾌하면 뒤에 이어질 상세 내용에 대한 신뢰도도 함께 올라간다. 반대로 요약이 횡설수설하면, 뒤에 아무리 훌륭한 PoC(개념 증명)가 있어도 이미 색안경을 끼고 보게 된다. 요약은 단순한 줄거리가 아니다. 당신의 보고서를 '반려' 폴더에서 '승인' 폴더로 옮기는 결정적인 영업 멘트다.

초등학생도 따라 할 수 있게 떠먹여 줘라

이제 본론이다. 재현 단계(Steps to Reproduce)는 보고서의 심장과도 같다. 여기서 많은 사람들이 착각하는 것이 있다. 상대방도 나만큼 기술을 알 것이라는 오만함이다. "패킷 잡아서 헤더 수정하면 됨"이라고 퉁명스럽게 적어놓고 알아서 하라는 식의 태도는 최악이다. 트리아저가 모든 기술 스택과 모든 공격 기법에 정통할 수는 없다. 설령 안다고 해도, 그들이 일일이 공격 코드를 짜서 테스트해 줄 의무는 없다. 당신의 목표는 트리아저가 아무런 생각 없이, 마치 로봇처럼 당신이 적어준 단계를 따라 하기만 하면 버그가 '팡' 하고 터지게 만드는 것이다. 친절함이 생명이다. 접속해야 할 URL부터 시작해서, 클릭해야 할 버튼, 입력해야 할 값, 수정해야 할 요청 헤더까지 아주 세세하게 적어야 한다.

가능하다면 스크린샷이나 동영상을 첨부하는 것은 선택이 아니라 필수다. 백 마디 말보다 한 장의 움짤(GIF)이 훨씬 강력하다. 동영상을 보고 그대로 따라 하기만 하면 재현이 되는 보고서와, 텍스트를 해독하며 수수께끼를 풀어야 하는 보고서. 둘 중 어느 쪽에 더 높은 점수를 주겠는가. 답은 뻔하다. 재현 과정에서 트리아저가 막히거나 헷갈리게 만들면 안 된다. 그들이 "어, 이거 안 되는데?"라고 생각하는 순간, 당신의 보고서는 위태로워진다. 숟가락으로 밥을 떠서 입 앞까지 가져다주는 정성이 필요하다. "이 정도는 알겠지"라는 생각은 버려라. 상대방을 아무것도 모르는 초보자라고 가정하고, 하나부터 열까지 친절하게 안내해라. 그 친절함이 결국 통장 잔고로 돌아온다.

마크다운이라는 화장술

내용이 알차다고 해서 포장이 엉망이어도 되는 것은 아니다. 같은 음식이라도 고급스러운 접시에 플레이팅 된 것과 양푼에 비벼 나온 것은 가격이 다르다. 보고서에서 '플레이팅'을 담당하는 것이 바로 마크다운(Markdown)이다. 텍스트만 나열된 밋밋한 보고서는 읽는 사람의 눈을 피로하게 만든다. 중요한 부분은 볼드체로 강조하고, 코드는 반드시 코드 블록으로 감싸야 한다. 인용구, 헤더, 리스트 기능을 적절히 활용하여 정보의 위계질서를 시각적으로 보여줘야 한다. HTTP 요청과 응답을 캡처해서 붙여넣을 때도 그냥 텍스트로 붙이는 사람과, 코드 블록 기능을 이용해 문법 강조(Syntax Highlighting)까지 적용하는 사람은 천지 차이다.

후자의 보고서가 훨씬 전문적으로 보이고 신뢰가 간다. 시각적인 정돈됨은 내용의 논리성을 돋보이게 만든다. 잘 정리된 문단과 명확한 소제목들은 트리아저가 정보를 빠르게 스캔하고 이해하는 데 도움을 준다. 이것은 단순히 예쁘게 꾸미는 차원의 문제가 아니다. 정보를 효율적으로 전달하기 위한 전략이다. 마크다운 문법을 익히는 데는 10분도 걸리지 않는다. 그 10분의 투자가 당신의 보고서를 전문가의 컨설팅 리포트처럼 보이게 만든다. 보기에 좋은 떡이 먹기도 좋다고 했다. 보기에 깔끔한 보고서가 승인되기도 쉽다. 화려한 미사여구를 쓰라는 것이 아니다. 기본적인 가독성을 지키는 것, 그것이 프로의 자세다.

매너가 바운티를 만든다

마지막으로 톤 앤 매너에 대해 이야기해 보자. 해커들 중에는 가끔 공격적인 어조로 보고서를 쓰는 이들이 있다. "너네 보안 수준 형편없다", "내가 다 뚫었다" 식의 오만한 태도는 트리아저의 반감을 산다. 그들도 감정이 있는 사람이다. 기분 나쁜 사람에게 돈을 주고 싶어 하는 사람은 세상에 없다. 우리는 적군이 아니라, 회사의 보안을 돕는 파트너라는 인식을 심어줘야 한다. 문제점을 지적하되 정중하고 객관적인 태도를 유지해야 한다. "이런 문제가 있으니 고치는 게 좋겠다"는 제안의 형식을 취하는 것이 현명하다.

또한, 트리아저가 추가 정보를 요청하거나 이해를 못 했을 때 짜증을 내서는 안 된다. 그 과정 또한 커뮤니케이션의 일부다. 친절하고 협조적인 태도는 당신의 평판(Reputation)을 만든다. 이 바닥은 좁다. 트리아저들은 자주 활동하는 해커들의 닉네임을 기억한다. "이 사람이 보낸 보고서는 항상 깔끔하고 매너가 좋아"라는 인식이 박히면, 애매한 상황에서도 당신의 편을 들어줄 확률이 높아진다. 반대로 "이 사람은 실력은 있는데 너무 무례해"라고 찍히면, 사소한 트집을 잡혀 반려될 수도 있다. 결국 사람이 하는 일이다. 화면 너머의 상대방을 존중하는 태도, 그것이 보상금을 극대화하는 마지막 퍼즐 조각이다. 비즈니스 파트너로서의 품격을 지켜라. 그것이 당신을 대체 불가능한 전문가로 만들어줄 것이다.

3줄 요약

  1. 보안 담당자의 피로도를 이해하고, 섹시한 제목과 명쾌한 요약으로 그들의 시선을 단번에 사로잡아야 한다.
  2. 유치원생도 따라 할 수 있을 만큼 상세한 재현 단계와 마크다운을 활용한 깔끔한 포맷팅은 선택이 아닌 필수 생존 전략이다.
  3. 기술적 우월감에 취해 오만하게 굴지 말고, 정중하고 협조적인 파트너십을 보여주어야 장기적인 수익과 평판을 모두 얻을 수 있다.