OWASP Top 10 2021 의 A10 부터 A6 까지 지난 글에서 알아보았습니다. 이번에는 남은 A5 부터 A1 까지 알아보도록 하겠습니다.
A05. Security Misconfiguration ( 보안 설정)
– CWE’s Mapped : 20
– Max / Avg incidence Rate : 19.84% / 4.51%
– Max / Avg Coverage : 89.58% / 44.84%
– Weighted Exploit : 8.12
– Weighted Impact : 6.56
– Total Occurrences : 208,387
– Total CVEs : 789
2017년판 4위(외부 XML 개체)를 6위에 포함시키면서 순위가 상승하였습니다. 약 20만 8천건의 CWE 카테고리를 보유하고 있으며 대다수의 소프트웨어 설정 문제를 내포하고 있습니다.
(1) 설명
주로 어플리케이션 내의 산재된 취약점에 대한 설명이며 어플리케이션 스택 혹은 클라우드 서비스 내의 부적절한 권한이 설정, 활성화 혹은 설치된 부적절한 특성들 (포트, 서비스, 페이지, 계정, 권한이 부적절하게 설정된 내용), 기본으로 주어지는 계정명과 비밀번호를 유지하고 변경하지 않는 경우, 업그레이드 당시의 보안 패치가 미적용된 최신 파일들 등을 포함하고 있습니다.
(2) 대책
반복적이고 견고한 과정들을 통해 빠르고 쉽게 다양한 환경에서 동일한 설정들을 적용하고, 기본 계정 혹은 비밀번호를 유지하지 않고 반드시 변경해주는 것이 가장 타당하며, 주기적으로 시스템 점검을 통해 보안 취약점을 패치 및 적용하는 것을 권고드립니다.
A04. Insecure Design(비보호된 설계)
– CWE’s Mapped : 40
– Max / Avg incidence Rate : 24.19% / 3.00%
– Max / Avg Coverage : 77.25% / 42.51%
– Weighted Exploit : 6.46
– Weighted Impact : 6.78
– Total Occurrences : 262,407
– Total CVEs : 2,691
21년판 신규로 추가된 항목입니다. 서비스 개발 단계에서 보안을 고려하지 않은 설계 과정을 통해 구축이 완료될 때 생기는 취약점에 대해 주로 설명하고 있습니다.
(1) 설명
개발 설계 단계에서는 요구사항 및 자원 관리, 보안 디자인, 보안 개발 단계를 나누어 진행됩니다. 무결성, 가용성, 인증 등을 고려하여 개발된 소프트웨어는 상대적으로 안전한 서버의 운용을 지향하게 도와줍니다.
(2) 대책
개발 단계에서 잘 알려진 공격이나 취약점에 대해 대비해야 합니다. 최신 소프트웨어 중 일부분은 보안이 고려되지 않은 것이 있으며, 기존 소프트웨어 일부분도 역시 포함되는 사항입니다. 개발사에서 최신 보안 패치를 빠르게 적용해 준다면 상대적으로 위험도가 낮아지나 상대적으로 그렇지 않은 경우가 더 많아 업데이트 기간이 길어지거나 더 이상 진행되지 않은 어플리케이션의 경우 다른 어플리케이션 적용을 고려해야 합니다.
A03. Injection (인젝션)
– CWE’s Mapped : 33
– Max / Avg incidence Rate : 19.09% / 3.37%
– Max / Avg Coverage : 94.04%
– Weighted Exploit : 47.90%
– Weighted Impact : 7.25
– Total Occurrences : 7.15
– Total CVEs : 32,078
2017년판 1위에서 순위가 하락한 항목입니다. 특이하게도 2013년, 2017년 모두 1위를 차지했었으나 21년 판에서는 3위로 순위가 내려온 점이 확인됩니다. HTML, SQL, NoSQL, OS 명령어, 객체 지향 사상, LDAP, EL 등에서 Injection 공격이 발생하는 경향이 있으며, 공격 방식은 환경 변수, URL, Header, cookies, JSON 등 명령어가 입력되어 자원에 접근되는 모든 경우에 발생할 수 있습니다.
(1) 설명
지속적인 패치 및 보안 설계로 인해 어플리케이션 취약점을 통해 기존보다 위험도가 많이 낮아졌으나, 아직까지 안심할 수 없으며 유저에 의존하는 자료들이 검증되지 않거나, 필터링 되어있지 않은 경우, 패킷에서 암호화가 걸려있지 않은 경우나 동적 쿼리의 Contxt-aware escaping 등이 적용되어 있지 않은 경우에서 발생할 수 있습니다.
(2) 대책
안전한 API를 사용하는 것이 기본적인 대책입니다. interpreter를 사용하는 것을 가급적 피해야 하며, 보안 적용이 되어 있지 않은 Mapping 도구를 조심히 다루어야 합니다. 서버-사이드에서 검증을 진행해야 하며, 전단에서 검증 혹은 필터링이 이루어져 있다고 하더라도 해당 단에서도 Sanitizing이 진행되는 것이 좋습니다.
A02. Cryptographic Failures (불충분한 암호화 )
– CWE’s Mapped : 29
– Max / Avg incidence Rate : 46.44% / 4.49%
– Max / Avg Coverage : 79.33% / 34.85%
– Weighted Exploit : 7.29
– Weighted Impact : 6.81
– Total Occurrences : 233,788
– Total CVEs : 3,075
(1) 설명
기존에서 계속 설명되었던 불충분한 암호화에 대한 내용입니다. 민감한 데이터 유출 공격이 해당되며, root 접근이 적절한 암호화 프로토콜로 진행되지 않거나, 민감한 데이터가 평문으로 관리될 때 해당 문제가 도출될 수 있습니다.
(2) 대책
어플리케이션에서 데이터 처리, 저장, 변환을 정형화하여야 합니다. 개인정보보호법 등의 민감한 개인정보 등이 적절히 암호화되어 진행해야 합니다. 또한 통신에서 TLS 등의 보안 프로토콜이 적용되어 있는지 확인해야 합니다. 통신 간 평문 전송 시 패킷이 탈취될 경우 문제가 발생할 수 있기 때문입니다. HTTPS, SSL 적용을 통해 암호화가 진행되어 있는 것 또한 권장드립니다.
A01. Broken Access Control (취약한 접근 제어)
– CWE’s Mapped : 34
– Max / Avg incidence Rate : 55.97% / 3.81%
– Max / Avg Coverage : 94.55% / 47.72%
– Weighted Exploit : 6.92
– Weighted Impact : 5.93
– Total Occurrences : 318,487
– Total CVEs : 19,013
(1) 설명
주로 사용자 행위가 권한 통제가 제대로 되어 있지 않을 때, 인가되지 않은 데이터에 접근하여 조작하거나 삭제 될때의 문제점에 대해 설명합니다.
(2) 대책
적절한 예방을 위해 설계 단계부터 적절한 접근 제어 정책 수립 및 설치되거나 활성화된 모든 어플리케이션의 내에서 적용되어야 합니다. 특정 사용자만 부여되어야 하는 권한이 모든 사용자에게 적용되었거나, 비인증된 사용자가 접근이 가능한 경우, 혹은 관리자 권한이 사용자에게 할당된 경우 등을 내포하고 있습니다.
총평
2017년에 비해 전체적으로 서비스의 직접적인 공격보다 이용자 혹은 관리자의 적절한 설정, 위협 예방, 대응에 관한 내용을 주로 이루어져 있는 점을 알 수 있습니다. 과거에 비해 보안에 대한 관심이 높아지면서 잘 알려진 취약점에 대한 대비가 17년 대비 향상된 점을 알 수 있었습니다.