OWASP TOP 10 2021 리뷰

와우 드디어 OWASP TOP 10 2021이 공개 되었습니다!!! 🤩

https://owasp.org/Top10/

바뀐 부분, 새로 추가된 부분들을 살펴보면서 어떤 방향으로 흘러가는지 리뷰 해봅시다 :D

OWASP TOP10 2021

Broken Access Control

네 드디어 BAC가 Injection을 누르고 1번을 차지했습니다. 예전에는 하나의 어플리케이션에 대다수 서비스 기능이 들어가는 Monolithic Architecture 로 구성되는 서비스가 많았지만, 어느 시점부터 프로젝트를 마이크로 단위의 모듈로 분리하여 loosely-coupled한 구조를 만드는 Microservices Architecture 를 채택하는 서비스가 많아졌습니다.

이러한 서비스 구조는 하나의 시스템에서 Access Control을 통제하지 않기 때문에 보안적인 홀이 생길 가능성이 존재하고, 이러한 구조에서 대표적으로 영향받는 사항이 Access Control에 대한 부재, 우회입니다. 예전부터 많이 강조됬던 내용이지만, 이제 1번으로 올라간 것은 정말 놀랍네요 :D

Cryptographic Failures

기존의 Sensitive Data Exposure 항목이 Crypographic Failures로 변경되었습니다. 물론 특정한 공격 방법이나 취약점을 의미하는건 아니고 암호화에 관련된 문제들을 전반적으로 이야기하는 항목입니다. 2017 이후에 암호화 관련 이슈들이 많았던 것도 이름의 변경과 2번으로의 상승에 어느정도 역할을 했다고 생각됩니다.

Injection

아주 오래전부터 계속 이어져오던 Injection입니다. 말그대로 Injection 자체를 의미해서 SQL, OS Command, Expression 등 대다수의 Injection을 모두 포함하는 항목이며, 아마 웹 취약점의 정말 많은 부분을 담당하는 항목일겁니다. 어쨌던 Injection으로 통합해서 이렇게 유지되는 현상은 좋은 것 같네요.

(왜냐면.. Injection의 종류가 너무나도 많았기에..)

Insecure Design

신설 항목입니다. 기획/설계단의 보안을 의미하며, 개발단계 이전에 설계적인 보안 결함 부분을 의미합니다. 디자인이 잘못된 서비스는 후에 보안테스팅으로 발견된 사항을 쉽게 조치하지 못하거나, 리스크를 가지고 가야하는 경우들이 있는데, 이러한 부분들은 개발이 시작되기 전에 설계 디자인 단계에서 미리 바로잡고 가는것이 좋습니다.

물론 현업에선 예전부터 보안에 대한 shift-left는 강조되어 왔고, DevSecOps와 함께 기획, 설계단의 보안도 굉장히 중요한 부분이라 아마 어느정도 규모가 있는 회사들은 수행하고 있을거라 생각하는데요, 이제는 TOP10 에서도 명시 됬기 때문에 만약 수행하지 않고 있다면 이참에 고려하는 것도 좋다고 생각되네요.

Security Misconfiguration

네, 설정에 관련된 부분들은 이 Security Misconfiguration 항목에 모두 포함됩니다. 아무리 안전한 소프트웨어라도, 일부 테스트/디버그, 또는 다른 기능 지원을 위해서 보안성을 해치는 옵션들도 존재하는데요. 이러한 설정에 대한 부분으로 2010 이후부터 쭉 언급되고, 앞으로도 계속 유지될 것 같은 항목입니다.

재미있는 점은 기존에 XXE를 이 항목으로 추가했다는거네요 😲

Vulnerable and Outdated Components

이 항목은 알려진 취약점이 있는 컴포넌트를 의미합니다. 요즘은 정말 매 순간 엄청나게 많은 취약점이 쏟아지고 있고(해커원이 한몫했을거에요), 소프트웨어들은 오픈소스등을 기반으로 하여서 많은 라이브러리와 컴포넌트들이 연결되어 구성됩니다. 이런 상황에서 라이브러리, 컴포넌트에 존재하는 취약점은 어플리케이션 자체에도 취약점을 내포하게 할 수 있고, 개발자가 이를 쉽게 식별하기 어렵다는 문제가 있습니다.

