OWASP Top 10은 웹 애플리케이션 보안 위험에 대해 가장 널리 참조되는 목록으로, 신뢰받는 비영리 단체인 Open Worldwide Application Security Project (OWASP) 에서 발행합니다. 보안 전문가를 위해 작성되었지만, 여기서 설명하는 위험은 데이터 유출, 서비스 중단, 과징금, 신뢰 상실 등 직접적인 사업상 결과를 초래합니다. 이 가이드는 각 범주를 쉬운 말로 설명하여, 여러분이 자사 애플리케이션에 대해 올바른 질문을 던질 수 있도록 돕습니다.
OWASP는 공격 패턴이 변화함에 따라 몇 년마다 목록을 개정합니다. 아래 범주는 대부분의 팀에게 여전히 표준 참조로 남아 있는, 잘 확립된 2021년 개정판을 반영합니다. 순위는 바뀌더라도 근본적인 위험은 안정적입니다.
요약
- OWASP Top 10은 웹 애플리케이션에서 가장 심각한 보안 위험을 담은 업계 표준 목록입니다
- 가장 큰 범주는 접근 제어, 취약한 암호화, 인젝션 결함, 그리고 초기에 내려진 안전하지 않은 설계 결정에 관한 것입니다
- 이러한 위험 대부분은 몇 가지 근본 원인으로 귀결됩니다. 누락된 검증, 잘못된 구성, 오래된 구성 요소, 그리고 부적절한 모니터링입니다
- 각 항목의 대응에 대해 팀이나 공급업체에 책임을 묻기 위해 기술자가 될 필요는 없습니다
1. 취약한 접근 제어 (Broken Access Control)
의미: 사용자가 해서는 안 될 일을 하거나 봐서는 안 될 것을 볼 수 있는 상태입니다. 예를 들어 URL의 ID를 변경해 다른 고객의 데이터를 열람하거나, 관리자가 아닌데도 관리자 기능에 접근하는 경우입니다.
중요한 이유: 이는 지속적으로 가장 흔하고 피해가 큰 위험 중 하나입니다. 데이터 노출과 무단 작업으로 직접 이어집니다.
팀에게 물어볼 것: 권한이 인터페이스에 숨겨져 있는 것이 아니라, 모든 요청에 대해 서버에서 강제되고 있습니까?
2. 암호화 실패 (Cryptographic Failures)
의미: 민감한 데이터(비밀번호, 결제 정보, 개인정보)가 제대로 보호되지 않는 상태입니다. 예를 들어 전송 중이나 저장 시 암호화되지 않거나, 취약하거나 오래된 알고리즘으로 보호되는 경우입니다.
중요한 이유: 노출된 민감 데이터는 침해를 유발하며, GDPR에 따라 잠재적 과징금과 의무적 통지로 이어집니다.
팀에게 물어볼 것: 모든 트래픽이 HTTPS를 통해 이루어지며, 민감한 데이터는 최신 알고리즘으로 저장 시 암호화되어 있습니까?
3. 인젝션 (Injection)
의미: 신뢰할 수 없는 입력이 명령으로 처리되어, 공격자가 데이터베이스를 조작(SQL injection)하거나 의도하지 않은 작업을 실행할 수 있는 상태입니다. 크로스 사이트 스크립팅(XSS)도 여기에 포함됩니다.
중요한 이유: 인젝션은 데이터베이스 전체를 노출하거나 파괴할 수 있고, 사용자 세션을 탈취할 수 있습니다.
팀에게 물어볼 것: 파라미터화된 쿼리를 사용하고, 모든 사용자 입력을 검증하고 인코딩하고 있습니까?
4. 안전하지 않은 설계 (Insecure Design)
의미: 보안 취약점이 코드뿐 아니라 설계 자체에 있는 상태입니다. 예를 들어 악용될 수 있는 비밀번호 재설정 흐름이나, 브라우저가 보낸 가격을 신뢰하는 결제 처리 등이 있습니다.
중요한 이유: 설계 결함은 나중에 패치로 없앨 수 없으며, 해당 기능을 다시 설계해야 합니다. 보안은 처음부터 고려되어야 합니다.
팀에게 물어볼 것: 중요한 기능을 구축하기 전에 위협 모델링을 수행합니까?
5. 보안 설정 오류 (Security Misconfiguration)
의미: 안전하지 않은 기본 설정, 활성화된 채 남아 있는 불필요한 기능, 지나치게 상세한 오류 메시지, 또는 누락된 보안 헤더 등입니다.
중요한 이유: 설정 오류는 매우 흔하며, 공격자가 찾아내어 악용하기 쉬운 경우가 많습니다.
팀에게 물어볼 것: 기본 계정이 제거되고, 사용하지 않는 기능이 비활성화되며, 보안 헤더가 적용되어 있습니까?
6. 취약하고 오래된 구성 요소 (Vulnerable and Outdated Components)
의미: 애플리케이션이 알려진 취약점을 가진 채 업데이트되지 않은 서드파티 라이브러리, 프레임워크, 플러그인에 의존하는 상태입니다.
중요한 이유: 공격자는 알려진 취약 구성 요소를 대규모로 스캔합니다. 많은 대규모 침해가 패치되지 않은 종속성으로 거슬러 올라갑니다.
팀에게 물어볼 것: 종속성을 추적하고, 취약점이 공개되면 즉시 업데이트하고 있습니까?
7. 식별 및 인증 실패 (Identification and Authentication Failures)
의미: 취약한 로그인 시스템입니다. 부실한 비밀번호 정책, 무차별 대입 공격(brute force)에 대한 보호 부재, 취약한 세션 관리, 또는 다중 인증의 부재 등입니다.
중요한 이유: 침해된 계정은 데이터와 기능으로 향하는 직접적인 경로입니다.
팀에게 물어볼 것: 다중 인증(MFA)을 제공하고, 크리덴셜 스터핑과 무차별 대입 공격으로부터 보호하고 있습니까?
8. 소프트웨어 및 데이터 무결성 실패 (Software and Data Integrity Failures)
의미: 검증되지 않은 출처의 코드, 업데이트, 데이터를 신뢰하는 것입니다. 예를 들어 안전하지 않은 소프트웨어 업데이트 메커니즘이나 침해된 빌드 파이프라인(공급망 위험) 등이 있습니다.
중요한 이유: 공급망 공격은 증가하고 있으며, 하나의 신뢰된 채널을 통해 다수의 피해자를 한 번에 침해할 수 있습니다.
팀에게 물어볼 것: 업데이트와 종속성의 무결성을 검증하고, 빌드 및 배포 파이프라인을 보호하고 있습니까?
9. 보안 로깅 및 모니터링 실패 (Security Logging and Monitoring Failures)
의미: 보안 관련 이벤트를 기록하지 않거나 감시하지 않아, 공격이 오랫동안 발견되지 않는 상태입니다.
중요한 이유: 보이지 않는 것에는 대응할 수 없습니다. 부실한 모니터링이 바로 침해가 수개월간 탐지되지 않는 이유입니다.
팀에게 물어볼 것: 보안 이벤트를 기록하고, 의심스러운 활동에 대해 경보를 발생시키고 있습니까?
10. 서버 측 요청 위조 (SSRF)
의미: 공격자가 서버를 속여, 요청해서는 안 될 시스템으로 요청을 보내게 하여, 공개되어서는 안 될 내부 서비스에 도달할 수 있는 상태입니다.
중요한 이유: SSRF는 내부 인프라와 클라우드 메타데이터를 노출할 수 있으며, 중대한 침해에도 등장한 바 있습니다.
팀에게 물어볼 것: 우리 서버가 호출할 수 있는 대상을 검증하고 제한하고 있습니까?
핵심 요점
- OWASP Top 10은 웹 애플리케이션 보안 위험에 대한 표준 참조입니다. 대부분의 항목은 누락된 검증, 잘못된 구성, 오래된 구성 요소, 취약한 모니터링으로 귀결됩니다.
- 접근 제어, 암호화, 인젝션, 안전하지 않은 설계가 영향이 가장 큰 범주입니다.
- 각 위험에 대해 팀이나 공급업체에 책임을 묻기 위해 기술자가 될 필요는 없습니다. 위 질문들이 좋은 출발점입니다.
- 자사의 현황을 가장 확실하게 아는 방법은 독립적인 테스트입니다.
OWASP Top 10에 비추어 사이트 테스트하기
위 질문은 대화의 시작점이며, 답을 주는 것은 전문적인 테스트입니다. 애플리케이션 보안 테스트 는 정적 코드 분석, 동적 런타임 테스트, 종속성 및 공급망 감사, 인증과 암호화 검토를 결합하여 실제 애플리케이션에서 이러한 위험을 찾아내며, 위험 등급이 매겨진 결과와 개선 지침을 제공합니다. 운영 중인 사이트를 보호하는 폭넓은 관점을 원하신다면 영국 기업을 위한 웹사이트 보안 감사 가이드 를 참고하세요.
자주 묻는 질문 (FAQ)
OWASP Top 10이란 무엇입니까? 웹 애플리케이션에서 가장 심각한 10가지 보안 위험을 정기적으로 업데이트하는 목록으로, Open Worldwide Application Security Project (OWASP)에서 발행합니다. 애플리케이션 보안 작업의 우선순위를 정하기 위한 업계 표준 참조입니다.
OWASP Top 10은 완전한 보안 표준입니까? 아니요. 가장 심각한 위험을 다루는 인식 제고 및 우선순위 지정 문서이며, 모든 것을 망라한 체크리스트가 아닙니다. 더 깊은 테스트와 안전한 개발 관행과 함께 출발점으로 활용하세요.
OWASP Top 10은 얼마나 자주 업데이트됩니까? OWASP는 데이터와 공격 패턴이 변화함에 따라 몇 년마다 개정합니다. 범주는 진화하고 순위가 재조정되지만, 근본적인 위험은 대체로 안정적으로 유지되므로 개정 사이에도 개념은 유효합니다.
어떤 OWASP 위험이 가장 위험합니까? 애플리케이션에 따라 다르지만, 취약한 접근 제어와 인젝션은 역사적으로 가장 흔하고 피해가 큰 것에 속했습니다. 여러분에게 맞는 우선순위는 특정 애플리케이션이 어떻게 구축되고 어느 정도 노출되어 있는지에 달려 있습니다.
내 애플리케이션이 영향을 받는지 어떻게 알 수 있습니까? 유일하게 신뢰할 수 있는 방법은 테스트입니다. 정적 분석, 동적 테스트, 그리고 실제 코드베이스와 실행 중인 애플리케이션에 대한 종속성 감사를 수행합니다. 전문적인 애플리케이션 보안 테스트는 여러분의 위험을 이러한 범주에 매핑하고 우선순위가 매겨진 수정 사항을 제시합니다.
댓글