OWASP 2021 웹 애플리케이션 보안 위험과 대응

OWASP 2021 웹 애플리케이션 보안 위험을 접근 통제, 암호화, 인젝션, 공급망, SSRF 관점에서 정리하고 대응 방안을 다룬다.

2026-08-14 · 최초 발행 2025-05-27

접근 통제가 무너지면 인증도 충분하지 않다

OWASP(Open Web Application Security Project) Top 10은 악용 가능성, 탐지 가능성, 영향도를 기준으로 웹 애플리케이션의 주요 보안 위험을 식별한다. 2021년 목록에서는 접근 통제 취약점이 1위로 올라섰다.

문제는 사용자의 권한을 필요한 범위로 제한하지 못할 때 생긴다. 최소 권한 원칙 위반, 접근 제어 우회, 잘못된 CORS(Cross-Origin Resource Sharing) 구성, 강제 브라우징(Forced browsing)이 여기에 포함된다.

2021년 Microsoft Exchange Server 취약점(ProxyLogon)은 인증 없이 관리자 권한으로 명령을 실행할 수 있었던 접근 통제 취약점의 심각한 사례다.

접근 통제는 모든 요청에 대해 서버 측에서 구현해야 한다. JWT 토큰은 검증하고 적절한 만료를 설정하며, 접근 통제 모델에는 거부(deny-by-default) 원칙을 적용한다.

암호화는 민감 데이터 노출보다 넓은 문제다

암호화 오류(Cryptographic Failures)는 이전의 ‘민감 데이터 노출’에서 이름이 바뀐 항목으로, 암호화 자체의 결함에 초점을 둔다. 데이터가 평문으로 전송되거나, 취약한 알고리즘과 기본 또는 약한 키를 사용하거나, 암호화 검증이 빠진 경우가 대표적이다.

2021년 Facebook에서 발생한 5억 명 이상의 사용자 데이터 유출 사건은 암호화 부재로 개인정보가 노출된 대표 사례로 언급된다.

불필요한 민감 데이터는 저장하지 않고, 전송 데이터에는 TLS 최신 버전을 적용한다. 키는 안전한 키 관리 시스템으로 다루며, 최신 암호화 알고리즘과 충분한 키 길이를 사용해야 한다.

입력값이 명령과 쿼리가 되는 순간

인젝션(Injection)은 OWASP Top 10에서 계속 상위권을 차지해 온 위험이다. 사용자 입력이 명령 또는 쿼리의 일부로 해석될 때 발생하며, SQL 인젝션, NoSQL 인젝션, OS 명령어 인젝션, LDAP 인젝션, ORM 인젝션이 포함된다.

2020년 SolarWinds 공격에서는 빌드 시스템에 코드 인젝션이 이뤄져 백도어가 삽입됐고, 수천 개 조직이 영향을 받았다.

입력값 검증과 매개변수화된 쿼리를 기본으로 두고, ORM 프레임워크를 활용한다. 특수 문자는 이스케이프 처리하며, 데이터베이스 계정에는 최소 권한 원칙을 적용한다.

구현 전에 드러나는 설계의 빈틈

안전하지 않은 설계(Insecure Design)는 2021년에 새로 추가된 카테고리다. 구현 버그와 달리, 설계 자체에 존재하는 결함을 말한다. 위협 모델링이 없거나, 설계 리뷰가 부족하거나, 보안 요구사항이 정의되지 않은 경우가 주요 원인이다.

2020년 Zoom의 초기 설계는 엔드투엔드 암호화를 고려하지 않았고, 이로 인해 ‘Zoombombing’이라는 보안 문제가 발생했다.

설계 단계에서 위협 모델링과 보안 요구사항을 정의하고, 보안 전문가가 참여해야 한다. 다층 방어 전략과 안전한 소프트웨어 개발 수명주기(S-SDLC)도 설계의 결함을 줄이는 수단이다.

운영 환경의 작은 설정이 공격 경로가 된다

보안 설정 오류(Security Misconfiguration)는 시스템, 프레임워크, 애플리케이션 서버 등의 구성이 잘못됐을 때 발생한다. 기본 계정과 비밀번호를 바꾸지 않거나, 불필요한 기능을 켜 두거나, 오류 메시지로 과도한 정보를 노출하는 일이 여기에 해당한다. 최신 보안 패치 미적용과 클라우드 서비스 권한 설정 오류도 위험 요소다.

2019년 Capital One 데이터 유출 사건은 AWS S3 버킷의 잘못된 IAM 구성으로 발생했으며, 1억 명 이상의 고객 정보가 유출됐다.

환경별 보안 구성을 자동화해 일관되게 적용하고, 필요한 기능만 설치·활성화한다. 보안 설정은 정기적으로 검토하고 업데이트하며, 클라우드 보안 점검 자동화 도구를 활용한다.

패치되지 않은 구성요소는 애플리케이션의 일부다

취약하고 오래된 요소(Vulnerable and Outdated Components)는 구성요소의 업데이트가 이뤄지지 않아 발생하는 취약점이다. 운영체제, 웹·애플리케이션 서버, DBMS, API, 라이브러리, 모듈 및 프레임워크가 모두 영향 범위에 들어간다.

