시큐어코딩

1. 개요

    시큐어코딩(Secure Coding)은 해킹 등 사이버공격의 원인인 보안 약점을 개발단계에서 사전에 제거하여 안전한 소프트웨어를 개발하는 기법입니다.
    소스코드 레벨에서 주요 보안 취약점을 고려하여 작성함으로써 위험요소를 사전에 제거하고 최소화하는 것을 목적으로 하며, 보안 취약점 제거는 운영단계보다 개발단계가 훨씬 효율적이고 보다 안전한 SW를 개발 할 수 있도록 합니다.
    시큐어 코딩 점검 서비스는 전문 도구를 사용하여 보안 문제 예방을 위해 프로그래밍 시 지켜야 할 코딩규칙과 소스코드 취약성 목록, 보안 규칙 등을 가이드라인에 따라 상세 점검합니다. 소스코드에 대한 취약점과 실행오류를 검출하여 취약점 발생요인을 개발 단계에서 제거함으로써 정보보안 수준을 극대화 할 수 있도록 지원합니다.

2. 점검목적

점검목적, 보안점 취약점 제거를 통한 웹 어플리케이션 안정성 확보, 소스코드 품질관리 체계 구축/시큐어코딩 표준 준수여부 검증/스킬 향상 및 노하우 축적

3. 점검절차

점검절차, 대상선정/정보수진/취약점점검/점검결과분석/보고서 작성, 시큐어코딩 점검 시기-분석단계-설계단계-구현단계-테스트단계(취약점 점검)

4. 점검항목

부적절한 자원 해제사용된 자원을 적절히 해제 하지 않으면 자원 누수 등이 발생하고, 자원이 부족하여 새로운 입력을 처리할 수 없게 되는 보안 약점

 

점검항목 내용
SQL Injection 데이터베이스와 연동된 웹 플리케이션에서 입력된 데이터에 대한 유효성 검증을 하지 않을 경우, 공격자가 입력 폼 및 URL 입력란에 SQL 문을 삽입하여 DB로부터 정보를 열람하거나 조작할 수 있는 보안약점
크로스사이트 스크립트 검증되지 않은 외부 입력이 동적 웹페이지 생성에 사용될 경우, 전송된 동적 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공격을 유발할 수 있는 보안약점
위험한 형식 파일 업로드 서버측에서 실행될 수 있는 스크립트 파일(asp, jsp, php 파일 등)이 업로드 가능하고, 이 파일을 공격자가 웹을 통해 직접실행시킬 수 있는 경우, 시스템 내부명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있는 보안약점
HTTP 응답분할 HTTP 요청에 들어 있는 파라미터가 HTTP 응답헤더에 포함되어 다시 사용자에게 전달될 때 입력값에 개행문자가 존재하면 HTTP 응답이 2개 이상으로 분리되어 공격자가 악의적인 코드를 주입하여 XSS나 캐시 훼손 공격을 수행할 수 있는 보안약점
오류메시지를 통한
정보노출
응용프로그램이 실행환경, 사용자, 관련 데이터에 대한 민감한 정보를 포함하는 오류 메시지를 생성하여 외부에 제공하는 경우 공격자의 악성행위를 도와줄 수 있는 보안약점
적절하지 않은 예외처리 프로그램 수행 중에 함수의 결과값에 대한 적절한 처리 또는 예외상황에 대한 조건을 적절하게 검사하지 않을 경우 예기치 않은 문제를 야기할 수 있는 보안약점
널(Null) 포인터 역참조 개요 공격자가 의도적으로 널 포인터 역참조를 발생시키는 경우 그 결과 발생하는 예외 상황을 이용하여 추후의 공격을 계획하는데 사용 가능한 보안약점
잘못된 세션에 의한
정보 노출
잘못된 세션에 의해 인가되지 않은 사용자에게 중요정보가 노출될 수 있는 보안약점
Public 메소드로부터
반환된 Private 배열
Private로 선언된 배열을 Public으로 선언된 메소드를 통해 반환(return)하면, 그 배열의 레퍼런스가 외부에 공개되어 외부에서 배열이 수정될 수 있는 보안약점
Private 배열에
Public 데이터 할당
Public으로 선언된 데이터 또는 메소드의 인자가 Private로 선언된 배열에 저장되면, Private 배열을 외부에서 접근할 수 있게 되는 보안약점

5. 점검보고서 사례

    발견된 취약점을 제거하기 위한 다양한 가이드 및 보고서를 제공합니다.
결함조치를 위한 가이드
결함 조치 샘플 코드
점검 결과 요약 보고서
분석보고서