시큐어코딩(Secure Coding)

I. SW 개발 보안, Secure Coding

가. Secure Coding의 개념

협의
개념
소프트웨어 보안성 강화를 위해 개발 중 소스코드 구현 단계에서 보안 취약점을 배제하기 위한 개발 방법
광의
개념
소프트웨어 보안성 강화를 위해 개발 생명주기(SDLC) 상의 단계별로 요구되는 모든 보안활동

나. Secure Coding의 목적

사이버
공격 예방
– 사이버 공격의 대다수가 응용 프로그램의 취약점을 악용하여 정보를 침해
취약점 수정
비용 절감
– 개발 완료 전 발견 및 조치하는 비용이 릴리즈 이후 조치 비용의 30배 이상 절감
안정성 및
신뢰성 확보
– 정보시스템의 개발단계부터 보안을 고려하여 SW 안정성 및 신뢰성 확보 가능

 

II. Secure Coding의 적용 범위 및 사례

가. Secure Coding의 적용 범위

적용 범위취약점적용 방법
입력 검증/표현– SQL Injection
– XSS 취약점
– 쿼리 예약어 필터링
– HTML 화이트리스트
보안 기능– 무인증 사용
– 취약한 암호화
– 중요정보 재인증
– AES-384, SHA-512
시간 및 상태– 검사/사용 시점
– 반복/재귀문
– 공유자원 동기화
– 호출 횟수 제한
에러 처리– 오류정보 노출
– 부적절한 예외
– 오류 메시지는 최소한의 정보만 노출
코드 오류– Null Pointer
– 자원 미반환
– 참조 전 Null 검사
– 사용 후 자원 해제
캡슐화– 내부정보 노출
– 디버그 코드
– 지역변수 선언
– 배포전 디버그삭제
API 오용– Lookup 의존
– 취약한 API
– 설계된 목적 사용
– 안전한 함수 사용

나. Secure Coding의 사례

취약한 C 코드안전한 C 코드
void copy_string(char*string){
char buf[10];
strcpy(buf, string);
}
void copy_string(char*string){
char buf[10];
if(strlen(string < sizeof(buf))
strcpy(buf, string);
}

– 문자열의 크기가 buf변수보다 크면 버퍼 오버플로우가 발생하므로 사전에 크기 비교 필요

 

III. Secure Coding 활성화 방안

  • 설계/구현 단계에서 Secure Coding 등 개발보안이 중요하나 현실적으로 실무에서 사용률은 저조
  • 최소한의 개발보안 의무화 및 정부 주도 관리 필요

[참고]

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^