그래서 아마 OWASP가 업계에서 설문/조사를 할 때 보안담당자들이 비슷한 의견을 내지 않았을까 싶습니다. 물론 이런 문제를 해결하기 위해서 Dependency bot과 같이 버전과 알려진 취약점 이슈를 체크해주는 도구들이 많이 나오고, 실제로 사용되고 있는데요. 소프트웨어 개발이 굉장히 세분화된 상태인 현재에선, 아무래도 중요한 사항이 아닐까 싶습니다.

Identification and Authentication Failures

인증 부분입니다. 개발 프레임워크가 단단해짐에 따라 점점 내려가고 있는데, 아직은 TOP10에 포함되어 있네요. 그래도 실제 서비스들에서는 은근히 자주 놓치는 부분들이라 여전히 세심한 테스트는 필요합니다.

Software and Data Integrity Failures

또 신설된 항목입니다. Data Integirity는 최근들어서 많이 신경써지고 있는 부분이에요. 아무래도 개발 과정이 DevOps에 포함되어 CI/CD Pipeline으로 처리되는 부분들이 많다 보니, 실제로 여기에 사용되는 리소스나 코드의 무결성이 검증되지 않는 경우들이 있습니다.

또한 개발 자체도 라이브러리를 적극적으로 사용하는 문화가 많다보니, (go를 보세요.. 최고입니다) 이 라이브러리가 안전한지 또는 변조되지 않았는지 체크하기 어려운 부분들이 있습니다. 그래서 개발언어(go, python, ruby 등)들은 checksum 을 가지고 라이브러리의 무결성을 검증하고, 웹에서 sciprt 태그를 이용한 js 로드에서도 intigirity 속성을 통해 무결성을 검증하는 방식들도 사용되고 있습니다.

아무튼 개인적으론 점검할 때 잘 챙겨졌으면 하는 부분이긴 하네요.

Security Logging and Monitoring Failures

로깅과 모니터링입니다. 보안 리스크를 줄이고 예방하는 것도 중요하지만, 이를 식별하고 분석할 수 있도록 로깅과 모니터링은 굉장히 중요한 요소입니다.

Server-Side Request Forgery

캬.. 감격입니다. 예전에 OWASP가 여러번 조사하고, 커뮤니티에서도 이야기가 돌았을 때 저 또한 SSRF의 중요도를 올리라는 이야기를 많이 했었습니다. 물론 단일 공격 방법으로 TOP10에 들어있는게 조금 독특하긴 하지만, 어쩄던 현재 서비스들의 형태(Public Cloud 사용, Microservices Architecture 등)를 봐선 발생했을 떄 리스크가 엄청납니다. (단순히 내부시스템 접근 수준이 아니라 인스턴스 탈취, RCE까지 아주 무궁무진하죠)

그래서 결국 이번 2021에 마지막 항목으로 들어오게 된 것 같습니다 :D

Removed objects

XSS, XXE, Insecure Deserialization이 각각 다른 항목들로 흡수됬습니다. 이제는 단일 공격 방법들이 아닌, 큰 범주에서의 보안을 의미하려는 것으로 보이며, 이러한 형태에선 충분히 이해가는 변화입니다.

History of OWASP TOP 10

제가 Cullinan에 OWASP TOP 10의 이력을 정리하기 위해 만들어둔 페이지가 있습니다. 여기에도 해당 내용 추가해두었습니다.

https://www.hahwul.com/cullinan/history-of-owasp-top-10/

Conclusion

한참을 기다렸는데 드디어 2021이 올라왔고, 내용 또한 만족스럽습니다. 전반적으로 OWASP가 커뮤니티의 의견도 많이 듣는다는 느낌이 들었네요. 어쨌던 OWASP TOP 10을 보면 점점 큰 범위의 보안을 나타내는 워딩이 많아지고 있고, 아마 기술에 발전에 따라서 더 넓어질 것 같다는 생각이 듭니다.

간단하게 리뷰 해봤는데, 혹시 내용보시고 궁금한점이나 잘못된 부분 있다면 언제든지 댓글로 남겨주세요 :D