0xStudyList - 사전에 보안을 제어할 수 있는 OWASP Top 10 개발자 가이드 2018

이번 블로그 글은
OWASP Top 10 Proactive Security Controls
라는 이름으로 알려진 내용을 번역, 수정한 것을 먼저 알립니다.
또한 하단 내용은 전체 내용 중 중요 내용만 요약한 것이니 참고하시기 바랍니다.

OWASP Proactive Controls 사이트 링크

0xStudyList - 사전에 보안을 제어할 수 있는 OWASP Top 10 개발자 가이드 2018
소프트웨어 개발자가 알아야할 시큐어 코딩 가이드

소프트웨어 개발자가 보안 프로그램을 개발하기 위해 집중해야 하는
보다 중요한 영역을 설명하고자 OWASP 에서 나온 내용이며
공개 되기 전, 사전에 보안성을 더 높이고자 하기 위한 가이드

본 블로그 업데이트 전 최신 버전
OWASP Top 10 Proactive Controls 2018
위에서 언급한 사이트 링크를 보면 알겠지만
PDF, PPT, Doc 등 문서에 대한 영문 문서 배포 중

각 문서가 공개된 Github 사이트 링크

모든 소프트웨어 프로젝트 개발 시 고려해야할 보안 기술 목록 포함

일반적으로 알려진 OWASP Top 10 은 웹 취약점으로 일종의 위험, 위협에 대한 목록이라면
이번 OWASP Top 10 사전 예방 제어는 방어 기술이나 통제에 중점

목록의 기준은 일반적인 업계의 표준, 적용 가능한 법률, 과거 취약점의 역사에서 파생된 보안 요구 사항을 정의하는 것 등으로 시작

중요도에 따라 10개 목록 작성
C1: Define Security Requirements - 보안 요구 사항 정의
C2: Leverage Security Frameworks and Libraries - 보안 프레임워크와 라이브러리 활용
C3: Secure Database Access - 안전한 DB 접속
C4: Encode and Escape Data - 데이터 인코딩과 이스케이프
C5: Validate All Inputs - 모든 입력 확인
C6: Implement Digital Identity - 디지털 ID 구현
C7: Enforce Access Controls - 접속 제어 적용
C8: Protect Data Everywhere - 어디에서나 데이터 보호
C9: Implement Security Logging and Monitoring - 보안 로그인과 모니터링 환경 구현
C10: Handle All Errors and Exceptions - 모든 오류와 예외 처리



C1: Define Security Requirements - 보안 요구 사항 정의
보안 요구 사항은 요구사항에 맞게 소프트웨어를 만족시켜야 하는 필수 기능을 제공
업계 표준, 적용 가능한 법률, 과거 취약점의 역사에서부터 비롯

표준 보안 요구 사항은 모든 응용 프로그램에 대해 사용자 지정 방식을 사용하는 대신
개발자가 다른 응용 프로그램에 대해 동일한 방식을 재사용할 수 있도록 함



C2: Leverage Security Frameworks and Libraries - 보안 프레임워크와 라이브러리 활용
출처가 확실하고 신뢰할 수 있는 소프트웨어로 제공되는 프레임워크나 타사 라이브러리
많은 응용 프로그램에서 적극적으로 유지 관리하고 사용해야 함

보안 프레임워크를 활용하면
개발자가 보안 목표를 보다 효율적이고 정확하게 달성할 수 있음



C3: Secure Database Access - 안전한 DB 접속
모든 데이터 저장소에 대한 보안 접속을 고려해야 하는 주요 영역이 요약

1. Secure queries - 안전한 쿼리
2. Secure configuration - 안전한 설정
3. Secure authentication - 안전한 인증
4. Secure communication - 안전한 통신



C4: Encode and Escape Data - 데이터 인코딩과 이스케이프
인젝션 공격 Injection 에 대한 방어 기술에서 중요한 역할을 함
인코딩 유형은 데이터가 표시되거나 저장되는 위치에 따라 다름
다양한 유형의 인코딩에서 HTML 엔터티 인코딩 HTML Entity Encoding, HTML 속성 인코딩 HTML Attribute Encoding, JavaScript 인코딩, URL 인코딩 등이 있음



C5: Validate All Inputs - 모든 입력 확인
올바른 형식의 데이터만 소프트웨어 시스템에 입력이 되어야 함
응용 프로그램은 데이터가 구문이나 의미적으로 모두 있는지 확인되어야 하고 확인해야 함



C6: Implement Digital Identity - 디지털 ID 구현
디지털 ID 는 온라인 트랜잭션을 나타내는 방법
안전한 구현을 위한 OWASP 권장 사항은 다음과 같음

Authentication Levels - 인증 수준
Session Management - 세션 관리
Tokens - 토큰



C7: Enforce Access Controls - 접속 제어 적용
접속 제어에는 응용 프로그램, 사용자, 프로그램, 프로세스 등에 대한 접속 요청을 허가하거나 거부하는 프로세스가 포함

다음은 OWASP 지침 목록
Design Access Control Thoroughly Up Front - 지나칠 정도로 앞선 접속 제어에 대한 설계
Force All Requests to Go Through Access Control Checks - 모든 요청이 접속 제어 검사를 통과하도록 강제
Deny by Default - 기본 설정은 거부
Principle of Least Privilege - 최소 권한의 원칙
Don’t Hardcode Roles - 역할에 대한 하드코딩은 하지 않도록
Log All Access Control Events - 모든 접속 제어 이벤트 로그 남기기



C8: Protect Data Everywhere - 어디에서나 데이터 보호
EU 의 일반 데이터 보호 규정 GDPR General Data Protection Regulation
PCI DSS 규정 Payment Card Industry Data Security Standard 등에 해당
암호, 신용카드 번호, 건강 기록, 개인 정보, 사업 비밀과 같은
민감 데이터를 안전하게 저장하는 것이 중요

민감도에 따른 데이터 분류 권고 리스트
Encrypting Data in Transit - 전송 중인 데이터 암호화
Encrypting Data at Rest - 유휴 데이터 암호화
Secret Key Lifecycle - 비밀키 라이프 사이클
Mobile Application: Secure Local Storage - 모바일 앱 : 안전한 로컬 스토리지
Application Secrets Management - 응용 프로그램 비밀 관리



C9: Implement Security Logging and Monitoring - 보안 로그인과 모니터링 환경 구현
응용 프로그램의 런타임 조작 중 보안 정보 로그인, 모니터링은
다양한 형태의 자동화를 사용하여 응용 프로그램과 보안 로그를 실시간으로 검토

Security Logging Implementation - 보안 로그인 환경 구현
Logging for Intrusion Detection and Response - 침입탐지와 대응을 위한 로그인
Secure Logging Design - 안전한 로그인 환경 디자인



C10: Handle All Errors and Exceptions - 모든 오류와 예외 처리
오류 처리를 통해 응용 프로그램이 다양한 오류 상태와 다양한 방식으로 대응 가능
일부 공격은 공격 탐지에 도움이 되는 오류를 강제 유발

댓글

이 블로그의 인기 게시물

0xNews - 안드로이드 폰 890만대 이상 사전 감염 확인

0xNews - 미군을 주제로 하여 한국인을 노리는 피싱 공격 캠페인 경고

0xNews - 리눅스 커널에서 StackRot 라는 이름의 취약점으로 권한 상승 취약점 발견