Showing Posts From
취약점
- 03 Dec, 2025
SQL Injection과 XSS는 자동으로 눈에 들어온다 - 보안 QA의 강박관념
SQL Injection과 XSS는 자동으로 눈에 들어온다 - 보안 QA의 강박관념 눈에 보이는 게 달라졌다 아침 출근길. 지하철에서 폰으로 뉴스 앱 켰다. 로그인 화면 보자마자 머릿속에 자동으로 떠올랐다. '이 입력 폼, 파라미터 검증 되나?' 회사 도착. 엘리베이터 광고 화면에 QR코드. 스캔하라고 한다. '이거 redirect 검증했을까?' 병이다. 진짜 병. 보안 QA 4년차. 이제 직업병 수준이다. 웹사이트 하나 보면 자동으로 분석 모드 들어간다. F12 개발자 도구는 습관적으로 연다.어제 점심시간. 팀 회식 장소 검색했다. 맛집 예약 사이트 들어갔다. URL 파라미터에 id=123 보였다. 손이 자동으로 움직였다. id=123' OR 1=1-- 입력. 에러 페이지 떴다. MySQL syntax error. '역시. SQL Injection 취약점 있네.' 밥 먹으러 가는데 취약점부터 찾았다. 여자친구가 한숨 쉬었다. "또 시작이야?" 커피숍 WiFi는 전쟁터 주말 오후. 동네 카페 갔다. 노트북 켜고 작업하려는데. 공용 WiFi 보였다. 비밀번호 없음. 머릿속이 복잡해진다. '누가 패킷 스니핑하면? MITM 공격하면?' HTTPS 확인. 인증서 검증. VPN 켰다. 그제야 안심. 옆 테이블 대학생. 맥북으로 인터넷뱅킹 중. HTTP 사이트였다. 평문 통신. 말해주고 싶었다. 참았다. '내가 이상한 사람 되겠지.'집에서도 마찬가지다. 공유기 설정 2주마다 확인한다. 펌웨어 업데이트 알림 오면 바로 적용. 기본 비밀번호? 그런 거 없다. 여자친구가 놀러 왔다. "왜 WiFi 비밀번호가 32자야?" "WPA3 쓰고 있어. 안전해." "...그래." IoT 기기도 못 믿는다. 집에 있는 스마트 전구. 기본 설정으로 쓰는 사람 많다. 나는 펌웨어 뜯어봤다. 취약점 2개 발견. 제조사에 리포트 보냈다. 답은 없었다. 새 서비스는 샌드박스 회사에 신규 서비스 론칭 일주일 전. 개발팀에서 "테스트 좀 해주세요" 메시지. 내가 기다리던 순간이다. Burp Suite 켰다. 프록시 설정. 모든 요청 intercept 모드. 하나하나 뜯어본다. 첫 번째 발견. 회원가입 API. 이메일 검증 없음. HTML 태그 그대로 저장. Stored XSS 가능. 심각도 High. 두 번째. 비밀번호 찾기 기능. 토큰이 sequential 하다. 1, 2, 3, 4... 다른 사람 계정 접근 가능. Critical.세 번째. 관리자 페이지. /admin URL 직접 접근 시도. 인증 우회됐다. 권한 검증 없음. "이거 그냥 오픈하는 거예요?" 리포트 작성했다. A4 12장. 취약점 23개. Critical 5개, High 11개. 개발팀 팀장 얼굴이 하얗게 질렸다. "론칭 연기해야 할 것 같은데요." "예산이... 일정이..." "해킹당하면 더 비쌉니다." 결국 2주 연기. 다 고쳤다. 론칭 후 별 일 없었다. 아무 일 없는 게 내 일 잘한 거다. OWASP Top 10은 성경 보안 QA 처음 시작할 때. 선배가 말했다. "이거부터 외워." OWASP Top 10. 웹 보안 취약점 톱10. 지금은 자다가도 말할 수 있다.Broken Access Control Cryptographic Failures Injection Insecure Design Security Misconfiguration ...현장에서 가장 많이 보는 건. SQL Injection, XSS, CSRF. 클래식하지만 아직도 많다. 작년에 테스트한 서비스 30개. 26개에서 Injection 취약점 발견. 20개에서 XSS 가능. 15개에서 권한 검증 누락. 개발자들에게 물어봤다. "왜 안 막으세요?" "바쁘니까요. 나중에 하려고요." 나중은 없다. 해커는 지금 공격한다. 입력 폼 보면 자동 반응 식당 예약 사이트. 리뷰 작성란 봤다. 손가락이 자동으로 움직였다. <script>alert('XSS')</script> 엔터 쳤다. 새로고침. 팝업 떴다. 'XSS' 메시지. "역시나." 검색창도 마찬가지다. ' OR '1'='1 admin'-- <img src=x onerror=alert(1)> 습관적으로 입력한다. 정상 작동하면 실망한다. 에러 나면 희열 느낀다. 여자친구 쇼핑몰 앱 쓸 때. "이거 괜찮아?" "잠깐만." 폼 테스트 시작. "...그냥 사도 돼?" "아직 확인 중." 30분 뒤. "취약점 5개 발견. 다른 앱 써." "그냥 옷 사고 싶었는데..." 버그바운티는 부업 주말마다 한다. 버그바운티. HackerOne, Bugcrowd 같은 플랫폼. 기업들이 취약점 찾으면 돈 준다. 지난주 토요일. 집에서 작업. 글로벌 핀테크 기업 프로그램 참여. 4시간 테스트. IDOR 취약점 발견. 다른 사람 계좌 정보 볼 수 있었다. 리포트 제출. Critical 등급. 일주일 뒤 답장 왔다. "$3000 보상. 감사합니다." 환율 계산. 약 400만원. 주말 4시간 투자로 400만원. 시급으로 치면 100만원. 회사 월급보다 나을 때 있다. 작년 버그바운티 수입. 총 $15000. 약 2000만원. 용돈 수준 아니다. 부수입 쏠쏠하다. 하지만 매번 찾는 건 아니다. 10개 테스트하면 2~3개 발견. 운도 따라야 한다. 먼저 찾은 사람이 임자. 개발자와의 줄다리기 보안 QA의 숙명. 개발팀과 싸우는 것. "이거 취약점입니다." "근데 영향도가 낮잖아요?" "지금은 낮아도 조합하면 심각합니다." "일정이 촉박한데..." 매번 반복되는 대화. 보안은 항상 우선순위 밀린다. 기능 개발이 먼저. 보안은 '나중에'. 작년 프로젝트. XSS 취약점 리포트 5개 올렸다. 2개만 수정됐다. 3개는 '차기 버전에'. 3개월 뒤. 해당 취약점으로 공격 시도 로그 발견. 다행히 막았다. 개발팀에 다시 얘기했다. "그때 말씀드렸던 건데요." "...수정하겠습니다." 말이 통하는 개발자도 있다. 보안 의식 있는 사람. 코드 짤 때부터 고려한다. 입력 검증, 출력 인코딩, 파라미터화된 쿼리. 그런 개발자 만나면 행복하다. 일이 술술 풀린다. 취약점 적게 나온다. 서로 존중한다. 실제 해킹 사고 났을 때 2년 전 일이다. 경쟁사에서 해킹 사고 났다. 고객 정보 10만 건 유출. 뉴스 봤다. SQL Injection 공격이었다. 기본 중의 기본. '내가 테스트했으면 막았을 텐데.' 우리 회사 긴급 회의. "우리도 점검합시다." 일주일 동안 전수 조사. 밤샘 작업 3일. 발견된 취약점 47개. Critical 3개 즉시 수정. High 등급 일주일 내 패치. Medium 이하 2주 내. 그때 느꼈다. 사고 나기 전에 막는 게 내 일. 조용히 위험을 제거하는 것. 티 안 나는 영웅. 해킹당한 회사 보안팀. 다 잘렸다고 들었다. '보안팀 뭐했어?' 비난. 마음이 아팠다. 우리도 언제든 당할 수 있다. 완벽한 보안은 없다. 제로데이 공격, APT, 내부자 위협. 할 수 있는 건 최선을 다하는 것. 공격자처럼 생각하기 보안 QA의 핵심. 공격자 관점으로 생각한다. '내가 해커라면 어떻게 뚫을까?' 일반 QA와 다른 점. 그들은 정상 시나리오 테스트. 우리는 비정상 시나리오. 상상력이 무기다. 로그인 기능 테스트. 일반 QA: 올바른 ID/PW 입력. 보안 QA: SQL Injection 시도 Brute Force 공격 Session Hijacking CSRF 토큰 검증 Rate Limiting 확인파일 업로드 기능. 일반 QA: 정상 파일 업로드. 보안 QA:악성 스크립트 업로드 확장자 우회 시도 대용량 파일로 DoS 경로 조작 (Path Traversal)항상 묻는다. "이걸 악용하면 뭐가 가능할까?" "이 기능을 의도와 다르게 쓰면?" "여러 취약점을 조합하면?" 동료들이 말한다. "너는 항상 나쁜 쪽으로 생각하네." 맞다. 그게 내 일이다. 선한 의도로 나쁜 생각을 한다. 화이트 해커의 자부심 술자리에서 자기소개. "보안 QA 합니다." "해커세요?" "화이트 해커요." 블랙 해커와 다르다. 우리는 선한 편. 시스템 지키는 사람. 공격 기술은 같지만 목적이 다르다. 가끔 유혹 있다. 발견한 취약점 악용하면? 고객 정보 팔면 돈 된다. 암호화폐 거래소 뚫으면 대박. 하지만 안 한다. 윤리 문제도 있고. 무엇보다 자부심이 있다. 내가 지키는 시스템. 내가 보호하는 고객. 화이트 해커 커뮤니티. 서로 존중한다. 발견한 취약점 공유. 제로데이 정보 교환. 다 공익을 위해서. 블랙 해커 되면 돈 더 벌까? 모르겠다. 안 해봐서. 지금도 만족한다. 연봉 7000에 버그바운티 2000. 떳떳하게 번다. 끝없는 공부 보안 분야는 빠르다. 매일 새로운 취약점. 매주 새로운 공격 기법. 공부 안 하면 도태된다. 아침마다 체크하는 것들.CVE 최신 목록 OWASP 블로그 /r/netsec 서브레딧 보안 뉴스 사이트퇴근 후 루틴. 온라인 강의 듣기. HackTheBox, TryHackMe 문제 풀기. 보안 서적 읽기. 새 툴 테스트. 주말엔 CTF 대회. Capture The Flag. 해킹 경진대회. 세계 각국 화이트 해커들. 밤새워 문제 푼다. 작년에 팀 결성했다. "SeoulSec". 4명. 국내 대회 3등. 상금 300만원 나눴다. 돈보다 실력 향상이 목적. 자격증도 땄다. CEH (Certified Ethical Hacker) OSCP (Offensive Security Certified Professional) 다음은 CISSP 준비 중. 공부 안 하면 불안하다. 내가 모르는 공격 기법. 누군가는 알고 있다. 그걸로 우리 시스템 공격할 수 있다. 일상이 된 강박 이제 꺼낼 수가 없다. 보안 마인드셋. 일상에 스며들었다. 마트에서 카드 긁을 때. 단말기 확인한다. 스키밍 장치 없는지. 주변에 카메라 없는지. ATM 쓸 때도. 키패드 가린다. 뒤에 사람 확인. 카드 즉시 회수. 공공장소 USB 충전기. 절대 안 쓴다. Juice Jacking 가능. 보조배터리 항상 휴대. 여자친구와 여행. 호텔 WiFi 안 믿는다. 스마트 TV도 끈다. 카메라 가릴 수 있으면 가린다. "너무 예민한 거 아니야?" "직업병이야." "좀 쉬어." "이게 쉬는 거야." 집 현관 도어락. 지문 인식 안 쓴다. 비밀번호도 한 달마다 바꾼다. CCTV는 네트워크 분리. 스마트폰 설정. 불필요한 권한 다 껐다. 앱 최소한으로. 루팅 절대 안 함. "넌 편하게 못 살아?" 맞다. 못 산다. 하지만 안전하다. 그게 나한테는 편한 거다. 보안은 투자다 경영진 설득이 제일 어렵다. "보안에 얼마 들어갑니까?" "연 5억 정도 필요합니다." "매출에 기여는?" 설명한다. 보안은 비용이 아니다. 투자다. 보험이다. 사고 나면 손실이 더 크다. 데이터 유출 시. 고객 보상. 법적 대응. 브랜드 이미지 타격. 수십억 날아간다. 실제 사례 보여준다. 경쟁사 해킹 사고. 피해액 200억. 우리 보안 예산 5억. 40배 차이. "그래도 우린 안 당할 수도..." "100% 안전은 없습니다." "하지만 확률을 낮출 순 있습니다." "그게 제 일입니다." 설득 성공하면 예산 나온다. 새 보안 장비. 외부 모의해킹 용역. 직원 보안 교육. 다 필요한 것들. 실패하면 기존 예산으로 버틴다. 오픈소스 툴 활용. 직접 스크립트 짠다. 시간이 더 걸릴 뿐. 결과는 내야 한다. 보안 QA의 미래 이 일 언제까지 할까. 생각해본다. 보안 수요는 늘어난다. 클라우드, IoT, AI. 새 기술마다 새 위협. 일감은 줄지 않는다. 경력 쌓으면 선택지 많다. 보안 컨설턴트. CISO (Chief Information Security Officer). 보안 솔루션 개발. 강의, 집필. 나는 현장이 좋다. 직접 뚫어보는 재미. 취약점 찾는 쾌감. 시스템 지키는 보람. 10년 뒤엔? 팀장 되어 있을까. 후배 가르치고 있을까. 아니면 프리랜서? 확실한 건. 이 일은 평생 할 수 있다. 기술은 계속 배우면 된다. 열정만 있으면. 요즘 고민. 유튜브 채널 열까. '보안 QA의 일상'. 취약점 분석 영상. 보안 입문자 도움될 것 같다. 여자친구는 찬성. "네 얘기 재밌어." "근데 회사 기밀은 조심해." 알고 있다. 당연히. 그래도 이 일이 좋다 피곤하다. 스트레스 많다. 항상 긴장한다. 불안하다. 완벽할 수 없다. 한계 있다. 그래도. 취약점 찾았을 때. "이거 Critical입니다." 개발팀이 급히 고친다. 사고 막은 거다. 론칭 후 무사할 때. 아무 일 없이 서비스 돈다. 뉴스에 안 나온다. 내가 한 일이다. 고객들은 모른다. 내가 뭘 막았는지. 얼마나 위험했는지. 그래도 괜찮다. 화이트 해커. 선한 해커. 시스템 지키는 사람. 자부심 있다. 새벽 2시. 아직 모의해킹 중. Admin 권한 탈취 성공. "역시 여기 뚫리네." 리포트 쓴다. 재현 방법 상세히. 수정 방안까지. 책임감 있게. 내일 개발팀 회의. 또 설득해야 한다. "이거 고쳐야 합니다." 언제나처럼.취약점 찾는 게 일이지만, 없는 게 제일 좋은 일이다. 모순이지만 그게 보안이다.