OWASP
1. 개요
OWASP (Open Web Application Security Project)는 웹 애플리케이션 보안을 위한 비영리 단체로, 2001년 마크 커피에 의해 설립되었다. OWASP는 웹 애플리케이션 보안과 관련된 다양한 활동을 수행하며, OWASP Top 10, OWASP 소프트웨어 보증 성숙도 모델(SAMM), 개발 가이드, 테스팅 가이드, ZAP (Zed Attack Proxy) 등 다양한 자료와 도구를 제공한다. 또한, OWASP는 여러 보안 분야에 대한 인증 제도를 운영하며, 2014년 SC 매거진 에디터스 초이스 상을 수상했다.
| 이름 | OWASP (Open Worldwide Application Security Project, 오픈 월드와이드 애플리케이션 보안 프로젝트) |
|---|
이미지 준비중입니다.
| 유형 | 501(c)(3) 비영리 단체 |
|---|---|
| 설립일 | 2001년 |
| 설립자 | 마크 커피 |
| 주요 인물 | 앤드류 반 데어 스톡 (사무총장) 켈리 산탈루치아 (이벤트 및 기업 지원 이사) 해럴드 블랭컨십 (기술 및 프로젝트 이사) 제이슨 C. 맥도날드 (커뮤니티 개발 이사) 던 에이트킨 (운영 관리자) 로렌 토마스 (이벤트 코디네이터) |
| 이사회 | 아비 더글렌 (의장) 매트 테사우로 (부의장) 빌 코리 (재무) 리카르도 그리피스 (서기) 케빈 존슨 (이사) 샘 스테파냔 (이사) 스티브 스프링겟 (이사) |
| 초점 | 웹 보안, 애플리케이션 보안, 취약점 평가 |
| 방법 | 산업 표준, 컨퍼런스, 워크숍 |
| 수익 | 감소 $230만 |
| 수익 연도 | 2017년 |
| 자원 봉사자 수 | 약 13,000명 (2017년) |
| 직원 수 | 0명 (2020년) |
| 홈페이지 | OWASP 공식 웹사이트 |
| 주요 활동 | 웹 보안 애플리케이션 보안 취약점 평가 |
|---|---|
| 산업 표준 | OWASP Top 10 OWASP top 10 vulnerabilities |
| 기타 프로젝트 | OWASP Internet of Things |
-
컴퓨터 표준 -
포트란
포트란은 1950년대 IBM에서 개발되어 과학 및 공학 계산에 주로 사용되는 프로그래밍 언어이며, '수식 번역 시스템'에서 유래하여 객체 지향 프로그래밍, 병렬 처리 등의 기능이 추가되며 현대적인 언어로 발전해왔다. -
컴퓨터 표준 -
PCI 익스프레스
PCI 익스프레스(PCIe)는 고속 직렬 통신을 사용하는 컴퓨터 확장 카드 인터페이스 규격으로, 점대점 연결 방식과 패킷 기반 데이터 전송, 그리고 다양한 레인 구성과 지속적인 발전을 특징으로 한다. -
웹 취약점 공격 -
보안 취약점
보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다. -
웹 취약점 공격 -
인터넷 보안
인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다. -
네트워크 보안 -
스파이웨어
-
네트워크 보안 -
가상 사설 서버
가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
2. 역사
OWASP는 2001년 9월 9일 마크 커피가 시작했다. 2003년 말부터 2011년 9월까지 제프 윌리엄스가 OWASP 자원봉사 의장을 맡았다. 2015년 현재 이사회는 매트 콘다가 이끌고 있다.
2004년 미국에서 501(c)(3) 비영리 단체인 OWASP 재단이 설립되어 OWASP의 인프라와 프로젝트를 지원하고 있다. 2011년부터는 벨기에에서도 OWASP Europe VZW라는 이름으로 비영리 단체로 등록되어 활동하고 있다.
2023년 2월, OWASP 재단 글로벌 이사회의 임원인 빌 코리는 이사회가 Open Web Application Security Project에서 현재 이름으로 변경하는 투표를 진행하여 Web을 Worldwide로 대체했다고 보고했다.
3. 주요 활동 및 자료
OWASP는 웹 애플리케이션 보안을 위한 다양한 활동과 자료를 제공한다. 주요 내용은 다음과 같다.
* OWASP 소프트웨어 보증 성숙도 모델 (SAMM): 조직이 소프트웨어 보안 수준을 분석하고 개선하도록 돕는 프레임워크다.
* OWASP 개발 가이드: J2EE, ASP.NET, PHP 등 다양한 환경에서 웹 애플리케이션 개발 보안 지침을 제공한다.
* OWASP 테스팅 가이드: 웹 애플리케이션 및 웹 서비스 보안 취약점 테스트 방법론과 도구를 제공한다.
* OWASP 코드 검토 가이드: 코드 리뷰를 통한 보안 취약점 발견 및 수정 방법을 제시한다.
* OWASP 애플리케이션 보안 검증 표준 (ASVS): 애플리케이션 보안 검증 표준을 제공한다.
* OWASP XML 보안 게이트웨이 (XSG) 평가 기준 프로젝트
* OWASP Top 10 사고 대응 지침: 사고 대응 계획에 대한 사전 예방적 접근 방식을 제시한다.
* [[OWASP ZAP|OWASP ZAP (Zed Attack Proxy)]]: 웹 애플리케이션 취약점 분석 도구다.
* WebGoat: 보안 학습을 위해 의도적으로 취약하게 만든 웹 애플리케이션이다.
* OWASP AppSec 파이프라인: 애플리케이션 보안 (AppSec) Rugged DevOps 파이프라인 프로젝트다.
* OWASP 자동화된 웹 애플리케이션 위협
* OWASP API 보안 프로젝트: API 보안 취약점 및 위험 완화 전략에 대한 정보를 제공한다.
3.1. OWASP Top 10
OWASP Top 10은 웹 애플리케이션에서 가장 흔하게 발생하는 10가지 보안 취약점을 정리한 목록이다. 2003년 처음 발표된 이후 주기적으로 업데이트되고 있으며, 최신 버전은 2021년판이다. OWASP Top 10은 MITRE, PCI DSS, 미국 국방부 방위 정보 시스템국(DISA-STIG), 미국 연방거래위원회(FTC) 등 다양한 표준 및 기관에서 참조되고 있다.
다음은 OWASP Top 10의 목록과 각 목록에 대한 간략한 설명이다.
| 순위 | 취약점 | 설명 |
|---|---|---|
| A1 | 인젝션 (Injection) | SQL, OS, XXE(Xml eXternal Entity), LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 쿼리문의 일부분으로써, 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있다. |
| A2 | 취약한 인증 (Broken Authentication) | 인증과 세션 관리와 관련된 애플리케이션 기능은 정확하게 구현되어 있지 않아서, 공격자가 패스워드, 키 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격하여 다른 사용자 계정을 일시적 또는 영구적으로 탈취하는 것을 허용한다 |
| A3 | 민감한 데이터 노출 (Sensitive Data Exposure) | 많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수 있다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호조치를 취해야 한다. |
| A4 | XML 외부 개체 (XXE) (XML External Entities) | 오래되고 설정이 엉망인 많은 XML 프로세서들은 XML 문서 내에서 외부 개체 참조를 평가한다. 외부 개체는 파일 URI 처리기, 내부 파일 공유, 내부 포트 스캔, 원격 코드 실행과 서비스 거부공격을 사용하여 내부 파일을 공개하는데 사용할 수 있다. |
| A5 | 취약한 접근 통제 (Broken Access Control) | 취약한 접근 제어는 인증된 사용자가 수행할 수 있는 것에 대한 제한이 제대로 적용되지 않는 것을 의미한다. 공격자는 이러한 취약점을 악용하여 사용자의 계정 액세스, 중요한 파일 보기, 사용자의 데이터 수정, 액세스 권한 변경 등과 같은 권한 없는 기능, 또는 데이터에 액세스할 수 있다. |
| A6 | 잘못된 보안 구성 (Security Misconfiguration) | 훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있다. 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지되어야 한다. 또한 소프트웨어는 최신의 상태로 유지해야 한다. |
| A7 | 크로스 사이트 스크립팅 (XSS) (Cross-Site Scripting) | XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있다. |
| A8 | 안전하지 않은 역직렬화 (Insecure Deserialization) | 안전하지 않은 역직렬화는 종종 원격 코드 실행으로 이어진다. 역직렬화 취약점이 원격 코드실행 결과를 가져오지 않더라도 이는 권한 상승 공격, 주입 공격과 재생 공격을 포함한 다양한 공격 수행에 사용될 수 있다. |
| A9 | 알려진 취약점이 있는 구성요소 사용 (Using Components with Known Vulnerabilities) | 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행된다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악된다. 알려진 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화하는 등의 영향을 미친다. |
| A10 | 불충분한 로깅 및 모니터링 (Insufficient Logging & Monitoring) | 불충분한 로깅과 모니터링은 사고 대응의 비효율적인 통합 또는 누락과 함께 공격자들이 시스템을 더 공격하고, 지속성을 유지하며, 더 많은 시스템을 중심으로 공격할 수 있도록 만들고, 데이터를 변조, 추출 또는 파괴할 수 있다. 대부분의 침해 사례에서 침해를 탐지하는 시간이 200일이 넘게 걸리는 것을 보여주고, 이는 일반적으로 내부 프로세스와 모니터링보다 외부기관이 탐지한다. |
| 순위 | 취약점 | 설명 |
|---|---|---|
| A1 | 인젝션 (Injection) | SQL, OS, LDAP 인젝션 취약점은 신뢰할 수 없는 데이터가 명령어나 질의문의 일부분으로서 인터프리터로 보내질 때 발생한다. 공격자의 악의적인 데이터는 예상하지 못하는 명령을 실행하거나 적절한 권한 없이 데이터에 접근하도록 인터프리터를 속일 수 있다. |
| A2 | 인증 및 세션 관리 취약점 (Broken Authentication and Session Management) | 인증과 세션 관리와 관련된 애플리케이션 기능은 정확하게 구현되어 있지 않아서, 공격자가 패스워드, 키 또는 세션 토큰을 해킹하거나 다른 구현 취약점을 공격하여 다른 사용자 ID로 가장할 수 있다. |
| A3 | 크로스 사이트 스크립팅 (XSS) (Cross-Site Scripting) | XSS 취약점은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증이나 제한 없이 웹 브라우저로 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저에 스크립트를 실행하여 사용자 세션 탈취, 웹 사이트 변조, 악의적인 사이트로 이동할 수 있다. |
| A4 | 취약한 직접 객체 참조 (Insecure Direct Object References) | 직접 객체 참조는 개발자가 파일, 디렉토리, 데이터베이스 키와 같은 내부 구현 객체를 참조하는 것을 노출시킬 때 발생한다. 접근 통제를 통한 확인이나 다른 보호수단이 없다면, 공격자는 노출된 참조를 조작하여 허가 받지 않은 데이터에 접근할 수 있다. |
| A5 | 보안 설정 오류 (Security Misconfiguration) | 훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 보안 설정이 정의되고 적용되어 있다. 기본으로 제공되는 값은 종종 안전하지 않기 때문에 보안 설정은 정의, 구현 및 유지되어야 한다. 또한 소프트웨어는 최신의 상태로 유지해야 한다. |
| A6 | 민감 데이터 노출 (Sensitive Data Exposure) | 많은 웹 애플리케이션들이 신용카드, 개인 식별 정보 및 인증 정보와 같은 중요한 데이터를 제대로 보호하지 않는다. 공격자는 신용카드 사기, 신분 도용 또는 다른 범죄를 수행하는 등 약하게 보호된 데이터를 훔치거나 변경할 수 있다. 중요 데이터가 저장 또는 전송 중이거나 브라우저와 교환하는 경우 특별히 주의하여야 하며, 암호화와 같은 보호조치를 취해야 한다. |
| A7 | 기능 수준의 접근 통제 누락 (Missing Function Level Access Control) | 대부분의 웹 애플리케이션은 UI에 해당 기능을 보이게 하기 전에 기능 수준의 접근권한을 확인한다. 그러나, 애플리케이션은 각 기능에 접근하는 서버에 동일한 접근통제 검사를 수행한다. 요청에 대해 적절히 확인하지 않을 경우 공격자는 적절한 권한 없이 기능에 접근하기 위한 요청을 위조할 수 있다. |
| A8 | 크로스 사이트 요청 변조 (CSRF) (Cross-Site Request Forgery) | CSRF 공격은 로그온 된 피해자의 취약한 웹 애플리케이션에 피해자의 세션 쿠키와 기타 다른 인증정보를 자동으로 포함하여 위조된 HTTP 요청을 강제로 보내도록 하는 것이다. 이것은 공격자가 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 오해할 수 있는 요청들을 강제로 만들 수 있다. |
| A9 | 알려진 취약점이 있는 컴포넌트 사용 (Using Components with Known Vulnerabilities) | 컴포넌트, 라이브러리, 프레임워크 및 다른 소프트웨어 모듈은 대부분 항상 전체 권한으로 실행된다. 이러한 취약한 컴포넌트를 악용하여 공격하는 경우 심각한 데이터 손실이 발생하거나 서버가 장악된다. 알려진 취약점이 있는 컴포넌트를 사용하는 애플리케이션은 애플리케이션 방어 체계를 손상하거나, 공격 가능한 범위를 활성화하는 등의 영향을 미친다. |
| A10 | 검증되지 않은 리다이렉트 및 포워드 (Unvalidated Redirects and Forwards) | 웹 애플리케이션은 종종 사용자들을 다른 페이지로 리다이렉트 하거나 포워드하고, 대상 페이지를 결정하기 위해 신뢰할 수 없는 데이터를 사용한다. 적절한 검증 절차가 없으면 공격자는 피해자를 피싱 또는 악성코드 사이트로 리다이렉트 하거나 승인되지 않은 페이지에 접근하도록 전달할 수 있다. |
| 순위 | 취약점 | 설명 |
|---|---|---|
| A1 | 인젝션 (Injection) | SQL, OS, LDAP 인젝션과 같은 인젝션 결함은 신뢰할 수 없는 데이터가 명령어나 질의어의 일부분으로써 인터프리터에 보내질 때 발생한다. 공격자의 악의적인 데이터는 예기치않은 명령 실행이나 권한없는 데이터에 접근하도록 인터프리터를 속일 수 있다. |
| A2 | 크로스 사이트 스크립팅 (XSS) (Cross-Site Scripting) | XSS 결함은 적절한 확인이나 제한없이 애플리케이션이 신뢰할 수 없는 데이터를 갖고, 그것을 웹브라우저에 보낼 때 발생한다. XSS는 공격자가 피해자의 브라우저 내에서 스크립트의 실행을 허용함으로써, 사용자의 세션을 탈취하거나, 웹사이트를 변조하거나, 악의적인 사이트로 사용자를 리다이렉트할 수 있다. |
| A3 | 인증 및 세션 관리 취약점 (Broken Authentication and Session Management) | 인증과 세션 관리와 연관된 애플리케이션 기능은 종종 올바로 구현되지 않는다. 그 결과, 공격자로 하여금 다른 사용자의 아이덴터티로 가장 할 수 있도록 패스워드, 키, 세션 토큰 체계를 위태롭게하거나, 구현된 다른 결함들을 악용할 수 있도록 허용한다. |
| A4 | 취약한 직접 객체 참조 (Insecure Direct Object References) | 직접 객체 참조는 파일, 디렉토리, 데이터베이스 키와 같이 내부적으로 구현된 객체에 대해 개발자가 참조를 노출할 때 발생한다. 접근통제에 의한 확인이나 다른 보호가 없다면, 공격자는 이 참조를 권한 없는 데이터에 접근하기 위해 조작할 수 있다. |
| A5 | 크로스 사이트 요청 변조 (CSRF) (Cross-Site Request Forgery) | CSRF 공격은 로그온 된 피해자의 브라우저가 취약한 웹애플리케이션에 피해자의 세션 쿠키와 어떤 다른 자동으로 포함된 인증 정보를 갖고 변조된 HTTP 요청을 보내도록 강제한다. 이것은 공격자가 피해자의 브라우저로 하여금 취약한 애플리케이션이 피해자로부터의 정당한 요청이라고 착각하게 만드는 요청들을 생성하도록 강제하는 것을 허용한다. |
| A6 | 보안 설정 오류 (Security Misconfiguration) | 훌륭한 보안은 애플리케이션, 프레임워크, 애플리케이션서버, 웹서버, 데이터베이스 서버와 플랫폼에 대해 보안 구성이 정의되고 적용하기를 요구한다. 대부분이 보안을 기본적으로 탑재되지 않기 때문에 이 모든 설정은 정의되고, 구현되고, 유지되어야만 한다. 이것은 애플리케이션에서 사용되는 모든 코드 라이브러리를 포함하여 모든 소프트웨어가 최신의 상태를 유지하는 것을 포함한다. |
| A7 | 취약한 암호화 저장 (Insecure Cryptographic Storage) | 많은 웹애플리케이션들이 적절한 암호나 해쉬를 갖고 신용카드번호, 주민등록번호, 그리고 인증 신뢰 정보와 같은 민감한 데이터를 적절히 보호하지 않는다. 공격자는 아이덴티티 도난, 신용카드사기, 또는 다른 범죄를 저지르기 위해 그렇게 약하게 보호된 데이터를 훔치거나 조작할 지 모른다. |
| A8 | URL 접근 제한 실패 (Failure to Restrict URL Access) | 많은 웹애플리케이션들이 보호된 링크나 버튼을 표현하기 전에 URL 접근 권한을 확인한다. 그러나, 애플리케이션은 이 페이지들이 접근될 때마다 매번 유사한 접근 통제 확인이 필요하다. 공격자는 이 감춰진 페이지에 접근하기 위해 URL을 변조시킬 수 있다. |
| A9 | 불충분한 전송 계층 보호 (Insufficient Transport Layer Protection) | 애플리케이션은 종종 민감한 네트워크 트래픽의 인증, 암호화, 그리고 비밀성과 무결성을 보호하는데 실패한다. 실패할 때에는 대체로 약한 알고리즘을 사용하거나, 만료되거나 유효하지 않은 인증서를 사용하거나 또는 그것들을 올바로 사용하지 않을 때이다. |
| A10 | 검증되지 않은 리다이렉트 및 포워드 (Unvalidated Redirects and Forwards) | 웹애플리케이션은 종종 사용자들을 다른 페이지로 리다이렉트하거나 포워드한다. 그러나, 목적 페이지를 결정하기 위해 신뢰되지 않는 데이터를 사용한다.적절한 확인이 없다면, 공격자는 피해자를 피싱 사이트나 악의적인 사이트로 리다이렉트 할 수 있고, 포워드를 권한 없는 페이지의 접근을 위해 사용할 수 있다. |
OWASP Top 10 (2021년, 2017년, 2013년, 2010년, 2007년, 2004년) 목록은 웹 애플리케이션 보안 취약점의 변화 추이를 보여준다.
3.2. 기타 자료
OWASP는 소프트웨어 보안을 위한 다양한 자료를 제공한다. 주요 자료는 다음과 같다.
* OWASP 소프트웨어 보증 성숙도 모델 (SAMM): 조직이 소프트웨어 보안 상태를 분석하고 개선하도록 돕는 프레임워크다.
* OWASP 개발 가이드: J2EE, ASP.NET, PHP 등 다양한 환경에서 웹 애플리케이션 개발 보안 가이드를 제공한다.
* OWASP 테스팅 가이드: 웹 애플리케이션 및 웹 서비스 보안 취약점을 테스트하기 위한 방법론 및 도구를 제공한다.
* OWASP 코드 검토 가이드: 코드 리뷰를 통해 보안 취약점을 발견하고 수정하는 방법을 제시한다.
* OWASP 애플리케이션 보안 검증 표준 (ASVS): 애플리케이션 보안 검증을 위한 표준을 제공한다.
* OWASP XML 보안 게이트웨이 (XSG) 평가 기준 프로젝트
* OWASP Top 10 사고 대응 지침: 사고 대응 계획에 대한 사전 예방적 접근 방식을 제공한다.
* [[OWASP ZAP|OWASP ZAP (Zed Attack Proxy)]]: 웹 애플리케이션 취약점 분석 도구다.
* WebGoat: 의도적으로 취약하게 만들어진 웹 애플리케이션으로, 보안 학습용으로 활용된다.
* OWASP AppSec 파이프라인: 애플리케이션 보안 (AppSec) Rugged DevOps 파이프라인 프로젝트다.
* OWASP 자동화된 웹 애플리케이션 위협
* OWASP API 보안 프로젝트: API 보안 취약점 및 위험 완화 전략에 대한 정보를 제공한다.
4. 인증
OWASP는 특정 보안 분야에 대한 지식을 인증하는 여러 인증 제도를 운영하고 있다.