Showing Posts From
보안qa
- 03 Dec, 2025
'여기 인증이 빠졌는데요' - 개발팀이 싫어하는 문장 톱 3
"여기 인증이 빠졌는데요" - 개발팀이 싫어하는 문장 톱 3 오늘도 어김없이 오전 10시. 신규 API 보안 점검 중이다. POST 요청 날렸다. 토큰 없이. 200 OK 떴다. "아..." 이게 되면 안 되는 건데. 인증 헤더 빼고 다시 날렸다. 또 200 OK. 유저 정보 다 내려온다. 남의 거까지. 심장이 쿵 했다. 나쁜 의미로.슬랙 열었다. 개발팀 채널. "@김철수 API 인증 체크 부탁드립니다" 점잖게 썼다. 처음엔. 5분 뒤 답장. "어? 거기 인증 필요해요?" 필요하다. 매우. "네, 유저 정보 조회인데 인증 없이 호출 가능합니다" 또 5분. "아 그거요? 다음 스프린트에 넣을게요" 숨 참았다. 3초. "이거 지금 프로덕션인데, 남의 정보 다 보이는데..." "아 그래요? 근데 저 지금 급한 버그 픽싱 중이라..." 여기서부터 시작된다. 오늘의 전투. 1위: "여기 인증이 빠졌는데요" 6년 했다. 보안 QA. 이 문장 말하면 공기가 무거워진다. 개발자 표정이 굳는다. 매번. "인증이요...? 어디가요?" 다 알면서. "로그인 API에서 토큰 검증 안 하고 있습니다" "아..." 길게 늘어지는 '아'. 이게 시작이다. 반응은 보통 세 가지다. 첫 번째: 부정 단계 "그게 버그예요? 원래 그렇게 설계한 건데..." 아니다. 명세서 봤다. 인증 필수라고 써 있다. "명세서에 JWT 토큰 필수라고..." "아 그건 옛날 거고, 지금은 내부 API라서요" 내부? 인터넷에 열려 있는데? "퍼블릭 IP에서 호출 가능한데요" "아 그래요? 근데 URL 모르면 못 찾잖아요" URL이 보안이 되나. Obscurity는 보안이 아니다.두 번째: 협상 단계 "심각한 건 아니죠? P3 정도?" 심각하다. P1이다. "인증 없이 타인 정보 조회 가능하면 P1입니다" "어... 근데 실제로 악용된 사례는 없잖아요?" 없는 게 아니라 모르는 거다. 로그 분석 안 하니까. "로그 보면 알겠지만..." "로그요? 로그는 지금 안 보고 있는데..." 당연히. 세 번째: 지연 단계 "다음 주 배포 때 같이 넣을게요" 다음 주? 지금 뚫려 있는데? "핫픽스 가능할까요? 지금 취약점 열려 있어서..." "핫픽스요...? 그럼 배포 파이프라인 돌려야 하는데..." 그래야 한다. 보안 이슈니까. "CVSS 점수 8.2 나오는데요" 숫자 던졌다. 효과 있다. 가끔. "8.2요? 계산 어떻게 한 거예요?" 계산기 보여줬다. CVSS 계산기. Access Vector: Network Authentication: None Confidentiality Impact: High "아... 근데 저희 서비스 사용자가 적어서..." 사용자 수는 관계없다. 취약점은 취약점이다. 결국 타협했다. 내일 새벽 배포. 새벽 2시에 내가 테스트한다. 당연히. 2위: "이거 SQL Injection 되는데요" 이건 진짜 싫어한다. 개발자들. 왜냐면 '기초 중의 기초'니까. "부끄러운 거" 취급이다. 개발자 사이에서. 지난주에 찾았다. 검색 기능에서. GET /api/search?keyword=test' OR '1'='1500 에러 떴다. DB 에러 메시지 그대로. "MySQL syntax error near..." 심장이 또 쿵했다. 슬랙 DM 보냈다. 조용히. 이건 공개 채널에 쓰면 안 된다. 자존심 상한다. 개발자. "검색 API SQL Injection 취약점 있습니다. DM으로 상세 공유드릴게요" 읽음 표시 떴다. 2분 뒤. 답장은 30분 뒤. "확인했습니다. 근데 이거 관리자만 쓰는 기능이라..." 관리자도 해킹당한다. "관리자 계정도 타겟이 될 수 있어서요" "아... 근데 이미 Prepared Statement 쓰고 있는데..." 안 쓰고 있다. 코드 봤다. query = f"SELECT * FROM users WHERE name LIKE '%{keyword}%'"f-string 그대로. 교과서적 취약점. "코드 확인해보니 직접 문자열 조합하고 계시던데요" "아 그거요? 옛날 레거시 코드라..." 레거시면 더 위험하다. "고치기 어렵나요?" "어렵죠... 다른 데도 다 바꿔야 해서..." 얼마나 많길래. "몇 군데 정도?" "한... 20군데?" 20군데가 SQL Injection 가능하다고? 숨 참았다. 5초. "하나씩이라도 고쳐봐요. 일단 검색부터..." "네... 시간 나면..." 시간 나면은 안 한다는 뜻이다. 보통. 결국 JIRA 티켓 만들었다. P0로. CTO한테도 리포트 올렸다. 다음 날 핫픽스 나갔다. 역시 CTO. 개발자는 삐졌다. 일주일 동안. 점심 같이 안 먹자고 했다. 어쩔 수 없다. 보안이 먼저다.3위: "이 API 권한 체크가 없는데요" 이게 제일 미묘하다. 왜냐면 '작동은 한다'니까. 버그가 아니다. 기능 구현 누락이다. 근데 보안적으론 치명적이다. 지난달에 발견했다. 유저 삭제 API. DELETE /api/users/{user_id}로그인만 하면 된다. 누구나. 남의 계정도 지운다. 권한 체크 없으니까. 테스트했다. 내 계정 A로 로그인. 남의 계정 B를 삭제 요청. 204 No Content. 성공했다. "..." 슬랙 열었다. "@박영희 유저 삭제 API 권한 체크 필요합니다" 3분 만에 답장. 빠르다. "네? 권한이요?" "네, 지금 자기 계정 외에도 남의 계정 삭제 가능해요" "아 그거요? 원래 관리자용 API인데..." 관리자 체크 안 한다. 코드 봤다. "코드상 role 체크 없던데요" "어? 그래요? 근데 프론트에서 관리자만 버튼 보이게 해놨는데..." 프론트 제어는 보안이 아니다. curl 하나면 끝이다. "프론트 제어는 우회 가능해서요. 백엔드 체크 필요합니다" "아..." 또 길게 늘어지는 '아'. "근데 권한 체크 로직이 복잡해서... 시간이 좀..." 복잡하면 더 해야 한다. "IDOR 취약점이라 심각도 높습니다" "IDOR이 뭐예요?" 설명했다. Insecure Direct Object Reference. 객체 접근 권한 체크 안 하는 거. OWASP Top 10에 들어간다. "아... 그럼 언제까지 고쳐야 해요?" 이번 주. 가능하면 내일. "일주일 안에 가능할까요?" "일주일이요...? 다른 API도 다 체크해야 하는데..." 다 체크해야 맞다. "일단 삭제, 수정 API부터 점검해봐요" "네... 해볼게요..." 목소리에 힘이 없다. 2주 걸렸다. 결국. 20개 API 권한 체크 추가. 개발자는 지쳤다. 나도 지쳤다. 근데 해야 한다. 이게 우리 일이다. 개발자의 마음 이해한다. 어느 정도. 그들도 바쁘다. 매우. 기능 개발도 해야 하고. 버그 픽스도 쌓여 있고. 거기에 보안까지. "왜 이렇게 까다롭냐"고 한다. 가끔. 까다로운 게 아니다. 필수다. 해킹당하면 다 책임진다. 개발팀이. "보안팀 뭐했어?"도 들을 거다. 우리가. 그래서 미리 막는 거다. 근데 이게 충돌한다. 개발자의 우선순위:기능 개발 (PM이 독촉) 버그 수정 (유저 컴플레인) 성능 개선 (느리다고 항의) 보안 (음... 나중에?)보안 QA의 우선순위:취약점 수정 (지금 당장) 보안 강화 (예방) 기능은... 잘 모르겠고관점이 다르다. 개발자는 "될 때까지" 만든다. 우리는 "안 뚫릴 때까지" 뚫어본다. 방향이 반대다. 그래서 싸운다. 자주. 내가 하는 타협들 6년 하면서 배웠다. 말하는 방식이 중요하다는 것. 예전: "여기 인증 없는데요? 이거 왜 이래요?" 공격적이다. 비난처럼 들린다. 지금: "인증 체크 추가하면 더 안전할 것 같아요. 도움 드릴까요?" 부드럽다. 제안처럼 들린다. 효과가 다르다. 그리고 우선순위를 나눈다. P0: 지금 당장 (인증 누락, SQL Injection) P1: 이번 주 안에 (권한 체크) P2: 다음 스프린트 (보안 강화) P3: 여유 있을 때 (개선 사항) P0만 강하게 밀어붙인다. 나머지는 협상 가능하다. 그리고 직접 코드 짠다. 가능하면. "이렇게 고치면 될 것 같아요" PR 올린다. 리뷰 요청한다. 개발자가 좋아한다. 일이 줄어드니까. 같이 해결하는 거다. 싸우는 게 아니라. 그러면 관계가 좋아진다. 다음번에 또 취약점 보고할 때 덜 힘들다. 그래도 힘든 순간들 가끔은 진짜 화난다. 같은 취약점 반복될 때. "지난번에도 얘기했는데..." "아 그거요? 까먹었네요" 까먹을 일이 아닌데. 보안 가이드 문서 만들었다. 읽으라고 공유했다. 아무도 안 읽는다. "문서 어디 있어요?" 컨플루언스 첫 페이지다. "아 그거요? 나중에 볼게요" 나중은 오지 않는다. 그리고 사고 날 때. 실제 해킹 시도 있었다. DDoS는 아니고 credential stuffing. 로그인 시도 10만 건. 다행히 막았다. Rate limiting 있어서. 근데 그거 내가 추가한 거다. 3개월 전에. 그때도 "꼭 필요해요?"라고 물었다. 개발팀. 필요하다니까. 사고 후 회의. "다행히 보안 QA팀이 미리 조치해서..." 박수 받았다. 기분이 이상했다. 박수받을 일이 아닌데. 원래 있었어야 할 거니까. 그럼에도 계속하는 이유 취약점 찾았을 때. 희열이 있다. 정말. "이거다!" 심장 뛴다. 게임 깬 기분이다. 그리고 고쳐졌을 때. 다시 테스트한다. 인증 체크 들어갔다. 401 Unauthorized. 완벽하다. 뿌듯하다. 이 서비스가 조금 더 안전해졌다. 우리 유저들 정보가 지켜졌다. 밤에 잘 잔다. 마음 편히. CTF 대회 나갔다. 지난주. 1등 했다. Web 카테고리. 상금 100만원. 여자친구한테 자랑했다. "우리 남친 해커네~" 화이트 해커다. 강조했다. "맞아, 착한 해커" 기분 좋았다. 부모님한테도 말씀드렸다. "아들이 회사 보안 지키는 일 해요" "대단하네, 우리 아들" 뿌듯했다. 개발자들이랑 관계도 좋아졌다. 최근에. 술 먹었다. 회식에서. "야, 너 때문에 일 많아지긴 하는데..." 움찔했다. "고마워. 진짜로." "네?" "너가 안 잡아주면 우리가 욕먹잖아. 나중에." 인정받았다. 같이 일하는 거다. 결국. 적이 아니다. 동료다. 목표가 같다. 좋은 서비스 만들기. 앞으로의 계획 다음 달에 교육한다. 개발팀 대상 보안 교육. "Secure Coding 101" 준비 중이다. 자료. OWASP Top 10 중심으로. 실습도 넣을 거다. 직접 SQL Injection 해보기. 직접 XSS 공격 해보기. 체험하면 이해한다. 더 잘. 그리고 자동화 구축한다. CI/CD에 보안 스캔 넣기. SAST, DAST 돌리기. 커밋할 때마다 자동 체크. 내가 다 할 순 없으니까. 시스템이 해야 한다. 버그 바운티 프로그램도 열까 한다. 외부 화이트 해커들. 우리가 못 찾은 거 찾아주면. 포상금 주기. 더 안전해질 거다. CTO한테 제안할 거다. 다음 주. 오늘 마무리 6시다. 퇴근 시간. 근데 아직 못 끝냈다. 테스트. API 20개 더 남았다. 7시까지 해야겠다. 여자친구한테 문자 보냈다. "오늘 조금 늦을 것 같아. 저녁 먼저 먹어" "또? 무슨 취약점 찾았어?" "응, 인증 빠진 거" "개발자들 싫어하겠다 ㅋㅋ" 맞다. 근데 해야 한다. 이게 내 일이다. 화이트 해커. 좋은 해커. 서비스 지키는 사람. 모니터 3개 켰다. Burp Suite 실행. 다시 시작이다."여기 인증 빠졌는데요" 오늘도 말한다. 내일도 말할 거다.
- 02 Dec, 2025
신입 QA에서 보안 QA로 전직한 6년 경력, 무엇이 달라졌나?
일반 QA에서 보안 QA로, 6년 사이의 변화 출근했다. 커피 마셨다. 모니터 켰다. Burp Suite 띄웠다. 이 루틴이 이제 너무 자연스럽다. 4년 전만 해도 이게 불가능했다. Burp Suite라는 게 뭔지도 몰랐고, 보안 테스트라고 하면 막연하게 "남의 계정으로 들어가보는 것?" 정도로만 생각했다. 일반 QA에서 6년, 그 중 절반을 보안 QA로 살아오니 정말 많은 게 달라졌다. 처음 회사는 작은 핀테크 스타트업이었다. 직원 80명쯤. 내 역할은 심플했다. 기능이 정상 작동하는가. 에러가 나지 않는가. 엣지 케이스는 없는가. 테스트 케이스 100개, 200개 만들고, 자동화 스크립트 짜고, 버그 리포트 올렸다. 그게 전부였다. 월급 4000만원. 당시엔 괜찮다고 생각했다. 그러다 2년 차 때 보안팀 리더가 나를 불렀다. "QA 마인드셋 가지면서 보안도 배울 사람 없나?" 컨설턴트로 뛰어다니는 게 아니라 내부에서 계속 봐줄 사람이 필요하다고 했다. 처음엔 거절했다. 보안? 나? 말도 안 된다고 생각했다. 하지만 월급 얘기를 들었다. 6000만원에서 시작. 그리고 "당신 같은 사람이 필요합니다"라는 한마디. 자존심이 좀 생겼나. 도전하기로 했다.첫 3개월: 지옥의 기초 학습기 [IMAGE_1: Anime style illustration of a confused Korean male developer sitting at desk with multiple monitors showing incomprehensible code and security tool interfaces like Burp Suite, surrounded by flying technical documents and question marks, stressed expression, dark room with dim red lighting, Studio Ghibli inspired character design, overwhelmed but determined look] 첫 주는 악몽이었다. OWASP Top 10? 몰랐다. SQL Injection? SQL은 알지만 Injection은 뭐지. Burp Suite는 들어가만 해도 어지러웠다. 프록시, 리피터, 스코프, 인터셉터. 영어도 많고, 개념도 많고, 직관적이지 않았다. 기존 QA에서 배운 게 거의 없었다. 보안은 다른 차원이었다. 기능 테스트는 "정상인가 비정상인가"만 판단하면 됐다. 보안은 "어떻게 공격할까"를 생각해야 했다. 사고방식 자체가 180도 바뀌어야 했다. 첫 달은 온라인 강의를 봤다. Udemy에서 Burp Suite 강의를 구매했고, TryHackMe에서 기초를 다졌다. 야근이 많았다. 퇴근하고 집에서도 계속 봤다. 월급 600만원 인상이 동기였나? 그것도 있고, 뭔가 새로운 세계가 열리는 느낌도 있었다. 두 번째 달부터는 실제 테스트를 조금씩 해봤다. 선임 보안 테스터 옆에 앉아서. 그쪽이 Burp Suite로 API를 스캔하는데, 화면을 보면서 "이건 뭐 하는 거예요?" 자꾸 물었다. 처음엔 답답해 했을 것 같은데, 친절하게 설명해줬다. 그 팀장은 지금도 내 멘토다. 세 번째 달에 처음으로 진짜 취약점을 찾았다. SQL Injection. 로그인 폼이었다. 근데 사실 Burp Suite가 먼저 찾은 거였다. 스캔 결과를 보고 "이게 뭐예요?" 물으니 팀장이 "한 번 직접 공격해봐"라고 했다. 페이로드를 복사-붙여넣기 하고, 서버에서 뭔가 다른 응답이 오는 걸 봤을 때의 전율. 잊을 수가 없다. "어? 들어와졌다." 그 한마디. 당시 심장이 철렁했다. 진짜 뚫렸다. 공격이 성공했다. 그 순간 깨달았다. 보안은 기능 테스트와 완전히 다르다. 공격자가 되어야 한다. 나쁜 사람처럼 생각해야 한다. 이 시스템의 허점을 찾아서 악용할 방법을 생각해야 한다.1년 차: Burp Suite와의 사투 [IMAGE_2: Anime manga style illustration of a Korean male security QA professional with laser-focused eyes staring at multiple glowing monitors displaying Burp Suite HTTP history with highlighted vulnerabilities, typing rapidly on keyboard, green matrix-style code rain effect in background, warm desk lamp lighting, determined professional expression, Studio Ghibli atmospheric lighting, detailed anime character art, cyberpunk aesthetic mixed with Japanese illustration style] 1년차 때는 Burp Suite와 싸우는 기분이었다. 스코프 설정이 자꾸 꼬였다. 인터셉터로 패킷을 수정하다 실수로 요청을 완전히 날렸다. 스캔 설정을 잘못 해서 개발 환경이 아니라 프로덕션 환경을 스캔할 뻔했다. (다행히 막혔다) 테스트 케이스도 새로 만들어야 했다. 일반 QA였을 때는 "유저가 하는 정상적인 행동"만 테스트했다. 보안에서는 다르다. "유저가 하지 않을 악의적인 행동"을 테스트한다.로그인 시 SQL Injection: ') OR '1'='1 파라미터 조작: amount=100을 amount=10으로 인증 우회: 토큰 값 임의 변조 세션 하이재킹: 쿠키 스틸링 XSS: 댓글에 alert('xss') 삽입 CSRF: 다른 사이트에서 내 요청 보내기처음엔 이런 시나리오를 "정말 공격을 해도 되나?" 걱정하면서 했다. 이제는 지루할 정도로 루틴이다. 1년 차 때 가장 큰 변화는 눈이 뜨인 거였다. 웹사이트를 볼 때 기능이 보이지 않았다. 취약점이 보였다. 예를 들면 로그인 폼을 봤을 때:패스워드 필드가 input type=password인가? (아니면 평문?) 오토 완성이 꺼져 있나? SQL Injection 방어 있나? (쿼리 파라미터 직결? 프리페어드 스테이트먼트?) Rate Limiting이 있나? (브루트포스 방어) 비밀번호 최소 자릿수, 복잡도 요구사항은?일반 QA는 "로그인되나?" 물었다. 보안 QA는 "어떻게 로그인을 뚫지?"를 물었다. 이 무렵 회사도 성장했다. 직원이 120명이 됐다. 보안팀도 커졌다. 나한테 후배가 생겼다. 2년차 신입 보안 QA. 그쪽은 처음부터 보안으로 들어온 사람이었다. 근데 나는 일반 QA 경험이 있었으니 도움이 될 수 있었다. "개발팀이 뭘 생각하는지, 버그와 보안은 뭐가 다른지" 설명해줄 수 있었다.2~3년 차: 직관의 시대 [IMAGE_3: Anime illustration of confident Korean male security QA professional with calm, knowing expression staring at code on monitor, hands resting on desk confidently, multiple screens showing security scanning results with green checkmarks and highlighted vulnerabilities already marked by his expertise, warm golden afternoon lighting streaming through window, Studio Ghibli masterpiece aesthetic, serene yet powerful presence, detailed manga-style character art, peaceful cybersecurity environment] 2년을 더 지나니까 달라졌다. Burp Suite가 불편하지 않았다. 오히려 몸에 밴 거였다. 손가락이 자동으로 스캔 버튼을 눌렀다. 결과를 보면 진짜와 거짓 양성을 0.5초에 판단했다. 그리고 신기한 일이 생겼다. 코드를 봐도 취약점이 눈에 들어왔다. 사실 프론트엔드 코드 리뷰를 하다 보니 그렇게 된 거였다. 개발팀과 협업하면서 "여기는 왜 취약한가?"를 자꾸 설명하다 보니, 패턴이 읽혔다. const data = request.body.user_id; const query = "SELECT * FROM users WHERE id = " + data; 이 코드를 보는 순간, 나는 알았다. 뚫린다. 바로. 이유를 물을 필요도 없었다. 이건 문자열 연결이 되고 있으니까, 당연히 SQL Injection이 가능하다. 혹은 API 응답: { "user_id": 123, "name": "김철수", "role": "admin" }이걸 봐도 알았다. 프론트에서 role을 클라이언트 사이드로 체크하고 있다는 거. 즉, 백에서는 체크 없다는 거. 즉, role을 조작할 수 있다는 거. 이 단계에서는 기술뿐 아니라 심리도 많이 배웠다. 개발팀이랑 싸우지 않으면서 보안을 지키는 방법. 취약점을 "저 놈들이 실수했다"가 아니라 "이건 시스템의 문제다"로 설명하는 방법. 리포트를 작성할 때 "왜 위험한가"보다 "어떻게 고치는가"를 먼저 제시하는 방법. 연봉이 7000만원에 올랐다. 처음 일반 QA에서 4000만원, 보안 QA 시작할 때 6000만원, 지금 7000만원. 숫자로만 보면 3년에 3000만원 올랐다. 근데 체감은 훨씬 컸다. 월급보다는 "내가 성장했다"는 게 더 크다.지금: 공격자의 눈, 방어자의 책임 [IMAGE_4: Anime illustration of Korean male security QA professional in modern office looking out window at city night skyline, laptop and security tools visible on desk but character is contemplative, warm room lighting with desk lamp glow, Studio Ghibli atmospheric illustration style, showing both technical expertise and human responsibility, manga aesthetic, moment of reflection on career path, professional yet introspective mood, detailed anime character art] 지금은 좀 다르다. 이제 취약점을 찾는 게 어렵지 않다. 문제는 그 다음이다. 취약점을 찾고 리포트하면, 개발팀이 "나중에 고치겠습니다"라고 한다. 물론 크리티컬하면 바로 고치지만, 중간 정도는 백로그에 들어간다. 그 사이 라이브 가면? 그럼 내 책임이 된다. "왜 못 찾았어?"가 아니라 "왜 봤는데 풀지 않았어?"가 된다. 이게 스트레스다. 일반 QA 때는 "버그 리포트했으니 할 일 다 했다"였다. 보안은 아니다. 내 리포트가 무시되면, 그 취약점이 터질 때 나한테도 책임이 있다. 화이트 해커지만 책임감은 검은색이다. 또 기술이 계속 변한다. 작년에 배운 공격 기법이 올해 막혀 있다. 새로운 프레임워크는 새로운 취약점을 만든다. GraphQL 들어왔을 때는 또 새로 배워야 했다. 마이크로서비스 아키텍처 가면 또 다르다. 쉬어본 적이 없다. 근데 이게 싫진 않다. 오히려 좋다. 지루하지 않다. 매일 새로운 공격 벡터를 생각하고, 매일 다른 시스템을 뚫어본다. 일반 QA 때는 테스트 케이스 만드는 게 반복이었다. 이제는 창의력이 필요하다. "이 시스템을 어떻게 깰까"는 매번 다른 문제다. 월급만 봐도 6배가 됐다. 4000만원에서 7000만원. 1년에 천만 원씩 올랐으니까, 이제 내 연봉은 업계에서 중상이다. 야근도 많지만, 야근을 야근이라고 생각하지 않는다. 취약점 찾다가 몰입하면 시간이 간다.일반 QA와 보안 QA, 정말 뭐가 다를까? 일반 QA: 기능이 작동하는가를 테스트한다. 시나리오 기반. 긍정적 사고. 보안 QA: 기능을 어떻게 파괴할까를 테스트한다. 공격 기반. 부정적 사고. 예를 들면, 결제 시스템: 일반 QA 테스트 케이스:상품 선택 → 결제 버튼 클릭 → 결제 완료 (성공) 금액 0원 입력 → 에러 메시지 표시 (성공) 카드 번호 미입력 → 에러 메시지 표시 (성공)보안 QA 테스트 케이스:결제 전에 amount 파라미터를 100원에서 1원으로 조작 (성공하면 취약점) 결제 API에 토큰 없이 직접 호출 (성공하면 인증 없음) 다른 유저의 결제 기록 접근 (성공하면 인가 우회) 결제 후 SQL Injection으로 거래 기록 조회 (성공하면 정보 유출) 결제 API를 1초에 1000번 호출 (성공하면 DDoS 가능)난 지난 3년을 이런 식으로 살고 있다. 일반 QA는 "맞다/틀렸다"를 판단했다면, 보안 QA는 "찢을 수 있는가"를 판단한다.앞으로 6년을 생각해보니 시간이 정말 빨랐다. 첫 달에 Burp Suite 앞에서 멍했던 나와 지금의 내가 같은 사람이 맞나 싶다. 지금 나는 모의해킹도 하고, CTF 대회도 나가고, 버그바운티도 한다. 입버릇이 "이 API 인증 없네?"가 됐다. 일반 QA에서 보안 QA로 전환한 게 인생 최고의 결정 중 하나다. 기술도 배웠고, 연봉도 올랐고, 무엇보다 일이 재미있어졌다. 근데 가끔 생각한다. 이 지식이 나쁜 데 쓰일 수도 있다는 걸. 내가 배운 모든 공격 기법은 방어에 써야 한다. 이게 화이트 해커와 블랙 해커의 차이다. 나는 후자가 되지 않기로 이미 정했다. 책임감이 있으니까. 앞으로 5년? 10년? 보안 쪽을 계속할 거 같다. 시장도 넓어지고 있고, 기술도 진화하고 있고, 뭐보다 나는 이 일을 좋아한다. 일반 QA에서 보안 QA로. 4년의 여정. 시작했을 때는 상상 못 했다.나는 여전히 배우고 있다.