오늘날 애플리케이션은 비즈니스와 사용자 경험의 핵심이지만, 동시에 다양한 사이버 위협에 노출되어 있습니다. 이러한 위험을 효과적으로 이해하고 대응하기 위해 OWASP(Open Web Application Security Project)는 주기적으로 가장 심각한 웹 애플리케이션 보안 취약점 Top 10을 발표합니다. 이번 글에서는 2022년 기준 OWASP Top 10 취약점을 살펴보고, 각 취약점이 왜 중요한지 간단히 짚어보겠습니다.
1. 접근 제어 문제
권한 검증이 부정확하면 비인가 사용자가 민감 데이터나 관리자 기능에 접근할 수 있습니다. 예를 들어 URL 조작으로 관리자 페이지나 내부 API에 접근이 허용되는 경우가 이에 해당합니다. 핵심은 요청 단위의 인가 검증과 직접 객체 참조(IDA) 차단입니다.
2. 암호 문제
민감정보를 평문으로 전송·저장하거나 취약한 알고리즘을 쓰면 곧바로 유출 위험으로 이어집니다. 전 구간 TLS, 강력한 암호화·해시, 키 관리가 기본입니다.
3. 주입
입력값 검증 미흡으로 SQL/NoSQL/OS 명령 등이 주입되어 데이터 탈취나 명령 실행이 일어납니다. 파라미터 바인딩과 화이트리스트 검증으로 쿼리와 데이터 분리가 필수입니다. SQL 주입의 일반적인 예는 “101”이 아닌 “101 OR 1=1”을 전달하는 경우입니다.
4. 비보호 설계
최신 OWASP Top 10 개정판은 설계 프로세스의 시작부터 위협 모델링, 보안 설계 패턴 및 참조 아키텍처를 구현하기 위한 권장 사항과 함께 설계 및 아키텍처 결함 관련 위험에 대해 설명하고 있습니다.
5. 보안 구성 오류
이는 서버에서 잘못 구성된 권한을 통해 애플리케이션에 대한 공격을 초대하는 것이나 다름없는 문제입니다. 애플리케이션을 침해에 취약하게 만드는 문제로는 기본 구성, 개방된 포트, 권한, 부정확한 HTTP 헤더 등이 있습니다. 참고로 XML 외부 개체(XXE)는 아직 보안 구성 오류에 속하지 않습니다. XXE 공격은 애플리케이션이 VML* 입력을 파싱할 시에 발생합니다. 이 입력은 XML 파서의 보안 결함을 이용하여 애플리케이션에 침투하려는 외부 개체로 볼 수 있습니다.
XXE의 예는 공격자가 서버에서 데이터를 추출하려 시도하는 경우가 있습니다.
<?xml version=”1.0″ encoding=”ISO-8859-1″?> <!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM “file:///etc/passwd” >]> <foo>&xxe;</foo>
또한 서버의 사설망을 위의 ENTITY 라인을 수정하여 조작할 수 있습니다. 이를테면 이와 같이 조작합니다.
<!ENTITY xxe SYSTEM “https://192.168.1.1/private” >]>
출처:HdivSecurity
NB: XSS (크로스 사이트 스크립팅) 공격은 이제 “주입” 범주에 해당합니다.
XSS 취약점은 여러 애플리케이션에 영향을 미치며 기본적으로 서버와 브라우저 간의 통신을 가로채는 악성 자바스크립트의 형태로 악용됩니다. 일반적인 XSS 취약점의 예로는 워드프레스 관리자 대시보드에서 글을 올리려 하는 경우입니다. 여기서 해커는 XSS를 악용하여 관리자 URL을 주입, 조작하고 브라우저가 새 관리자를 생성하도록 강제할 수 있습니다. 이제 어떻게 될까요? 워드프레스 글을 마음대로 편집, 수정하거나 상상을 초월하는 일이 일어나게 됩니다.
6. 취약하며 최신화되지 않은 구성요소
대부분 웹 애플리케이션은 서드파티가 제공하는 특수한 프레임워크로 개발됩니다. “코딩” 세계는 애플리케이션을 구축하는 여러 오픈소스 구성 요소와 프레임 워크로 가득하며 다시 말해 소스 코드에서 취약점을 찾아내려 눈을 부릅뜬 이들이 수없이 있다는 뜻입니다. 알려지지 않은 애플리케이션 코드는 액센트 제어 침해, SQL 주입 등 좋지 못한 결과를 일으킬 수 있습니다.
출처:Sucuri
7. 신원 파악 및 인증 문제
약한 인증·세션 관리로 계정 탈취가 발생합니다. MFA 도입, 세션 토큰 보호, 자격증명 채우기(크리덴셜 스터핑) 방어가 요구됩니다.
8. 소프트웨어 및 데이터 무결성 문제
데이터베이스에 저장되는 민감성 정보가 늘어나면서 소프트웨어의 데이터 무결성 문제는 날로 중요성이 높아지고 있습니다. 여기서는 소프트웨어 업데이트 관련 문제, 불충분한 무결성 검증, 보안 CI/CD 파이프 라인, 충분한 데이터 무결성의 필요 등에 대해 다룹니다. OWASP는 비보안 역직렬화(바이트 스트링을 오브젝트로 변환하는 행위) 취약점이 데이터 무결성 문제에 해당한다고 간주하는데 이는 이 약점이 무효한 데이터를 이용하여 애플리케이션의 로직을 파괴하기 때문입니다. 비보호 역직렬화 공격은 RCE(원격 코드 실행) 공격에 해당합니다.
참고: – 비보호 역직렬화는 이제 소프트웨어 및 데이터 무결성 문제에 해당합니다.
9. 보안 로깅 및 모니터링 문제
의심스러운 행동과 이벤트를 적절히 기록하지 못하면 감시가 이루어지지 않는 시간이 늘어나고 보안 침해도 장시간 발생하게 됩니다. 웹사이트 해킹은 좋지 못한 행동이지만 웹 애플리케이션의 소유주가 의심스러운 코드 거동을 감시하지 않으면 더욱 심각해집니다. 그러므로 모니터링 시스템이 필요합니다. 이 시스템은 사이트에 무슨 일이 일어날 시 경보를 제공하며 이를 적시에 해소하도록 도와줍니다. 효율적 로깅 및 모니터링 프로세스가 없다면 무슨 일이 벌어졌는지 알지도 못하고 공격의 피해를 고스란히 받아야 합니다.
불충분한 로깅과 모니터링의 예
- 공격자나 프로그램이 쉽게 해킹가능한 암호를 쓰는 사용자를 찾아냅니다.
- 이 작업이 완료되면 공격자는 모든 계정에 간단한 1개 암호만 시도할 수 있습니다.
- 더 많은 암호를 시도할수록 사용자에게는 좋습니다. 일정 시간이 지나면 단 1건의 잘못된 로그인 기록만 남기 때문입니다. 공격자가 더 많은 계정에 침투하고자 하는 경우 더 많은 작업이 필요합니다.
10. 서버측 요청 위조(SSRF)
서버가 검증되지 않은 URL로 내부/외부 요청을 보내도록 유도되는 취약점입니다. 아웃바운드 요청 제한, 메타데이터 엔드포인트 차단, URL/프로토콜 화이트리스트로 방어합니다