IT 보안 이야기 / / 2023. 8. 4. 21:14

OWASP TOP10 (웹 보안 취약점 분석)

반응형

이번 포스팅에서는 OWASP TOP 10(웹 보안 취약점) 공격자 입장이나 해킹 방어자 입장에서 매우 중요한 대표적인 웹취약점 10가지에 대해서 자세하게 알아보도록 하겠습니다. 다양한 해킹 공격 중 대표적인 웹 취약점을 확실하게 알고 있어야 침해사고분석 시 공격벡터를 파악하는데 효율성을 높일 수 있습니다.

 

현재 필자가 근무 중인 회사도 매우 다양한 웹애플리케이션 서비스를 대외적으로 서비스 중인데요. 하루에도 수십~ 수천 건씩 공격이 들어옵니다. 공격의 종류는 매우 다양하며 IP도 셀 수 없을 만큼 많습니다. 특히 정찰 형태의 스캔성 공격은 1년 365일 발생 중에 있고 이런 전체 로그 중 정말 공격이 감행된 정탐 로그를 식별하는 것은 매우 어려운 일입니다.

 

OWASP(Open Web Application Security Project)는 소프트웨어 보안을 개선하는 데 전념하는 비영리 조직입니다. 개인과 조직이 소프트웨어 보안 위험에 대해 정보에 입각한 결정을 내릴 수 있도록 소프트웨어 보안을 가시화하는 것이 임무입니다. OWASP는 개발자, 보안 전문가 및 조직을 위한 무료 오픈 소스 도구, 리소스 및 모범 사례를 제공하여 웹 응용 프로그램의 보안을 개선합니다.

OWASP는 웹 애플리케이션에서 가장 중요한 보안 위험 10대 목록인 OWASP Top 10을 비롯하여 조직이 보안 위험을 식별하고 완화하는 데 도움이 되는 지침, 테스트 도구 및 교육 리소스를 제공합니다. OWASP Top 10은 위협 환경의 변화를 반영하기 위해 주기적으로 업데이트되며 웹 애플리케이션 보안 테스트의 기준으로 널리 사용됩니다.

 

OWASP TOP 10 최신버전


OWASP Top 10은 웹 애플리케이션에서 가장 중요한 보안 위험 10 목록입니다. OWASP Top 10의 최신 버전은 아래 내용을 참고하시면 됩니다. 몇 년에 한 번씩 개정되거나 변경되는 점은 참고하시고 현재 가장 최신 버전의 설명입니다.

 

1. 잘못된 접근 제어

 

잘못된 접근 제어는 공격자가 사용자 계정에 대한 접근권한을 획득하며 발생하는 문제입니다. 공격자는 사용자 혹은 관리자로 시스템에서 활동하며 승인되지 않은 데이터 및 민감한 파일에 대한 권한을 획득합니다. 잘못된 접근 제어 결함은 해커가 사용자 권한 설정을 변경하는데 도움을 줄 수 있습니다. 관리자 패널, 웹사이트 컨트롤 패널, FTP / SFTP / SSH를 통한 접근, 그리고 데이터베이스 접근 등이 잘못된 접근 제어의 예시입니다.

 

2. 암호화 실패

 

암호화 실패는 저장되거나 전송된 데이터가 어떠한 방식으로든 손상될 때 발생합니다.

암호화 실패의 결과로 신용카드 사기 또는 신원 도용이 종종 발생합니다. 암호화 실패는 데이터가 일반 텍스트나 오래된 알고리즘을 사용하여 전송될 때 발생합니다. 안전하지 않은 키 관리 및 로테이션 기술도 암호화 실패의 원인이 될 수 있습니다.

 

3. 인젝션

 

인젝션 취약점은 SQL, OS, NoSQL 혹은 LDAP 인젝션을 통해 해로운 데이터를 인터프리터에 삽입하는 것을 말합니다. 인젝션 공격은 인터프리터를 속여 애플리케이션이 의도하지 않은 명령을 생성하거나 기존에 설계되지 않은 동작을 하도록 합니다. 

 

4. 불안전한 디자인

 

불안전한 디자인은 잘못된 제어 설계와 관련된 모든 결함을 나타냅니다. 이 카테고리는 위협 모델링, 보안 디자인 패턴 및 참조 아키텍처를 다룹니다.

 

5. 보안 설정 오류

 

보안 설정 오류는 상위 10개 취약점 중 가장 흔한 취약점입니다. 안전하지 않은 기본 설정 승인, 불완전한 설정, 민감한 정보를 담고 있는 장황한 에러 메세지, 그리고 잘못 설정된 HTTP 리더기는 보안 설정 오류의 원인이 될 수 있습니다.

 

6. 취약하고 오래된 구성요소

 

오픈 소스 구성요소에는 애플리케이션 보안에 심각한 위협이 되는 취약점이 포함될 수 있습니다. 취약한 구성요소는 종종 데이터 유출의 원인이 됩니다.

 

7. 식별 및 인증 실패

 

공격자는 애플리케이션이 세션 관리 혹은 사용자 인증과 관련된 기능을 잘못 실행할 때 암호, 세션 토큰 또는 보안 키를 손상시킵니다. 이로 인해 사용자 ID가 도용될 수 있으며 식별 및 인증 실패는 같은 네트워크 내의 다른 자산을 위험에 빠뜨릴 수 있습니다.

 

8. 소프트웨어 및 데이터 무결성 실패

 

소프트웨어 및 데이터 무결성 실패는 무결성 위반으로부터 코드와 인프라스트럭처를 보호할 수 없을 때 발생합니다. 악성 코드 및 무단 접근은 이런 취약점의 위험 요소입니다. 신뢰할 수 없는 소스의 플러그인, 라이브러리, 혹은 모듈을 포함하는 프로그램은 무결성 실패에 취약합니다. 자동 업데이트 기능을 사용하면 필요한 무결성 검사 없이 업데이트가 됩니다.

 

9. 보안 기록 및 모니터링 실패

 

보안 기록 및 모니터링 실패는 애플리케이션이 공격에 취약하게 만듭니다. 로그인, 그리고 실패한 로그인이 기록되거나 모니터링되지 않는다면 취약한 애플리케이션이 될 수 있습니다.

 

10. 서버사이드 요청 위조

 

이는 애플리케이션이 사용자 공급 URL의 유효성을 확인하지 않고 원격 리소스를 가져오면서 나오는 결과입니다. 최근 아키텍처가 복잡해지고, 특히, 클라우드 서비스 사용이 증가하면서 서버 사이드 요청 위조가 발생하고 있습니다.

 


 

웹보안 취약점 TOP 10에 대해서 알아보았습니다. 가장 선행돼야 할 점은 개발 단계에서 부터 시큐어 코딩을 준수하여 진행해야 하며 서비스 오프전 충분한 보안성 검토를 통해 보안 취약점을 최대한 제거하고 서비스를 오픈해야 합니다.

 

웹 서비스 오픈 후에도 지속적인 모니터링을 통하여 해킹 공격에 대비하고 만약, 취약점이 발견된다면 즉각적인 대응으로 피해를 최소화할 수 있는 프로세스를 정립하는 것이 중요합니다.

 

웹 서비스의 특성상 80, 443 포트는 외부에 any로 노출되어 있기 때문에 만약 보안 취약점이 존재한다면 매우 위험한 상황이 되는 것입니다. 즉, 공격자(해커)는 언제 어디서든 보안 취약점을 이용하여 악의적인 행위를 할 수 있는 상태이므로 주기적 정기적으로 보안 취약점 분석을 진행하는 것도 사전에 취약점을 제거할 수 있는 좋은 방법입니다.

 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유