2017년 Equifax 데이터 유출은 Apache Struts 프레임워크의 알려진 취약점을 패치하지 않아 발생했으며, 1억 4천만 명의 개인정보가 유출됐다.

사용하지 않는 의존성·기능·컴포넌트는 제거한다. 컴포넌트 인벤토리를 관리하고 자동화하며, 공식 소스에서만 구성요소를 획득한다. 보안 취약점 모니터링도 자동화 대상이다.

계정 확인과 세션 관리를 함께 다뤄야 한다

식별 및 인증 오류(Identification and Authentication Failures)는 이전의 ‘취약한 인증’에서 범위가 확장된 항목이다. 사용자 신원 확인, 인증, 세션 관리와 관련된 취약점을 포괄한다.

약한 비밀번호 허용, 다단계 인증 부재, 세션 식별자 노출, 세션 고정 공격 취약성이 주요 문제다. 2020년 Nintendo에서는 16만 계정이 무차별 대입 공격으로 침해됐고, 다단계 인증과 로그인 시도 제한의 부재가 원인이었다.

다단계 인증을 구현하고 약한 비밀번호를 막는 정책을 적용한다. 로그인 시도 제한과 안전한 세션 관리도 필요하다. JWT 토큰을 사용할 때는 적절한 서명 및 만료 설정을 둔다.

배포 경로의 무결성도 검증 대상이다

소프트웨어 및 데이터 무결성 오류(Software and Data Integrity Failures)는 2021년에 추가된 항목이다. 코드와 인프라의 무결성을 충분히 검증하지 못할 때 발생하며, CI/CD 파이프라인, 서드파티 패키지 통합, 자동 업데이트 시스템, 신뢰할 수 없는 데이터 처리가 주요 영역이다.

2020년 SolarWinds 공격은 빌드 파이프라인에 침투해 악성 코드를 삽입한 공급망 공격이었다. 이 사례에서는 무결성 검증 부재가 주요 원인이었다.

디지털 서명을 검증하고 신뢰할 수 있는 저장소를 사용한다. 소프트웨어 공급망 보안을 관리하고 무결성 검사를 자동화하며, CI/CD 파이프라인 자체의 보안을 강화해야 한다.

기록되지 않은 공격은 대응하기 어렵다

보안 로깅 및 모니터링 실패(Security Logging and Monitoring Failures)는 이전의 ‘불충분한 로깅 및 모니터링’에서 확장된 개념이다. 공격을 탐지하고 대응하는 데 필요한 가시성이 부족한 상태를 뜻한다.

로깅 자체가 없거나 불충분한 경우, 모니터링 체계가 미비한 경우, 경고 임계값이 부적절한 경우, 로그 변조 방지가 부족한 경우, 사고 대응 계획이 없는 경우가 문제로 이어진다.

2020년 Twitter의 VIP 계정 해킹 사건에서는 내부 도구 접근에 대한 로깅과 모니터링 부족이 공격자가 비트코인 사기를 벌이는 데 악용됐다.

중요 트랜잭션은 반드시 기록하고, 로그 형식을 표준화해 중앙 집중화한다. 실시간 모니터링과 알림을 구현하며, 로그 무결성을 보장하는 메커니즘을 적용한다. 사고 대응 계획을 수립하고 훈련하는 일도 포함된다.

서버가 대신 보낸 요청이 내부를 노출할 수 있다

서버 측 요청 위조(Server-Side Request Forgery)는 2021년에 새롭게 등록된 취약점이다. 웹 애플리케이션이 사용자가 제공한 URL의 유효성을 확인하지 않은 채 원격 리소스를 가져올 때 발생한다.

이 취약점은 내부 시스템 스캔, 내부 서비스 접근, 클라우드 메타데이터 엔드포인트 악용, 방화벽 우회로 이어질 수 있다. 2019년 Capital One 해킹은 SSRF 취약점을 이용해 AWS 메타데이터 서비스에 접근하고 IAM 자격 증명을 탈취한 사례다.

네트워크를 분리하고 방화벽 정책을 강화한다. URL은 검증하고 허용 목록을 사용하며, 클라우드 메타데이터 엔드포인트를 보호한다. 요청 응답의 민감 데이터는 필터링하고 최소 권한 원칙을 적용한다.

설계와 공급망까지 확장된 보안 범위

OWASP Top 10 2021은 이전 버전보다 넓은 웹 애플리케이션 보안 위험을 다룬다. 안전하지 않은 설계, 소프트웨어 및 데이터 무결성 오류, 서버 측 요청 위조의 등장은 보안 패러다임이 단순한 구현 결함에서 설계와 공급망 보안으로 확장되고 있음을 보여준다.

애플리케이션 개발 초기부터 보안을 고려하는 Shift Left 접근 방식과 지속적인 보안 테스트로 이러한 취약점을 관리해야 한다. DevSecOps 문화를 도입해 개발, 운영, 보안 팀의 협업을 강화하는 일도 필요하다.

OWASP웹 애플리케이션 보안취약점DevSecOps보안 설계