OWASP Top Ten의 새로운 위험 범주: 예기치 못한 상황에 대비하기
.avif)
OWASP가 2025 Top Ten을 발표함에 따라, 기업들은 새로운 위험 범주들에 각별히 주의를 기울여야 합니다. 특히 이번에 새로 추가된 범주는 '모르는 것이 약이 아니라 독이 될 수 있음'을 여실히 보여줍니다.
새로운 범주인 예외적 상황 처리 미흡은 조직이 비정상적이거나 예측 불가능한 상황을 예방, 탐지 및 대응할 준비가 되어 있지 않을 때 발생할 수 있는 문제들을 다룹니다. OWASP에 따르면, 이 취약점은 애플리케이션이 비정상적인 상황을 방지하지 못하거나, 문제가 발생했을 때 이를 식별하지 못하거나, 예상치 못한 상황에 직면했을 때 제대로 대응하지 못할 때 발생합니다.
기업이 예상치 못한 상황에 대비해야 한다는 점은 오늘날 고도로 분산되고 상호 연결된 시스템의 현실을 반영합니다. OWASP가 언급하는 문제들은 결코 생소한 것이 아닙니다. '예외적 상황 처리 미흡' 범주에는 24개의 공통 약점 열거(CWE)가 포함되어 있습니다. 부적절한 오류 처리, 이벤트 열기 실패, 논리적 오류 등 비정상적인 조건에서 발생할 수 있는 CWE들이 이에 해당합니다. 이는 불충분한 입력 검증, 처리 함수에서의 상위 수준 오류, 예외 처리의 일관성 부족(또는 부재) 등으로 인해 발생할 수 있습니다. OWASP의 설명처럼 "애플리케이션이 다음 명령을 확신할 수 없는 모든 순간이 바로 예외적 상황이 잘못 처리된 경우"입니다.
이러한 예외적 상황은 시스템을 예측 불가능한 상태로 만들어 시스템 충돌, 예기치 않은 동작, 장기적인 보안 취약점을 초래할 수 있습니다. 이러한 혼란을 방지하는 핵심은 최악의 상황을 가정하고, 예기치 못한 일이 발생할 때마다 즉각 대응할 수 있도록 준비하는 것입니다.
예외적 상황과 Top Ten의 진화
웹 애플리케이션 보안의 가장 심각한 위험을 다루는 4년 주기 Top Ten 목록은 수년간 비교적 안정적으로 유지되어 왔으며, 일부 범주가 순위 변동을 겪거나 4년마다 한두 개가 추가되는 정도였습니다. 2025년 버전에는 10위에 오른 '예외적 상황 처리 미흡'을 포함해 두 가지 새로운 항목이 추가되었습니다. 3위에 오른 소프트웨어 공급망 실패는 기존의 취약하고 오래된 구성 요소(2021년 6위)를 확장한 것으로, 이제는 광범위한 소프트웨어 침해를 포함합니다. (참고로, 접근 제어 실패는 여전히 1위 위험 자리를 지키고 있습니다.)
새로운 범주를 구성하는 예외적 상황들은 논리 버그부터 오버플로우, 부정 거래, 메모리, 타이밍, 인증, 권한 부여 문제 등 다양한 취약점을 야기할 수 있습니다. 이러한 유형의 취약점은 시스템이나 데이터의 기밀성, 가용성, 무결성에 영향을 미칩니다. OWASP는 공격자가 애플리케이션의 결함 있는 오류 처리를 조작하여 취약점을 악용할 수 있다고 경고합니다.
예기치 못한 상황을 처리하지 못한 한 가지 예로, 서비스 거부 공격 중에 파일이 업로드되는 동안 애플리케이션이 예외를 식별하고도 이후 리소스를 해제하지 못하는 경우를 들 수 있습니다. 이런 일이 발생하면 리소스가 잠긴 상태로 남아 리소스 고갈로 이어집니다. 공격자가 다단계 금융 거래에 개입했을 때, 오류 감지 시 거래를 롤백하지 않는 시스템은 공격자가 사용자의 계좌를 비우도록 허용할 수 있습니다. 거래 도중 오류가 감지되면 전체 거래를 롤백하고 처음부터 다시 시작하는 "Fail Closed" 전략이 매우 중요합니다. 중간 단계에서 거래를 복구하려다 보면 돌이킬 수 없는 실수가 발생할 수 있습니다.
Fail Closed vs. Fail Open
그렇다면 이 두 동작의 차이점은 무엇일까요? 명확히 정리해 보겠습니다.
Fail Open: 시스템이 "Fail Open" 상태가 되면, 문제가 발생해도 계속 작동하거나 "열린" 상태를 유지합니다. 서비스 지속성이 매우 중요할 때는 유용하지만, 보안 측면에서는 위험할 수 있습니다.
Fail Closed: 시스템이 "Fail Closed" 상태가 되면, 문제가 발생했을 때 자동으로 종료되거나 보안 상태로 전환됩니다. 이는 무단 접근을 방지하는 데 도움이 되므로 보안 관점에서 더 안전합니다.
예기치 못한 오류 처리
이러한 위험을 예방하려면 미지의 상황에 대한 계획을 세우는 것부터 시작해야 합니다. 여기에는 시스템 오류 발생 시 이를 탐지하고 문제를 해결하기 위한 조치를 취하는 능력이 포함됩니다. 사용자에게 적절히 알리고(공격자에게 중요한 정보를 노출하지 않으면서), 이벤트를 기록하며, 필요한 경우 경고를 발령할 수 있어야 합니다.
다음은 SQL 쿼리 오류와 사이트 설치 경로가 노출되어 인젝션 지점을 식별하는 데 악용될 수 있는 예시입니다.
Warning: odbc_fetch_array() expects parameter /1 to be resource, boolean given in D:\app\index_new.php on line 188
이상적인 시스템은 간과된 오류를 포착하기 위한 전역 예외 처리기를 갖추고 있어야 하며, 모니터링이나 관측 가능성 도구, 또는 반복적인 오류나 패턴을 감지하여 진행 중인 공격을 식별할 수 있는 기능을 포함해야 합니다. 이는 기업의 오류 처리 취약점을 악용하려는 공격을 방어하는 데 도움이 됩니다.
예를 들어, 표준 Java 웹 애플리케이션의 경우 Servlet 사양 2.5 버전 이상부터 사용 가능한 web.xml 배포 설명자 수준에서 전역 오류 처리기를 구성할 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
...
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
...
</web-app>
이 짧은 코드 블록은 Java 웹 애플리케이션에서 내부적으로 문제가 발생했을 때 수행할 작업을 정의합니다. 사용자에게 이해하기 어려운 오류 메시지나 빈 화면을 보여주는 대신, 문제를 조용히 포착하여 사용자 지정 오류 페이지로 안내합니다. 이 경우 해당 페이지는 error.jsp가 됩니다.
일반적인 java.lang.Exception 유형을 처리하도록 설정되어 있으므로 전체 애플리케이션의 마스터 오류 처리기 역할을 합니다. 즉, 오류가 어디에서 발생하든 사용자는 기술적인 세부 정보 대신 동일하고 친숙하며 일관된 오류 페이지를 보게 됩니다.
예기치 못한 상황 방지
이상적으로 조직은 예외적인 상황이 발생하지 않도록 최대한 노력해야 합니다. 예를 들어, 속도 제한, 리소스 할당량, 스로틀링 및 기타 제한을 구현하면 서비스 거부(DoS) 및 무차별 대입 공격을 방어하는 데 도움이 됩니다. 동일하게 반복되는 오류를 식별하여 통계로만 처리함으로써 자동화된 로깅 및 모니터링을 방해하지 않도록 할 수 있습니다. 또한 시스템에는 다음 사항이 포함되어야 합니다.
엄격한 입력 유효성 검사, 올바르게 구성되고 정제된 데이터만 워크플로에 진입하도록 보장합니다. 이는 데이터 흐름의 초기 단계, 이상적으로는 데이터가 수신되는 즉시 수행되어야 합니다.
오류 처리 모범 사례, 오류가 발생하는 즉시 포착합니다. 오류는 효율적으로 처리되어야 합니다. 사용자에게 로그를 유지해야 함을 명확히 알리고 필요한 경우 경고를 보내야 합니다. 전역 오류 처리기는 놓친 부분을 포착하는 데에도 이상적입니다.
일반적인 트랜잭션 안전성, 또한 필수입니다. 항상 "실패 시 차단(fail closed)" 방식을 따르십시오. 문제가 발생하면 전체 트랜잭션을 롤백해야 합니다. 트랜잭션을 중간에 수정하려고 하지 마십시오. 더 큰 문제를 일으킬 수 있습니다.
중앙 집중식 로깅, 모니터링 및 경고, 전역 예외 처리기와 함께 사용하면 사고를 신속하게 조사하고 이벤트를 일관되게 처리할 수 있으며, 규정 준수 요구 사항을 충족하기가 더 쉬워집니다.
위협 모델링 및/또는 보안 설계 검토, 프로젝트 설계 단계에서 수행됩니다.
코드 검토 또는 정적 분석, 최종 시스템에 대해 수행되는 스트레스, 성능 및 모의 해킹 테스트와 함께 수행됩니다.
예외적인 상황의 잘못된 처리는 새로운 범주일 수 있지만, 이는 사이버 보안의 기본 원칙을 포함하며 기업이 예상치 못한 상황에 대비해야 하는 이유를 강조합니다. 예외적인 상황이 어떤 형태로 나타날지는 알 수 없지만, 발생할 것이라는 점은 분명합니다. 핵심은 모든 상황을 동일한 방식으로 처리할 준비를 하는 것이며, 이는 불가피한 상황이 닥쳤을 때 이를 감지하고 대응하는 것을 더 쉽게 만들어 줍니다.
SCW Trust Score™ 사용자 참고 사항:
학습 플랫폼 콘텐츠를 OWASP Top 10 2025 표준에 맞춰 업데이트함에 따라, 풀스택 개발자의 Trust Score에 약간의 조정이 있을 수 있습니다. 질문이 있거나 지원이 필요한 경우 고객 성공 담당자에게 문의해 주십시오.
배포 전 AI 기반 개발 거버넌스 확보
AI 기반 위험을 측정하고, 커밋 시점에 보안 코딩 정책을 적용하며, SDLC 전반에 걸쳐 안전한 소프트웨어 제공 속도를 높이세요.
더 많은 블로그 살펴보기
보안 코딩, AI 거버넌스, 소프트웨어 리스크 관리에 관한 전문가 콘텐츠를 확인해 보세요.
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
배포 전 AI 기반 개발 보안 확보
소프트웨어 개발 수명 주기 전반에서 개발자 리스크를 파악하고, 정책을 시행하며, 취약점을 예방하세요.



.avif)