앱 보안 허점 검사하기
핵심 요약보안을 열고 보안 검사 실행을 클릭하세요. 1~2분이면 MonstarX가 규칙 33개로 코드를 검사하고, 외부인처럼 실행 중인 앱을 점검하고, AI가 앱 전체를 읽습니다. A부터 F까지의 등급이 매겨진 점수와 심각한 순서대로 정렬된 발견 사항 목록을 받습니다. 각 항목에는 위치, 중요한 이유, 바꿀 점이 나옵니다. 고칠 항목을 고르면 MonstarX가 일반 빌드로 고친 뒤 다시 검사합니다. 결과는 보고서로 다운로드할 수 있습니다.
빠르게 만든 앱은 브라우저를 너무 믿는 경향이 있습니다. 누구나 호출할 수 있는 함수, 누구의 것인지 확인하지 않고 번호로만 조회하는 예약, 페이지에서 받아 그대로 쓰는 가격 같은 것들입니다. 공격자는 바로 이런 빈틈을 찾습니다.
보안 탭은 공격자의 시선으로 앱을 읽고, 발견한 문제를 심각한 순서대로 보여 주며, 고치는 것을 돕습니다. MonstarX에 내장된 작은 모의 해킹(누군가 일부러 침입을 시도해 보는 보안 점검)이라고 생각하면 됩니다.
보안 검사는 어떻게 실행하나요?
섹션 제목: “보안 검사는 어떻게 실행하나요?”-
프로젝트를 열고 상단 바의 보안을 클릭하세요.
-
보안 검사 실행을 클릭하세요. 1~2분 정도 걸립니다.
-
세 부분이 차례로 끝나는 것을 지켜보세요. 탭을 떠나도 됩니다. 검사는 MonstarX 서버에서 실행되므로 계속 진행됩니다. 취소를 누르면 검사가 멈추고, 그때까지 발견한 내용은 남습니다.
검사가 진행되는 동안 상단 바의 보안 탭 배지에 로딩 표시가 돌고, 끝나면 미해결 발견 사항의 수(가장 심각한 항목의 색으로 표시)가 나오거나, 미해결 문제가 없으면 초록색 점이 표시됩니다. 나중에 다시 검사하려면 탭 위쪽의 다시 검사를 클릭하세요.
검사는 무엇을 확인하나요?
섹션 제목: “검사는 무엇을 확인하나요?”검사는 세 부분으로 이루어집니다.
| 부분 | 하는 일 | 비용 |
|---|---|---|
| 코드 검사 | 규칙 33개를 앱의 모든 파일에 적용합니다. 빠진 로그인 확인, 소유자를 확인하지 않고 바뀌는 레코드, 코드에 적힌 시크릿, 텍스트로 조립한 데이터베이스 쿼리, 안전하지 않은 HTML, 검사하지 않은 업로드, 검증하지 않은 웹훅 등을 찾습니다. | 무료 |
| 실행 중인 앱 점검 | 계정이 없는 외부인으로서 실행 중인 앱에 읽기 전용 요청을 보냅니다. 로그인한 사람용 페이지, 누구에게나 응답하는 경로, 교차 출처 접근을 확인하고, 게시된 앱이라면 보안 헤더와 절대 제공되면 안 되는 파일도 확인합니다. | 무료 |
| AI 검토 | AI 모델이 발견 사항을 참고하며 앱 전체를 읽고, 각 항목을 확인하거나 배제합니다. 페이지에서 받은 가격을 그대로 믿는 경우나, 페이지가 보내지만 화면에 보여 주지 않는 데이터처럼 코드를 읽어야만 찾을 수 있는 문제도 찾습니다. | 대화 모드 요청처럼 크레딧 사용 |
실행 중인 앱 점검은 앱이 공개되어 있으면 게시된 앱을, 아니면 미리보기를 대상으로 합니다. 결과에 어느 쪽을 점검했는지 표시됩니다.
OWASP Top 10과 CWE는 무엇인가요?
섹션 제목: “OWASP Top 10과 CWE는 무엇인가요?”OWASP는 웹 앱 보안 위험 중 가장 심각한 유형을 정리한, 가장 잘 알려진 목록인 Top 10을 발표하는 비영리 단체입니다. 모든 발견 사항은 이 중 하나로 분류되므로, 나(또는 보안 전문가)는 어떤 종류의 문제인지 알 수 있습니다.
| 쉬운 말로 | |
|---|---|
| A01 접근 제어 결함 | 자기 것이 아닌 것을 보거나 바꿀 수 있습니다. |
| A02 암호화 실패 | 비밀 정보나 코드가 약한 방식으로 저장되거나 만들어집니다. |
| A03 인젝션 | 누군가 입력한 텍스트가 명령이나 코드로 실행됩니다. |
| A04 안전하지 않은 설계 | 무제한 무료 이메일이나 예약처럼 앱의 로직이 악용될 수 있습니다. |
| A05 보안 구성 오류 | 보안 헤더가 빠진 것처럼 설정이 너무 열려 있습니다. |
| A06 취약하고 오래된 구성 요소 | 알려진 허점이 있는 오래된 소프트웨어입니다. |
| A07 식별 및 인증 실패 | 로그인이나 세션 처리가 약합니다. |
| A08 소프트웨어 및 데이터 무결성 오류 | 외부에서 온 코드나 데이터를 확인하지 않고 믿습니다. |
| A09 보안 로깅 및 모니터링 실패 | 비밀 정보가 로그에 새어 나가거나, 공격이 눈에 띄지 않고 지나갑니다. |
| A10 서버 측 요청 위조 | 공격자가 고른 주소를 앱이 가져오게 만들 수 있습니다. |
CWE(Common Weakness Enumeration)는 구체적인 약점에 번호를 붙인 목록입니다. 예를 들어 ‘CWE-639: 사용자가 조작할 수 있는 ID로 레코드를 조회하는 경우’ 같은 것입니다. 발견 사항마다 OWASP 분류로 가는 링크와, 해당하는 경우 CWE 페이지 링크가 있어 더 자세히 읽어 볼 수 있습니다.
결과는 어떻게 읽나요?
섹션 제목: “결과는 어떻게 읽나요?”위쪽에 100점 만점의 점수와 A부터 F까지의 등급, 심각도별 미해결 발견 사항, 검사하고 점검한 대상, AI 검토 비용, 그리고 몇 문장으로 된 검토 요약이 표시됩니다.
점수는 100점에서 시작해 심각 항목 하나당 40점, 높음 하나당 15점, 보통 하나당 5점, 낮음 하나당 1점씩 깎입니다. 등급을 보면 다음에 할 일을 알 수 있습니다.
| 등급 | 점수 | 의미 |
|---|---|---|
| A | 90~100 | 심각한 문제가 발견되지 않았습니다. |
| B | 75~89 | 정리할 부분이 몇 가지 있습니다. |
| C | 55~74 | 더 많은 사람이 쓰기 전에 높음 항목을 고치세요. |
| D | 35~54 | 심각한 빈틈이 있습니다. 게시하기 전에 고치세요. |
| F | 0~34 | 지금 상태로는 공격에 노출되어 있습니다. |
발견 사항마다 심각도, 제목, OWASP 분류, CWE, 출처(코드 검사, 실행 중인 앱 점검, AI 검토), 검사의 확신 정도(확인됨, 가능성 높음, 검토 필요), 파일과 줄 번호가 표시됩니다. 항목을 클릭하면 열립니다.
- 해당 줄이 표시된 주변 코드.
- 무엇이 잘못되었는지, 왜 중요한가요?, 무엇을 바꿔야 할까요?가 쉬운 말로 나옵니다.
- AI 검토 메모: 발견 사항을 확인했는지, 어떻게 확인했는지.
- 코드에서 열기를 누르면 코드 탭의 해당 파일로 이동합니다.
AI 검토가 오탐이라고 판단하면 AI 검토: 실제 문제가 아닐 가능성이 높음이라고 표시합니다. 그 항목은 목록 맨 아래에 남지만 점수에는 반영되지 않습니다.
목록 아래의 확인한 내용을 열면 실행된 모든 검사가 OWASP 분류별로 묶여 표시됩니다. 각 검사에 체크 표시, 발견 사항 수, 또는 건너뛴 이유가 나옵니다.
발견한 문제는 어떻게 고치나요?
섹션 제목: “발견한 문제는 어떻게 고치나요?”-
고칠 발견 사항을 체크하거나 …개 모두 선택을 클릭하세요. 발견 사항 2개 수정 버튼이 나타납니다. 빌드가 진행 중일 때는 회색으로 비활성화됩니다.
-
버튼을 클릭하세요. MonstarX가 어떤 일이 일어나는지 알려 주면, 발견 사항 2개 수정을 다시 클릭하세요.
-
각 발견 사항은 기능 계획의 작업(보안: …)이 됩니다. 계획이 거의 찼다면 작업 하나로 묶입니다. 그리고 보안 배지가 붙은 빌드 요청 하나가 대화로 전송됩니다. 일반 요청처럼 실행되고, 버전이 남으며, 그 뒤에 QA가 앱을 테스트할 수도 있습니다.
-
빌드가 끝나면 검사가 자동으로 다시 실행됩니다. 사라진 발견 사항은 해결됨으로 표시됩니다(MonstarX 에이전트가 2개 수정). 아직 남아 있는 항목은 수정 후에도 문제가 남아 있음 표시와 함께 다시 나타납니다.
실제 문제가 아닌 발견 사항은 어떻게 하나요?
섹션 제목: “실제 문제가 아닌 발견 사항은 어떻게 하나요?”항목을 열고 보류를 클릭한 다음 이유를 고르세요.
- 실제 문제가 아닙니다
- 감수한 위험: 알고 있으며 받아들이기로 한 위험입니다.
- 다른 방식으로 처리됨
보류한 발견 사항은 보류 목록으로 옮겨지고, 다른 코드가 바뀌어도 이후 모든 검사에서 그대로 보류 상태를 유지합니다. 다시 목록에 넣으려면 다시 표시를 클릭하세요.
보안 보고서는 어떻게 다운로드하나요?
섹션 제목: “보안 보고서는 어떻게 다운로드하나요?”결과 아래쪽의 보고서 다운로드를 클릭하세요. paws-co-booking-security-report.md처럼 프로젝트 이름이 붙은 Markdown 파일(어떤 편집기에서도 열리는 일반 텍스트 문서)을 받습니다. 모의 해킹 보고서 형식으로 구성되어 있습니다.
- 범위 및 방법: 규칙 몇 개를 파일 몇 개에 적용했는지, 무엇을 점검했는지, AI 검토가 무엇을 했는지.
- 요약: 점수, 심각도별 미해결 발견 사항, 검토 요약.
- 발견 사항: 각 항목의 OWASP와 CWE 링크, 위치, 코드, 문제 내용, 중요한 이유, 바꿀 점.
- 이전 검사 이후 해결됨, 그리고 내가 적은 이유와 함께 소유자가 보류한 항목.
- 검사: 모든 검사와 그 결과.
개발자, 고객, 감사 담당자와 공유하기 좋습니다. 보고서는 검사가 끝난 뒤에 받을 수 있습니다.
자주 묻는 질문
섹션 제목: “자주 묻는 질문”검사는 무료인가요?
코드 검사와 실행 중인 앱 점검은 무료입니다. AI 검토는 대화 모드 요청처럼 크레딧을 쓰며, 결과에 비용이 표시됩니다. 발견 사항을 고칠 때는 일반 빌드처럼 크레딧이 듭니다.
등급이 좋으면 앱이 안전하다는 뜻인가요?
어떤 검사도 그렇게 보장할 수는 없습니다. 검사는 규칙, 점검, 검토로 볼 수 있는 것을 찾습니다. 심각과 높음 항목부터 고치고 다시 검사하세요. 돈이나 개인 정보를 다루는 부분은 많은 사람이 쓰기 전에 사람이 직접 검토하게 하세요.
게시하기 전에 검사해야 하나요, 후에 해야 하나요?
둘 다 하세요. 게시하기 전에 검사해 큰 허점을 잡으세요. 앱이 공개된 뒤에도 다시 검사하세요. 보안 헤더나 절대 제공되면 안 되는 파일 같은 일부 검사는 게시된 앱에서만 실행됩니다.
프로젝트를 공유받은 사람도 검사 결과를 볼 수 있나요?
아니요. 검사 결과에는 모든 약점이 드러나므로 보안 탭은 소유자만 볼 수 있습니다.
MonstarX 자체의 로그인과 데이터베이스 코드도 검사하나요?
아니요. 그 부분은 모든 앱에서 똑같고 MonstarX가 관리합니다. 검사는 내 앱을 위해 작성된 코드와 실행 중인 앱을 확인합니다.
검사를 시작할 때 빌드가 진행 중이면 어떻게 되나요?
검사는 완성된 코드를 확인하기 위해 빌드가 끝날 때까지(최대 10분) 기다립니다.