메뉴 건너뛰기

(*.106.188.101) 조회 수 354 추천 수 0 댓글 0
Atachment
첨부 '1'
Extra Form
출처 http://blog.naver.com/neos_rtos/220549778127

SW개발보안 (Secure Coding)

 

1. SW 개발 보안의 필요성

 

"SW 개발보안"이란 SW 개발 과정에서 개발자 실수, 논리적 오류 등으로 인해 SW에 내재된 보안취약점을 최소화하는 한편, 해킹 등 보안위협에 대응할 수 있는 안전한 SW를 개발하기 위한 과정을 의미한다. 넓은 의미에서 SW 생명주기 각 단계별로 요구되는 보안활동을 모두 포함하며, 좁은 의미로는 SW 개발과정에서 소스코드를 작성하는 구현단계 보안취약점을 배제하기 위한 시큐어 코딩을 의미한다. 

 

2. 시큐어 코딩의 개요

 

가. 시큐어 코딩(Secure Coding)의 정의

 

- 서비스의 안정성과 신뢰성 확보를 위해 IT 시스템 개발 단계에서 주요 보안 취약점을 고려하여 소스코드 레벨에서 위험요소를 사전에 제거하여 안전한 소프트웨어를 개발하는 기법

- SW개발부터 보안을 염두 해두고 프로그래밍을 하는 것으로 코드에 결함이나 오류가 있을 경우 사이버 공격을 유발한 가능성이 있으므로 예방 차원에서 프로그래밍을 할 때 지켜야 할 코딩규칙과 소스코드 취약성 목록, 보안 규칙 등을 제시한 가이드라인

- 소프트웨어 보안약점(Weakness): 소프트웨어 결함, 오류 등으로 해킹 등 사이버공격을 유발할 가능성이 있는 잠재적인 보안취약점

- 소프트웨어 개발보안(Secure Coding): 해킹 등 사이버공격의 원인인 보안약점을 개발단계에서 사전에 제거하여 안전한 소프트웨어를 개발하는 기법

 

나. 시큐어 코딩의 목적

 

목적

시큐어 코딩의 목적

사이버 공격 예방

사이버 공격의 75%가 응용 프로그램의 취약점을 악용한 것(가트너 발표)

웹 어플리케이션

취약점 개선

사이트 교차 접속 스크립팅(XSS), SQL인젝션 공격 등의 웹 응용 프로그램에 내재된 보안 취약점을 이용한 고객 정보 유출 사고 발생

취약점 수정

비용 절감

설계 과정에서 발생한 결함이 개발 완료 후에 발견, 조치되는 경우, 설계 단계에서 결함을 수정하는 비용 대비 30배 비용 발생

보안취약점

대응

최근의 사이버 공격의 진화에 따라 사전에 정보처리시스템의 보안취약점을 사전에 대응

Zero Day공격, SQL인젝션 취약점, 침입차단시스템 등 보안장비의 우회 등

전자정부

서비스확대

ICT 신기술을 활용한 전자정부 서비스가 확대되고, 대부분의 행정서비스가 인터넷을 통해 제공되면서, 전자정부 서비스의 보안취약점을 지속적으로 진단, 제거에 효율적 관리 방안

안정성 및

신뢰성 확보

전자정부 서비스의 안정성 및 신뢰성 확보를 위해 정보시스템의 개발단계부터 개념 및 소스코드 레벨에서의 대응조치를 제안하여 전자정부 서비스의 보안 정책을 강화

 - 보안 취약점 제거는 운영단계보다 개발단계가 훨씬 효율적

 - 소스코드 레벨의 보안 취약점 잔존 최소화가 목적 

 

3. 정보처리시스템의 보안성 강화를 위한 시큐어 코딩의 적용대상 및 적용범위

 

가. SW개발보안 적용대상 및 범위 기준

 

대상

내용

의무 대상

- 2012년 12월부터(본 지침 고시 후 6개월 경과한 날부터) 행정기관 등에서 추진하는 개발비 40억원 이상 정보화 사업에 소프트웨어 개발보안 적용을 의무화

