보안 취약점 사전 CWE로 시작하는 시큐어 테스팅
"이 버그가 보안 이슈인가요, 아닌가요?"
QA 엔지니어로 일하다 보면 이런 질문을 자주 받게 됩니다. 기능 테스트는 자신 있게 하지만, 발견한 버그가 얼마나 심각한 보안 취약점인지 판단하기는 쉽지 않죠. 오늘은 전 세계적으로 표준화된 보안 취약점 분류 체계인 CWE(Common Weakness Enumeration)에 대해 알아보고, QA 엔지니어 관점에서 어떻게 활용할 수 있는지 살펴보겠습니다.
CWE(Common Weakness Enumeration)는 미국 MITRE Corporation에서 관리하는 소프트웨어 보안 취약점 분류 체계입니다. 쉽게 말해, 보안 취약점의 '사전'이라고 생각하면 됩니다. 각 취약점마다 고유 번호(CWE-XXX)가 부여되어 있어, 전 세계 개발자와 보안 전문가들이 같은 언어로 소통할 수 있게 해줍니다.
예를 들어, "SQL 인젝션 취약점이 있어요"라고 말하는 것보다 "CWE-89 문제가 발견되었습니다"라고 하면 더 명확하고 전문적으로 커뮤니케이션할 수 있습니다.
단순한 UI 버그와 보안 취약점은 우선순위가 완전히 다릅니다. CWE를 알면 발견한 버그가 얼마나 위험한지 즉시 파악할 수 있습니다.
"로그인할 때 이상한 문자 넣으면 에러가 나요"보다 "CWE-89 SQL Injection 가능성이 있습니다"라고 보고하면 개발팀이 문제의 심각성을 바로 인지합니다.
CWE Top 25를 기반으로 체계적인 보안 테스트 시나리오를 구성할 수 있습니다.
사용자 입력값이 SQL 쿼리에 그대로 삽입되어 데이터베이스를 조작할 수 있는 취약점
QA 엔지니어의 테스트 방법
입력 필드에 ' OR '1'='1 같은 SQL 구문 입력
특수문자 (', ", --, ;) 입력 시 에러 메시지 확인
검색 필드, 로그인 폼에서 중점적으로 테스트
악성 스크립트를 웹페이지에 삽입할 수 있는 취약점
QA 엔지니어의 테스트 방법
입력 필드에 "<script>alert('XSS')</script>" alert('XSS')입력
게시판, 댓글, 프로필 등 사용자 입력이 표시되는 모든 곳 테스트
URL 파라미터에 스크립트 삽입 시도
시스템 명령어를 실행할 수 있는 취약점
QA 엔지니어의 테스트 방법
파일 업로드, 검색 기능에서 ; ls, | whoami 같은 명령어 입력
파일명에 특수문자 포함하여 업로드
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.