-
소프트웨어 개발 보안 구축 - 소프트웨어 개발 보안 구현카테고리 없음 2020. 10. 12. 17:38
SW 개발 보안 구현
1. 시큐어 코딩 가이드
- 설계 및 구현 단계에서 해킹 등의 공격을 유발할 가능성이 있는 잠재적인 취약점을 사전에 제거하고, 외부 공격으로부터 안전한
소프트웨어를 개발하는 기법
- 소프트웨어 보안 약점을 방지하기 위한 시큐어 코딩 가이드에 따른 개발 수행이 필요
* 입보시 에코캡아
보안 약점 내용 대응 방안 입력 데이터 검증
및 표현프로그램 입력값에 대한 검증 누락, 부적절한 검증, 잘못된 형식 지정 사용자, 프로그램 입력데이터에 대한 유효성 검증체계를 수립하고 실패 시 처리 설꼐 및 구현 보안 기능 보안 기능(인증, 접근 제어, 기밀성, 암호화, 권한 관리 등)의 부적절한 구현 인증, 접근통제, 권한 관리, 비밀번호 등의 정책이 적절하게 반영되도록 설꼐 및 구현 시간 및 상태 거의 동시에 수행 지원하는 병렬 시스템 또는 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태의 부적절한 관리 공유 자원의 접근 직렬화, 병렬 실행 가능 프레임워크 사용, 블록문 내에서만 재귀함수 호출 에러 처리 에처 미처리, 불충분한 처리 등으로 에러 메시지에 중요정보 포함 에러 또는 오류사항을 처리하지 않거나 불충분하게 처리되어 중요정보 유출 등 보안 약점이 발생하지 않도록 시스템 설계 및 구현 코드 오류 개발자가 범할 수 있는 코딩 오류로 인해 유발 코딩 규칙 도출 후 검증 가능한 스크립트 구성과 경고 순위의 최상향 조정 후 경고 메시지 코드 제거 캡슐화 기능성이 불충분한 캡슐화로 인해 인가 되지 않은 사용자에게 데이터 누출 디버그 코드 제거와 필수 정보 외의 클래스 내 프라이빗(Private) 접근자 지정 API 오용 의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한
API의 사용개발 언어별 취약 API확보 및 취약 API검출
프로그램 사용입력 데이터 검증 및 표현
- 프로그램 입력값에 대한 검증 누락, 부적절한 검증, 데이터의 잘못된 형식 지정 등으로 인해 발생하는 보안 약점
- 대표적으로 SQL 삽입(Injection), 크로스 사이트 스크립트(XSS), 등의 공격을 유발할 수 있다.
주요 공격 보안 약점 대응 방안 SQL삽입 - 사용자의 입력값 등 외부 입력값이 SQL 쿼리에 삽입되어 공격 PreparedStatement 객체 등을 이용,
DB에 컴파일된 쿼리문(상수)을 전달크로스 사이트 스크립트(XSS) - 검증되지 않은 외부 입력값에 의해 브라우저에서 악의적인 코드가 실행 입, 출력값에 문자열 치환 함수를 사용
&, < >, "' / () 등 대상경로 조작 및
자원 삽입- 외부 입력된 값의 사전 검증이 없거나 잘못 처리될 경우
- 제공되는 시스템 자원에 접근 경로 등의 정보로 이용될 때 발생경로 순회 공격 위험이 있는 문자를 제거하는 필터 운영체제
명령어 삽입- 운영체제 명령어 파라미터 입력값이 적절한 사전 검증을 거치지 안혹 사용될
때 공격자가 운영체제 명령어를 조작웹 인터페이스를 통해 내부로 시스템명령어를 전달하지 않도록 프로그램 구성 SQL 삽입 공격
- 웹 애플리케이션에서 입려데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 창 및 URL에 SQL문을 삽입하여
DB로부터정보를 열람, 조작할 수 있는 취약점 공격 기법
크로스 사이트 공격
- 웹 페이지에 악의적인 스크립트를 포함해 사용자 측에서 실행되게 유도할 수 있는 공격 기법
- 검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우 전송된 동적 웹페이지를 열람하는 접속자 권한으로 부적절한
스크립트가 수행되어 정보유출 등의 공격을 유발할 수 있다.
XSS 공격의 시큐어 코딩 구현
- 외부 입, 출력값에 스크립트가 삽입되지 못하도록 &, <> " ' / () 등에 대해 문자열 치환 함수를 구현
- XSS의 3가지 공격방법으로 Reflected XSS, Stored XSS, DOM XSS가 있다.
* JSTL
- JSP 표준 태그 라이브러리의 약어로, JSP에서 제공하는 태그 등을 지원한다.
보안기능
- 보안 기능(인증, 권한 관리, 암호화, 중요정보 처리)을 부적절하게 구현 시 발생할 수 있는 보안 약점
- 대표적으로 적절한 인증 없는 중요 기능 허용, 부적절한 인가 등이 포함
1) 인증 관련 보안 약점
- 적절한 인증 없는 주요기능 허용, 반복된 인증시도 제한 기능 부재, 취약 비밀 번호 허용 등의 취약점에 대한
조치방안 적용을 수행
2) 권한 관리 보안 약점
- 중요자원에 대한 잘못된 권한 설정, 부적절한 인가 등의 취약점에 대한 조치방안 적용을 수행
주요 유형 보안 약점 대응 방안 중요자원에 대한
잘못된 권한 설명부적절한 인가 3) 암호화 보안 약점
- 취약 암호화 알고리즘 사용, 충분하지 않은 키 길이 사용, 하드코딩된 비밀번호, 부적절한 난수 사용 등에 대한 조치방안 적용 수행
4) 주용정보 처리 시 보안 약점
- 중요정보 평문 저장, 중요정보 평문 전송 등에 대한 조치 방안
* SEED
- 한국에서 자체 개발한 대칭키 128비트 암호화 알고리즘
난수 발생 시드(Seed)
- 어떤 특정한 시작 숫자를 정해주면 컴퓨터가 정해진 알고리즘에 의해 마치 난수처럼 보이는 수열을 생성하는데
이때의 시작 숫자를 의미
스니핑(Sniffing)
- 공격대상에게 직접 공격을 하지 않고 데이터만 몰래 들여다보는 수동적 공격기법
시간 및 상태
1) 시간 및 상태 보안 약점의 개념
- 동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여
발생할 수 있는 취약점
2) 시간 및 상태 보안 약점의 유형
- 경쟁 조건, 종료되지 않는 반복문, 재귀함수 보안 약점
* 경쟁조건(Race Condition) : 메모리가 공유되는 하나의 객체에 두개 이상의 스레드가 동시에 값을 변경하려고 할 때에
발생되는 성능 저하의 문제점
에러처리
1) 에러 처리 보안 약점의 개념
- 에러를 처리하지 않거나 불충분하게 처리하여 에러 정보에 중요정보가 포함될 때 발생할 수 있는 보안 약점
2) 에러처리 보안 약점의 유형
- 대표적으로 오류 메시지로 인한 정보 노출, 오류 상황 대응 부재 등의 보안 약점이 있다.
3) 에러 처리보안 약점의 시큐어 코딩 구현