- 단계적으로 의무 대상을 확대하여 ‘15년에는 감리대상 전 정보화 사업에 소프트웨어 개발보안을 적용함.

적용 제외

상용 소프트웨어는 소프트웨어 개발보안 적용 대상에서 제외됨.

적용

범위

소프트웨어 개발 사업자가 반드시 제거해야 할 보안약점은 SQL 삽입, 크로스사이트스크립트(XSS) 등 43개 존재.

감리

영역

- 감리법인은 정보시스템 감리 시 검사 항목에 보안약점 제거여부를 반드시 포함

- 감리법인은 효과적인 보안약점 진단을 위해 진단도구를 사용할 경우 국정원장이 인증한 보안약점 진단도구를 사용

 

나. CWE(Common Weakness Enumeration)의 7 Pernicious Kingdoms 분류

범위

설명

예제

입력 데이터 검증 및 표현

프로그램 입력 값에 대한 검증 누락 또는 부적절한 검증, 데이터의 잘못된 형식지정으로 인해 발생할 수 있는 보안취약점

XSS, SQL삽입, 버퍼 오버플로우, OS 명령어 삽입공격 등

보안기능

보안기증(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 적절하지 않게 구현 시 발생할 수 있는 보안취약점

중요 정보 평문 저장, 하드코드 된 패스워드 등

시간 및 상태

병렬 시스템, 프로세스나 쓰레드 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안취약점

DeadLock, 자원에 대한 경쟁 조건, 세션 고착

에러처리

에러를 처리하지 않거나, 불충분하게 처리하여 에러정보에 중요정보가 포함될 때 발생할 수 있는 보안취약점

에러처리 루틴 누락, 에러처리 통한 정보 노출 등

코드품질

복잡한 소스코드로 인해 관리성, 유지보수성, 가독성 저하가 발생하여 코딩 오류로 인해 유발되는 보안취약점

널 포인터 역 참조, 부적절한 자원 해제 등

캡슐화

중요한 데이터 또는 기능성을 불충분하게 캡슐화 하였을 때 인가되지 않은 사용자에게 데이터 누출이 가능해지는 보안약점

제거되지 않고 남은 디버거 코드, 시스템 데이터 정보 노출 등

API 악용

의도된 사용에 반하는 방법으로 API를 사용하거나, 보안에 취약한 API를 사용하여 발생할 수 있는 보안약점

DNS Lookup에 의존한 보안결정

 

4. 소프트웨어 개발기준의 시큐어코딩의 적용 범위

 

가. 입력데이터 검증 및 표현

 

보안약점

설명

SQL 삽입

사용자의 입력 값 등 외부 입력 값이 SQL쿼리에 삽입되어 공격자가 쿼리를 조작해 공격할 수 있는 보안 약점

자원 삽입

외부 입력 값에 대한 검증이 없거나 혹은 잘못된 검증을 거쳐서 시스템 자원에 접근하는 경로 등의 정보로 이용될 때 발생하는 보안 약점

크로스사이트

스크립트

검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행되는 보안약점

운영체제

명령어 삽입

운영체제 명령어를 구성하는 외부 입력 값이 적절한 필터링을 거치지 않고 쓰여져서 공격자가 명령어를 조작할 수 있는 보안 약점

위험한 형식

파일 업로드

파일의 확장자 등 파일의 형식에 대한 검증 없이 파일 업로드를 허용하여 발생하는 보안약점

신뢰되지 않는 URL주소 자동접속 연결

사용자의 입력 값 등 외부 입력 값이 링크 표현에 사용되고, 이 링크를 시용하여 악의적인 사이트로 redirect되는 보안약점

XQuery 삽입

사용자의 입력 값 등 외부 입력 값이 XQuery 표현에 삽입되어 악의적인 쿼리가 실행되는 보안약점

XPath 삽입

사용자의 입력 값 등 외부 입력 값이 XPath표현에 삽입되어 악의적인 쿼리가 실행되는 보안약점

LDAP 삽입

검증되지 않은 입력에 의해 동적으로 생성된 LDAP문에 의해 악의적인 LDAP 명령이 실행되는 보안 약점

크로스사이트

요청 위조

검증되지 않은 외부 입력 값에 의해 브라우저에서 악의적인 코드가 실행되어 사용자 요청정보가 서버에 보내지는 보안 약점

디렉토리 경로조작

지정된 경로 밖의 경로에 접근하게 되는 보안 약점

HTTP 응답 분할

사용자의 입력 값 등 외부 입력 값이 HTTP응답헤더에 삽입되어 악의적인 코드가 실행되는 보안약점

정수 오버플로우

정수를 사용한 연산의 결과가 정수값의 범위를 넘어서는 경우 프로그램이 예기치 않은 동작도리 수 있는 보안약점

보호 메커니즘을 우회할 수 있는 입력 값 변조

사용자에 의해서 변경될 수 있는 값을 사용하여 보안결정(인증/인가/권한부여 등)을 수행하여 보안 메커니즘이 우회될 수 있는 보안약점

 

나. 보안기능

보안약점

설명

적절한 인증 없는 중요 기능 허용

적절한 인증 없이 중요정보(계좌이체 정보, 개인정보 등)을 열람(또는 변경) 할 수 있게 하는 보안 약점

부적절한 인가

적절한 접근제어 없이 외부 입력 값을 포함한 문자열로 서버자원에 접근(혹은 서버실행인가)을 할 수 있게 하는 보안약점

중요한 자원에 대한 잘못된 권한 설정

중요자원(프로그램 설정, 민감한 사용자 데이터 등)에 대한 적절한 접근권한을 부여하지 않아, 의도하지 않는 사용자에 의해 중요정보가 노출, 수정되는 보안 약점

취약한 암호화

알고리즘 사용

중요 정보(패스워드, 개인정보 등)의 기밀성을 보장 할 수 없는 취약한 암호화 알고리즘을 사용하여 정보가 노출될 수 있는 보안약점

사용자 중요정보 평문 저장(또는 전송)

중요 정보(패스워드, 개인정보 등) 저장(또는 전송)시 암호화 하지 않아 공격자에게 노출될 수 있는 보안약점

하드코드된 패스워드

소스코드 내에 비밀번호를 하드코딩함에 따라 관리자 비밀번호가 노출되거나, 주기적 변경 등 수정(관리자 변경 등)이 용이하지 않는 보안약점

충분하지 않은

키 길이 사용

데이터의 기밀성, 무결성 보장을 위해 사용되는 키의 길이가 충분하지 않아 기밀정보 누출, 무결성이 깨지는 보안약점

적절하지 않은

난수 값 사용

예측 가능한 난수 사용으로 공격자로 하여금 다음 숫자 등을 예상하여 시스템 공격이 가능한 보안약점

패스워드 평문 저장

기밀 정보인 비밀번호를 암호화하지 않아 노출 될 수 있는 보안약점

하드코드된 암호화 키

소스코드 내에 암호화 키를 하드코딩 하는 경우, 향후 노출될 수 있으며, 키 변경 등 수정이 용이하지 않는 보안약점

취약한 패스워드 허용

비밀번호 조합규칙(영문, 숫자, 특수문자 등)및 길이가 충분하지 않아 노출 될 수 있는 보안 약점

사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출

쿠키(세션ID, 사용자 권한정보 등 중요정보)를 사용자 하드디스크에 저장 함으로써 개인정보 등 기밀정보가 노출될 수 있는 보안약점

보안 속성 미적용으로 인한 쿠키 노출

쿠키에 보안속성을 적용하지 않을 경우, 쿠키에 저장된 중요데이터가 공격자에 노출될 수 있는 보안약점

주석문 안에 포함된 패스워드 등 시스템 주요정보

소스코드내의 주석문에 비밀번호가 하드코딩 되어 비밀번호가 노출될 수 있는 보안약점

솔트없이 일방향 해쉬함수 사용

공격자가 솔트 없이 패스워드만 해쉬한 값을 얻게 된 경우, 공격자는 가능한 모든 패스워드에 대해 해쉬값을 미리 계산한 레인보우 테이블을 이용하여 패스워드를 찾을 수 있는 보안약점

무결성 검사 없는 코드 다운로드

원격으로부터 소스코드 또는 실행 파일을 무결성 검사 없이 다운로드 받고 이를 실행하는 경우 공격자가 악의적인 코드를 실행 할 수 있는 보안약점

 

다. 시간 및 상태 

보안약점

설명

경쟁조건: 검사시점 과 사용 시점(TOCTOU)

멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점이 달라서 발생하는 보안약점

제어문을 사용하지 않는 재귀 함수

적절한 제어문 사용이 없는 재귀함수에서 무한재귀가 발생하는 보안약점

 

 라. 에러처리

보안약점

설명

오류메시지 통한 정보 노출

개발 시 활용을 위한 오류정보의 출력메시지를 배포될 버전의 SW에 포함시킬 때 발생하는 보안약점

오류상황 대응 부재

시스템에서 발생하는 오류 상황을 처리하지 않아 프로그램 다운 등 의도하지 않은 상황이 발생할 수 있는 보안약점

적절하지 않은 예외처리

예외에 대한 부적절한 처리로 인해 의도하지 않은 상황이 발생될 수 있는 보안약점

 

마. 코드오류 

보안약점

설명

널 포인터 역 참조

NULL로 설정된 변수의 주소 값을 참조했을 때 발생하는 보안약점

부적절한

자원해제

사용된 자원을 적절히 해제 하지 않으면 자원의 누수 등이 발생하고, 자원이 모자라 새로운 입력에 처리 못하게 되는 보안약점

바. 캡슐화

보안약점

설명

잘못된 세션에 의한 데이터 정보 노출

잘못된 세션에 의해 권한 없는 사용자에게 데이터 노출이 일어날 수 있는 보안약점

제거되지 않고 남은 디버그 코드

디버깅을 위해 작성된 코드를 통해 권한 없는 사용자 인증우회(또는 중요중보)접근이 가능해지는 보안약점

시스템 데이터

정보노출

사용자가 볼 수 있는 오류 메시지나 스택 정보에 시스템 내부 데이터나 디버깅 관련 정보가 공개되는 보안약점

Public 메소드부터 반환된 Private배열

Private로 선언된 배열을 Public으로 선언된 메소드를 통해 반환하면, 그 배열의 레퍼런스가 외부에 공개되어 외부에서 배열이 수정될 수 있는 보안약점

Private 배열에 Public 데이터 할당

Public으로 선언된 데이터 또는 베소드의 파라미터가 Private 선언된 배열에 저장되면, Private배열을 외부에서 접근할 수 있게 되는 보안약점

사. API오용

보안약점

설명

DNS lookup에 의존한 보안결정

DNS는 공격자에 의해 DNS 스푸핑 공격 등이 가능함으로 보안결정을 DNS 이름에 의존할 경우, 보안결정 등이 노출되는 보안약점

 

* 출처: C 시큐어코딩 가이드, 소프트웨어 개발보안 가이드 (행정안전부)


  1. No Image

    COBOL Programming Guide - IBM Library Server

    Programming Guide - CONTENTS Table of Contents
    Date2017.03.04 Reply0 Views1445
    Read More
  2. No Image

    Middleware Tuxedo, T-Max

    턱시도(TUXEDO), Tmax(Transaction Maximization) 1. 등장 배경 턱시도(TUXEDO)는 Transaction Manager의 표준으로 X/OPEN, OSF 등의 표준화 근간을 제공하였고, 현존하는 대부분의 TP Monitor들이 턱시도를 기반으로 개발되었다. Tmax는 Transaction Maximiza...
    Date2017.02.28 Reply0 Views476
    Read More
  3. 프로시져, 객체지향

    1. 객체가뭔지? (가지고있는 속성 2.이벤트 기반의 프로그래밍이란? 3. 콘솔 프로그램과 Window 프로그앰의차이 4. 변수선언방법 의견1나도 궁금해요 신고 답변 1개 옵션 니바리님의 답변초인채택답변수905 활동분야베이직 펼치기 질문자 채택 질문자인사답변...
    Date2017.02.27 Reply0 Views453
    Read More
  4. No Image

    VTS(Virtual Tape Server), VTL(Virtual Tape Library)

    가상 테이프 라이브러리(VTL, Virtual Tape Library)란 데이터의 백업 및 복구를 위해 가상화 기술을 이용함으로써 디스크를 마치 테이프처럼 인식하여 데이터를 저장하는 시스템이다. 파일 단위로 데이터를 복구할 수 있고, 보유한 서버 수만큼 디스크를 분할...
    Date2017.02.27 Reply0 Views3722
    Read More
  5. JDK 설치 및 설정 (환경변수 설정)

          JDK 다운로드       ▲ 자바 프로그래밍을 하기 위해서 먼저 오라클 홈페이지에서 제공하는 자바 개발 툴을 설치해야 합니다. http://www.oracle.com 으로 접속한 뒤 Downloads > Java for Developers 메뉴를 선택합니다.         ▲ 2015년 1월 1일 현재...
    Date2016.05.27 Reply0 Views393 file
    Read More
  6. 알고 보면 쉬운 랜섬웨어 예방법 6가지

    개인과 기업을 막론하고 2016년 최대 보안 위협으로 자리 잡은 랜섬웨어. 2년 전만 해도 한국은 랜섬웨어 공격에 비교적 자유로운 편이었으나, 2015년 4월경 국내에 상륙한 이후 신종과 변종을 거듭하며 광범위하고 무차별적으로 우리를 공격하고 있다. 랜섬...
    Date2016.05.27 Reply0 Views401 file
    Read More
  7. No Image

    소스포지(SourceForge.net)

    이 문서는 웹사이트에 관한 것입니다. 소프트웨어에 대해서는 소스포지 엔터프라이즈 에디션 문서를 참조하십시오. SourceForge.net주소http://sourceforge.net/영리여부예사이트 종류협력 리비전 관리, 소프트웨어 개발관리사용 언어영어소유자지크넷제작자V...
    Date2016.05.22 Reply0 Views359
    Read More
  8. No Image

    홈페이지 웹취약점 표준 점검항목

    홈페이지 웹취약점 표준 점검항목 No. 코드 점검항목 설명 조치영역 1 OC 운영체제 명령 실행 웹 서버에 존재하는 명령어 실행 가능 함수 인자를 조작하여 특정 명령어 실행이 가능한 취약점 소스코드 2 SI SQL 인젝션 입력 폼에 악의적인 쿼리문을 삽입하여 D...
    Date2016.05.19 Reply0 Views667
    Read More
  9. No Image

    취약점 점검

    취약점 진단도구로 많이 활용 되는 TOP10 사용되는 취지는 악의적인 목적으로 중국에서 개발해서 많이 사용 되나 보안담당자들은 간혹 테스트 목적으로도 사용되어진다. 절대 악의적인 목적으로 사용하는일이 없기를 바랍니다..     1.    Pangolin - 중국에서...
    Date2016.05.19 Reply0 Views513
    Read More
  10. 취약점 점검에 대해 규정하는 법률 및 국내/외 제도

    취약점 점검에 대해 규정하는 법률 및 국내/외 제도 본 포스팅의 목적은 독자가 속해있는 기업이 1) 취약점 점검을 수행해야 하는지, 혹은 2) 어떤 법/제도에 의해 취약점 점검을 수행해야 하는지, 3) 취약점 점검을 강제하는 규정이 어떤것이 있는지에 대한 ...
    Date2016.05.19 Reply0 Views436
    Read More
  11. No Image

    SW개발보안 (Secure Coding)

    SW개발보안 (Secure Coding)   1. SW 개발 보안의 필요성   "SW 개발보안"이란 SW 개발 과정에서 개발자 실수, 논리적 오류 등으로 인해 SW에 내재된 보안취약점을 최소화하는 한편, 해킹 등 보안위협에 대응할 수 있는 안전한 SW를 개발하기 위한 과정을 의미...
    Date2016.05.19 Reply0 Views354 file
    Read More
  12. 비정형데이터 암호화 의무적용으로 파일암호화 시장 들썩

    비정형데이터 암호화 의무적용으로 파일암호화 시장 들썩 로그 및 이미지와 음성 파일 등 비정형데이터도 암호화 솔루션 확대 적용해야 길민권 mkgil@dailysecu.com ...
    Date2016.04.27 Reply0 Views505 file
    Read More
  13. No Image

    WiresharkPortable_2.0.3.paf / HTTP.Analyzer.Full.Edition.v7...

    WiresharkPortable_2.0.3.paf (Win32 / Win64) HTTP Analyzer - Full Edition.v7.0.2.439
    Date2016.04.25 Reply0 Views363
    Read More
  14. Java Applet, HyperText Markup Language 란?

    자바 애플릿(Java Applet)이란? - 웹 브라이주(Web browser)에 내장된 Java 가상 머신(JVM)에 의해 실행되는 Java프로그램 [참고] 자바 어플리케이션(Java Application) -> 사이즈가 작은프로그램(applet) - 각 컴퓨터 플랫폼에서 JVM에 의해 독립적으로 실행...
    Date2016.04.23 Reply0 Views813 file
    Read More
  15. WAS. TOMCAT. EJB

    * 웹표준의 기본 레이아웃 - 기본 속성에 대한 이해(wrap, header, container, footer, clear:both) http://jlayout.blog.me/220251928646 * 웹 서버(web server), 웹 컨테이너(web container), 웹 어플리케이션 서버(web application server, WAS) 란? 웹 서...
    Date2016.04.20 Reply0 Views439 file
    Read More
  16. No Image

    편의성 무기로 백업 시장에서 떠오르는 ‘PBBA’

    편의성 무기로 백업 시장에서 떠오르는 ‘PBBA’
    Date2016.04.19 Reply0 Views412
    Read More
  17. Shared Memory 공유방법 - Semaphore / Mutex

    Semaphore(세마포어) 개념 - 프로세스간 메세지 전송을 하거나, 혹은 Shared Memory(공유메모리)를 통해서 특정 data를 공유하게 될경우    발생하는 문제는, 공유된 자원에 여러개의 프로세스가 동시에 접근을 하면서 발생한다.     단지 한번에 하나의 프로...
    Date2016.04.17 Reply0 Views527 file
    Read More
  18. No Image

    아이디·비번 방식 대안 '파이도'(FIDO) 규격 확정··· "쉽...

    아이디, 비밀번호 방식보다 더 간단하면서도 안전한 인증 표준 '파이도'(FIDO-Fast Identity Oline) 최종 규격이 9일 마침내 등장했다. 모바일 기기 제조사들이 도입 대열에 서둘러 합류할 것으로 관측된다.  Read more: http://www.ciokorea.com/news/23328#c...
    Date2016.04.05 Reply0 Views3569
    Read More
  19. No Image

    이중 인증이란? 5가지 요점

    모든 컴퓨터 전문가들이 사용자에게 주는 최선의 보안 조언 중 하나는 웹사이트에 이중 인증을 지원하도록 만들라는 것이다. 암호 유출이 너무 흔해진 요즘 이중 인증이 해커로부터 당신의 신원을 지킬 수 있는 방법이 될 수 있다. 여기 이중 인증 기술을 이해...
    Date2016.04.05 Reply0 Views368
    Read More
  20. No Image

    URL / URI

    URL과 URI가 많이 혼용되는 편이고, 생김세도 비슷하거니와 I를 L의 소문자 오타로 보고 그냥 둘다 URL이라고 생각하는 경우도 더러 있다. 그래서인지 경력직도 그냥 구분 안하고 URL이라고 하는 경우가 있는데, 그래서 그 차이를 설명함. URL은 Uniform Resou...
    Date2016.04.04 Reply0 Views380
    Read More
목록
Board Pagination Prev 1 2 3 4 5 Next
/ 5