OWASP Top 10 2021
OWASP Top 10 2021 년판 에 대해서 간략한 소개를 하고자 합니다.
2017년 판의 대한 간략한 소개는 하기의 링크를 통해 확인하실 수 있습니다.
링크 : OWASP Top 10 2017
개인적인 이유, 혹은 업무적인 이유로 웹 어플리케이션을 사용하기 위해 가상 머신 혹은 클라우드 호스팅을 통해 웹 서버나 웹 호스팅을 운용할 때, 어느정도 보안에 생각을 해본 경험이나 신경을 써본 적이 있을 것이라 생각됩니다.
그러나 웹 서버를 제작하고 운영하는 방법을 안내하는 글은 많지만 상대적으로 주요 웹 데이터를 보호하는 방법에 대해서 작성된 글은 적습니다. 그렇다고 아예 하나도 알 수 없는 것은 아닙니다.
MITRE, NIST, OWASP, KISA 등에서는 주기적으로 NVD(National Vulnerability Database, 미국 취약점 데이터베이스)에 업데이트 된 취약점을 대상으로 재가공하여 보고서를 발표합니다. MITRE ATTACK, OWASP Top 10, KISA 보안 취약점 가이드 등의 웹 어플리케이션 취약점 항목이 대표적으로, 서버 운영 시 참고하면 많은 도움이 됩니다.
[그림 1] OWASP 로고 / [그림 2] MITRE ATT&CK
OWASP Top 10은 개별 항목마다 별도의 데이터 요소를 기준으로 다루며, 의미는 다음과 같습니다.
OWASP Top 10 2021 Factor
– CWE’s Mapped : 개별 취약점 항목마다 연관된 CWE 갯수
– Max/Avg incidence Rate : 테스트한 모집단에서 CWE에 취약한 Application의 쵀대/ 평균 비율
– Max/Avg Coverage : 특정 CWE 취약점에 대하여 모든 조직에서 점검된 Application의 최대 / 평균 비율
– Avg Weighted Exploit : CWE와 연관된 CVE 취약점에서 CVSSv2 및 CVSSv3 점수를 10점으로 환산했을 때 계산된 취약점 평균 점수
– Avg Weighted Impact : CWE와 연관된 CVE 취약점에서 CVSSv2 및 CVSSv3의 영향도를 10점으로 환산했을때 계산된 평균 점수
– Total Occurrences : CWE에 연관된 것으로 확인된 총 Application 갯수
– Total CVEs : NVD DB 내에 CVE 중 CWE와 연관된 총 CVE 갯수
하기 사진에서 웹 취약점 항목 위험 순위를 다루는 OWASP TOP 10의 2021년의 순위를 2017년판과 일부 비교해보도록 하겠습니다.
[그림 2] OWASP Top 10 2017 -> 2021
비교해서 요약할때 2017년의 기존 항목들 중에 유지된 항목이 4건, 하위 항목으로 취합되거나 명칭이 변경된 것이 3건, 신규 항목이 3건 추가가 되었습니다. 2017년에 공격 위주로 나뉘어져 있던 하위 항목들을 주로 병합해서 묶은 것이 눈에 띄게 보이며, 기존까지 서비스, 컴포넌트의 취약점 위주였던 항목들이 운영상의 헛점에 관한 항목으로 추가, 변경된 것을 특징으로 잡을 수 있습니다. 이제부터 항목별로 나누어 10위부터 1위까지 알아보고자 하며, 10위부터 6위까지는 1부, 5위부터 1위까지는 2부로 글을 나누어 진행하도록 하겠습니다.
A10. Server-Side Request Forgery (서버사이드 요청 위조)
– CWE’s Mapped : 1
– Max / Avg incidence Rate : 2.72% / 2.72%
– Max / Avg Coverage : 67.22% / 67.22%
– Weighted Exploit : 8.28
– Weighted Impact : 6.72
– Total Occurrences : 9,503
– Total CVEs : 385
(1) 설명
21년판 신규로 추가된 항목입니다. 2019년 약 1억 6천건 이상의 고유식별정보, 민감정보 등의 사용자 데이터가 유출된 사건, Microsoft Exchange Server 등의 대규모 보안 사고의 원인이 SSRF와 연관성이 높아짐에 따라 해당 항목이 반영된 것으로 생각됩니다.
SSRF는 내부의 취약한 서버를 이용해 공격자가 내부 서버에 원하는 요청을 보내면서 시작됩니다. 일반적으로 외부에서 요청하는 과도한 요청을 웹 서버에서 제공하지 않고, 방화벽, IPS에서 차단하기도 합니다.
하지만 DMZ의 웹서버가 전달되는 입력되는 URL 값을 충분히 검증하지 않고 내부 서버로 전달할 경우 문제가 발생합니다. 내부 서버의 중요한 정보가 빠져나가거나, DoS(Denial of Service, 서비스 거부) 공격의 대상이 되기도 합니다. 주로 웹 페이지 번역 서비스, PDF, DOC 문서 생성기의 비정상적인 구현, 혹은 클라우드 환경에서 접근 통제가 미비할 때 발생할 수 있습니다.
보안에 관련된 직무를 수행하고 계시거나 공부를 해본 분이시라면 CSRF(Cross Site Request Forgery)와 관련이 있는지 생각이 되실 수 있습니다. 이름부터 유사한 이 두 공격은 공격 방식도 유사하지만 공격에 사용하는 도구가 다른 것이 특징입니다. SSRF는 서버의 요청을, CSRF는 클라이언트의 요청을 이용하며, 두 공격 모두 공격자가 접근할 수 없던 데이터나 시스템에 접근 가능하도록 합니다.
(2) 대책
네트워크에서는 원격 접근이 가능한 영역을 분할하여 SSRF의 영향을 줄이는 것이 최선으로 보이며, 방화벽 정책이나 네트워크 접근제어 정책을 거부를 기본으로 두는 것이 좋습니다.
어플리케이션에서는 클라이언트에서 입력하는 데이터를 적절히 검증해야 하고 URL 스키마, 포트와 목적지 주소를 화이트리스트(White-list)를 적용하는 것이 좋습니다. 또한 클라이언트에 전송하는 응답을 암호화, HTTP 리다이렉션 미지원 등의 방지책이 권장되며, “Time of check, Time of Use”(TOCTOU)와 같은 Race condition이나 DNS rebinding등의 공격을 방어하기 위해 URL의 일관성을 유지하는 것이 좋습니다.
A09. Security Logging and Monitoring Failures (불충분한 보안 로깅 및 모니터링)
– CWE’s Mapped : 4
– Max / Avg incidence Rate : 19.23% / 6.51%
– Max / Avg Coverage : 53.67% / 39.97%
– Weighted Exploit : 6.87
– Weighted Impact : 4.99
– Total Occurrences : 53,615
– Total CVEs : 242
(1) 설명
2017년판 10위에서 9위로 올라온 항목입니다. 원문의 failures는 직역 시 실패라는 뜻이지만, 뒤의 항목을 포함하여 문맥상 부적절한으로 번역하였습니다. 보안 로그와 내부 모니터링의 부적절한 설정에 관한 내용으로, 바로 직전의 SSRF와 어느 정도 연관성을 띄고 있습니다.
기존보다 더 많은 이슈를 포함하도록 확장되었습니다. 로깅, 모니터링은 별도로 보안 테스트가 어렵고 취약점 데이터에 잘 나타나지 않으나, 침해 대응시 가장 중요한 요소이기 때문에 포함되었습니다. 포함된 이슈들은 주로 로그인 관련의 고가치 트랜잭션등을 관리하는 감사 로그, 관리되지 않는 Application 로그, 로컬에서만 관리되는 로그, 감지하지 못하는 이벤트나 자원 모니터링 영역등이 있습니다.
(2) 대책
당연하게도 우선적으로 로깅, 모니터링 체계가 확립되어야 합니다. 값비싼 솔루션을 이용하지 않고도 시스템에 내장된 어플리케이션, 혹은 오픈소스 모니터링 툴을 이용해 소규모 모니터링 체계가 구축한다면 많은 도움이 됩니다.
대다수의 리눅스에는 기본적으로 /var/log에서 로그가 관리되고 있으며 실시간으로 자원을 모니터링 할 수 있는 top, free 등의 명령어가 제공됩니다. Apache나 mysql, mariadb 등의 로그들도 설치 방법에 따라 제공이 가능합니다. 이런 로그들의 효율적인 관리를 위해 logrotate를 이용하면 시스템을 전보다 안정적으로 운용이 가능합니다.
간략하게 정리된 logrotate 글은 다음과 같습니다.
– logrotate 이용 관련 URL : https://idchowto.com/%ec%95%84%ed%8c%8c%ec%b9%98-%eb%a1%9c%ea%b7%b8-%eb%a1%9c%ed%85%8c%ec%9d%b4%ed%8a%b8/
오픈소스 시스템 모니터링 프로그램의 종류는 Zabbix, ELK(ElasticSearch, Logstash, Kibana), Prometheus, Whatap 등이 있으며, Zabbix에 대해 소개된 글의 링크를 남겨두겠습니다.
– Zabbix 소개 : https://idchowto.com/zabbix-%eb%aa%a8%eb%8b%88%ed%84%b0%eb%a7%81/
A08. Software and Data Integrity Failures (불충분한 소프트웨어와 데이터 무결성)
– CWE’s Mapped : 10
– Max / Avg incidence Rate : 16.67% / 2.05%
– Max / Avg Coverage : 75.04% / 45.35%
– Weighted Exploit : 6.94
– Weighted Impact : 7.94
– Total Occurrences : 47,972
– Total CVEs : 1,152
(1) 설명
2017년판 8위의 비보호된 역직렬화의 내용이 포함하여 증가된 신규 추가된 항목입니다. 주로 무결성 검사가 진행되지 않은 소프트웨어 업데이트, 중요 데이터, CI/CD 파이프라인 등의 내용이 집중되어 있습니다. CVE/CVSS 취약점 영향도 점수가 가장 높은 취약점 중 하나로, 코드와 인프라 구성이 무결성 공격에 대해 취약한 내용과 연관되어 있습니다.
최근 증가한 공급망 공격(Supply Chain Attack)과도 일부 연관이 있으며 제로보드, 워드프레스, 드루팔과 같은 CMS와 플러그인 또한 해당이 될 수 있습니다.
(2) 대책
소프트웨어나 데이터를 구할 때 디지털 서명과 인증된 홈페이지를 이용하는 것이 최 우선입니다. 그리고 npm, Maven 혹은 그에 준하는 믿을 수 있는 패키지 관리자를 이용하는 것이 좋으며 그렇지 않더라도 최대한 잘 알려진 Repository를 이용하고 OWASP에서 제공하는 Dependency Check, CycloneDX와 같은 프로그램을 통해 공급망 보안 툴을 이용하는 것도 권장되는 방안입니다.
A07. Identification and Authentication Failuers (불충분한 식별과 인증)
– CWE’s Mapped : 22
– Max / Avg incidence Rate : 14.84% / 2.55%
– Max / Avg Coverage : 79.51% / 45.72%
– Weighted Exploit : 7.40
– Weighted Impact : 6.50
– Total Occurrences : 132,195
– Total CVEs : 3,897
(1) 설명
2017년판 2위에서 7위로, 기존 잘못된 인증에서 내용의 변경이 있었습니다. 내용이 변경되어 잘못된 인증(Broken Authentication) 항목에 불충분한 식별(Identification failures)이 포함되었습니다. 포함되는 이슈들은 주로 사용자 인증 및 세션 관리에 관한 내용으로 무차별 대입(Brute Force), 크리덴셜 스터핑 등이 있습니다.
(2) 대책
다단계 인증을 채택하여 최소 두 단계 이상의 인증 과정을 통해 자동화된 크리덴셜 스터핑, 무차별 대입공격, 크리덴셜 재사용 공격 등을 방어할 수 있습니다.
기본으로 소유하게 되는 운영 권한을 보유한 사용자(root, admin 등)의 개인 정보를 평문으로 저장하지 않는 것도 한 방법입니다.
반드시 취약하거나 잘 알려진 패스워드를 운영할 때 사용하지 않고, 부득이하게 사용할 경우 사용 이후 변경하도록 합니다.
패스워드 정책을 설정해놓고 사용하며, 주기적으로 변경하는 것을 권합니다.
A06. Vulnerable and Outdated Components (취약하고 기간이 만료된 요소들)
– CWE’s Mapped : 3
– Max / Avg incidence Rate : 27.96% / 8.77%
– Max / Avg Coverage : 51.78% / 22.47%
– Weighted Exploit : 5.00
– Weighted Impact : 5.00
– Total Occurrences : 30,457
– Total CVEs : 0
(1) 설명
2017년판 9위의 알려진 취약점 요소들의 내용에서 6위로 순위가 상승하였습니다. 인터넷 환경이 점차 오래되면서 기존 유지보수되던 요소를 업데이트, 관리가 되지 않거나, EOS(End of Service, 서비스 만료)된 것을 지속해서 사용할 경우 서비스가 취약점에 그대로 노출되는 문제가 있습니다.
운영체제, DBMS, 어플리케이션, 소프트웨어가 취약점을 내포하거나, 지원하지 않거나, 만료되었을때 해당되며, A05 Security Misconfiguration과도 연관성이 있습니다.
(2) 대책
항상 시스템에 관심을 갖고 주기적으로 서비스들을 점검하는 것이 필요합니다. 사용되지 않는 의존성 패키지들을 제거하고, 보유한 패키지, 라이브러리, 프레임워크 등을 취약점이 제거된 버전으로 업데이트를 꾸준히 해주는 것이 좋습니다.
출처
– https://owasp.org /Top10 OWASP Top 10 영문 원본 및 Factor 참조
–