brunch

QA 엔지니어도 해커가 되어야 한다

보안 취약점 사전 CWE로 시작하는 시큐어 테스팅

by 제임스
"이 버그가 보안 이슈인가요, 아닌가요?"

QA 엔지니어로 일하다 보면 이런 질문을 자주 받게 됩니다. 기능 테스트는 자신 있게 하지만, 발견한 버그가 얼마나 심각한 보안 취약점인지 판단하기는 쉽지 않죠. 오늘은 전 세계적으로 표준화된 보안 취약점 분류 체계인 CWE(Common Weakness Enumeration)에 대해 알아보고, QA 엔지니어 관점에서 어떻게 활용할 수 있는지 살펴보겠습니다.



CWE란 무엇인가?

CWE(Common Weakness Enumeration)는 미국 MITRE Corporation에서 관리하는 소프트웨어 보안 취약점 분류 체계입니다. 쉽게 말해, 보안 취약점의 '사전'이라고 생각하면 됩니다. 각 취약점마다 고유 번호(CWE-XXX)가 부여되어 있어, 전 세계 개발자와 보안 전문가들이 같은 언어로 소통할 수 있게 해줍니다.

예를 들어, "SQL 인젝션 취약점이 있어요"라고 말하는 것보다 "CWE-89 문제가 발견되었습니다"라고 하면 더 명확하고 전문적으로 커뮤니케이션할 수 있습니다.



QA 엔지니어가 CWE를 알아야 하는 이유

1. 버그의 심각도를 정확히 판단할 수 있다.

단순한 UI 버그와 보안 취약점은 우선순위가 완전히 다릅니다. CWE를 알면 발견한 버그가 얼마나 위험한지 즉시 파악할 수 있습니다.

2. 개발팀과 효과적으로 소통할 수 있다.

"로그인할 때 이상한 문자 넣으면 에러가 나요"보다 "CWE-89 SQL Injection 가능성이 있습니다"라고 보고하면 개발팀이 문제의 심각성을 바로 인지합니다.

3. 보안 테스트 체크리스트를 만들 수 있다.

CWE Top 25를 기반으로 체계적인 보안 테스트 시나리오를 구성할 수 있습니다.



QA 엔지니어가 꼭 알아야 할 CWE Top 10

1. CWE-89: SQL Injection

사용자 입력값이 SQL 쿼리에 그대로 삽입되어 데이터베이스를 조작할 수 있는 취약점

QA 엔지니어의 테스트 방법

입력 필드에 ' OR '1'='1 같은 SQL 구문 입력

특수문자 (', ", --, ;) 입력 시 에러 메시지 확인

검색 필드, 로그인 폼에서 중점적으로 테스트

2. CWE-79: Cross-site Scripting (XSS)

악성 스크립트를 웹페이지에 삽입할 수 있는 취약점

QA 엔지니어의 테스트 방법

입력 필드에 "<script>alert('XSS')</script>" alert('XSS')입력

게시판, 댓글, 프로필 등 사용자 입력이 표시되는 모든 곳 테스트

URL 파라미터에 스크립트 삽입 시도

3. CWE-78: OS Command Injection

시스템 명령어를 실행할 수 있는 취약점

QA 엔지니어의 테스트 방법

파일 업로드, 검색 기능에서 ; ls, | whoami 같은 명령어 입력

파일명에 특수문자 포함하여 업로드

4. CWE-20: 부적절한 입력 검증

지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.

brunch membership
제임스작가님의 멤버십을 시작해 보세요!

소프트웨어 QA의 인식 개선을 위해 노력하고 있습니다. 쉽고 재밌는 주제로 다가가겠습니다.

101 구독자

오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠

  • 총 9개의 혜택 콘텐츠
최신 발행글 더보기
작가의 이전글실패를 설계하는 사람들