보안 제품정보


SW 보안약점 진단도구 한계 극복, 7가지 처방전 2014.11.10

KISA 김현철 박사 “소스코드, 정적·실행 SW의 동적 진단 병행해야”

KTC 방지호 연구원 “숙련된 사람·훈련된 절차·기술사용 등 필요”


[보안뉴스 김경애] SW 개발보안이란 안전한 SW 개발을 목적으로 보안을 고려한 기능을 설계·구현하고, SW에 존재할 수 있는 잠재적인 보안취약점을 제거하는 등 SW 개발과정에서의 보안활동을 말한다.


그러나 보안취약성의 근본적 원인인 보안약점(SW Weakeness)과 소프트웨어 실행시점에 발생하는 실제적인 위협인 보안취약점(SW Vulnerability)으로 인해 보안사고가 잇따라 발생하고 있다.


행정기관 및 공공기관 구축·운영 지침(안전행정부고시 제2013-36호)에서의 SW 보안약점 기준에 따르면 소스코드 보안약점 유형은 △입력 데이터 검증 및 표현 △보안기능 △시간 및 상태 △에러처리 △코드오류 △캡슐화 △API오용 등이 있다.


첫 번째로 입력 데이터 검증 및 표현의 보안약점은 프로그램 입력값에 대한 부적절한 검증 등으로 인해 발생할 수 있는 보안약점이다. 이를테면 SQL 삽입, 경로 조작 및 자원 삽입, 크로스사이트스크립트, 운영체제 명령어 삽입, 위험한 형식 파일로드 업로드 등이 여기에 해당한다.


두 번째로 보안기능은 인증, 접근제어, 권한 관리 등을 적절하지 않게 구현했을 때 발생할 수 있는 보안약점이 있다. 이를테면 부적절한 인가, 중요정보 평문저장, 하드코드된 패스워드 등이 그 예다.


세 번째로 시간 및 상태에 관한 보안약점은 멀티 프로세스 동작환경에서 부적절한 시간 및 상태 관리로 발생할 수 있는 보안약점을 말한다. 제어문을 사용하지 않는 재귀함수 등이 여기에 포함된다.


네 번째로 에러처리의 경우 불충분한 에러 처리로 인해 중요정보가 에러정보에 포함되어 발생할 수 있는 보안약점을 의미한다. 오류상황 대응 부재, 오류메시지를 통한 정보 노출 등을 들 수 있다.


다섯 번째인 코드오류 보안약점은 개발자가 범할 수 있는 코딩오류로 인해 유발되는 것을 의미한다.

여섯 번째인 캡슐화의 경우 불충분한 캡슐화로 인가되지 않은 사용자에게 데이터가 노출될 수 있는 보안약점을 말한다. 제거되지 않고 남은 디버그 코드, 시스템 데이터 정보노출 등을 예로 들 수 있다.


일곱 번째로로 API 오용의 보안약점은 부적절하거나 보안에 취약한 API 사용으로 발생할 수 있는 보안약점을 말한다. DNS lookup에 의존한 보안결정 등이 여기에 해당한다.


이외에도 SW 결함으로 고려대학교 한근희 교수는 설계자 단독으로 설계사양 결정, 문제 발견 후 설계 개선을 위한 EO(Engineering Order)를 실제 수행하지 않는 점을 문제로 지적했다. 게다가 SW 개발과정 중 요구사항 분석, 기본설계, 상세설계 등의 과정이 미국은 1년 6개월인데 반해 국내는 2개월에 불과한 문제를 제기했다.


더군다나 소스코드 보안약점을 진단하는 데 있어 한계가 있다는 점이 문제다. 이와 관련 한국인터넷진흥원 김현철 박사는 “비정형화된 패턴의 소스코드 보안약점이나 SW가 실행되는 시점에 사용되는 정보에 대한 진단, 사람의 판단이 필요한 부분에 대한 진단 등은 어떻게 할 지에 대한 한계가 있다”고 설명했다.


 ▲ 한국인터넷진흥원 김현철 박사

그렇다면 안전한 SW개발을 하기 위해선 어떻게 해야 할까? 이에 대해 김현철 박사는 소스코드에 대한 정적 진단과 실행 소프트웨어에 대한 동적 진단을 병행해야 한다고 제시했다.


이는 소스코드준비->소스코드 보안약점(정적분석) 1차 진단->모의해킹(동적분석) 1차진단->소스코드 수정->소스코드 보안약점(정적분석) 2차 진단->모의해킹(동적분석) 2차 진단->검증 종료 등의 순서로  진행되어야 한다는 얘기다.


그러면서 김현철 박사는 “참여 주체의 인식 제고와 역량강화가 무엇보다 중요하다”며, “발주기관의 사전 요구사항 명시와 함께 사업관리 및 개발일정에 반영하는 것, 개발기관의 자체적인 개발보안체계 수립·적용, 자체 코딩표준(시큐어코딩) 등 마련, 그리고 개발 전문인력 및 확보가 이뤄져야 한다”고 강조했다. 또한, 전문기관의 취약성 분석 및 기술 지원, 보안가이드 보급 및 교육과정 운영 등이 필요하다고 덧붙였다.


한국기계전기전자시험연구원(KTC) 방지호 연구원은 숙련된 사람(Skilled People), 훈련된 절차(Disciplined Process), 도구 및 기술사용(Enabling Tools and Technologies) 등의 노력이 필요하다고 설명했다.


이외에도 국산 SW 활성화 정책과 관련해 방위사업청 김요셉 소령은 내외부 위협을 꼼꼼히 체크하는 한편, 네트워크, 보안정책, 관련 SW, 운영체계 등의 상호운용성과 보안성을 모두 고려해야 한다고 밝혔다. 

또한 고려대 한근희 교수는 “SW나 정보시스템 서비스 출시를 목표로 하는 조직에서는 개발과 운영조직 간의 상호 협업과 소통이 무엇보다 중요하다”고 강조했다.

[김경애 기자(boan3@boannews.com)]


<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>