“SW개발 단계부터 ‘유비무환’”, 보안당국 ‘SW개발 보안 가이드’ 공개
‘보안기능, 입력데이터검증 및 표현, 에러 처리, 캡슐화’ 등 점검 항목 심층 분석
“세계 최상위 언어의 보안약점과 안전한 코딩 기법, 관련 코드 예제 제시”

학생들의 '코딩' 교육 모습으로 본문과 직접 관련은 없음.
학생들의 '코딩' 교육 모습으로 본문과 직접 관련은 없음.

[애플경제 전윤미 기자] 세계 프로그래밍 언어 중 선두 다툼을 하는 파이썬과 자바스크립트에 대해 최근 국내 보안당국이 SW개발보안(시큐어코딩)을 위한 공식 매뉴얼을 배포, 눈길을 끌고 있다.

본래 기업이나 개발자들이 SW개발에 매진하는 동안, 자칫 보안에 소홀하기 쉽다. 그래선 완성되기도 전에 SW정보가 유출되는 등 피해를 입기도 한다. 이에 한국인터넷진흥원과 인터넷보호나 사이트는 “아예 개발단계에서부터 SW의 보안 수준을 높이고, 개발자의 개발보안 역량을 강화할 수 있도록 한다”며 보안 매뉴얼이 담긴 기술안내서를 보급하고 있다.

탐지시간을 기준으로 한 상대적 수정비용(출처 : 인터넷보호나라, VERACODE)
탐지시간을 기준으로 한 상대적 수정비용(출처 : 인터넷보호나라, VERACODE)

SW 내재 보안약점 사전 조치가 중요

이들 기관은 “‘소프트웨어 개발보안’은 소프트웨어 개발과정에서 개발자의 실수, 논리적 오류 등으로 인한 보안취약점 및 약점들을 최소화해 사이버 보안 위협으로부터 안전한 소프트웨어를 개발하기 위한 일련의 보안활동을 의미한다”고 정의하고 있다.

이를 위해 소프트웨어 개발 라이프사이클(SDLC, Software Development Life Cycle)의 각 단계별로 적절한 보안조치를 한다. 그래서 소프트웨어에 내재하는 보안약점(weakness)을 초기 단계에서 발견, 수정하며, 소프트웨어 운영 중 발생할 수도 있는 보안취약점(vulnerability)을 사전에 예방하는 것이다.

특히 인터넷진흥원 등은 “민간에서 가장 많이 활용되고 있는 언어를 조사하여 그 중 선호도가 가장 높은 파이썬과 자바스크립트에 대한 시큐어코딩 가이드를 제작하게 되었다.”고 취지를 밝히고 있다.

파이썬 기반 구현단계 보안약점 제거 기준

이에 따르면 파이썬은 1991년에 발표된 고급언어다. 독립적인 플랫폼으로서 인터프리터 방식의, 객체지향적이자 동적 타입(dynamically typing)인 대화형 언어다. “다양한 플랫폼을 지원하며, 라이브러리(모듈)가 풍부하여 대학을 비롯한 여러 교육 기관이나, 연구기관 및 산업계에서 활용도가 높아지고 있는 추세”라고 했다.

실제로 최근 글로벌 프로그래밍 언어 집계 사이트인 티오비(TIOBE)에 따르면 이들 언어는 C언어와 함께 웹 개발, 그래픽, 머신러닝 등의 분야에서 1~3위를 다투고 있다.

출처 : 인터넷보호나라, TIOBE
출처 : 인터넷보호나라, TIOBE

이를 위해 우선 파이썬의 경우 SW개발 단계에서 출몰하는 보안약점들에 대한 설명과 안전한 코딩 기법, 관련 코드 예제를 제시하고 있다. 그 과정에서 일단 최신의 파이썬 3.X 버전을 기준으로 하되, “보안약점을 제거하는 기준 항목 중 언어특성에 따라 일부 항목은 제외했다”는 설명이다.

매뉴얼은 우선 ▲1장 ‘파이썬 개발보안 가이드 개발 배경 및 목적’, ▲2장 ‘파이썬 언어 기반 구현단계 보안약점 제거 기준 설명’, ▲3장 ‘구현단계 보안약점 제거 기준 항목(49개) 중 45개’ 등 3장으로 구분하고 있다.

그 중 2장에서 특히 구현단계 보안약점 제거 기준을 구체적으로 명시하고 있다.

즉, △‘입력데이터 검증 및 표현’의 경우는 SQL 삽입, 코드 삽입, 경로 조작 및 자원 삽입 등 16개 항목을 기술하고 있다. 단, ‘메모리 버퍼 오버플로우’는 파이썬 언어의 특성상 제외했다.

다음으로 △‘보안기능’은 적절한 인증 없는 중요 기능 허용, 부적절한 인가 등 16개 항목이다. △‘시간 및 상태’는 경쟁조건, 종료되지 않는 반복문 또는 재귀함수 2개 항목, △‘에러처리’는 오류 메시지 정보노출, 오류상황 대응 부재 등 3개 항목, △‘코드오류’는 Null Pointer 역참조, 부적절한 자원 해제 등 3개 항목으로 되어있다. 단, ‘코드오류’에서 해제된 자원 사용, 초기화되지 않은 변수 사용 등 2개 항목은 제외되었다.

이 밖에 △‘캡슐화’의 경우 잘못된 세션에 의한 데이터 정보노출 등 4개 항목, △‘API 오용’은 DNS lookup에 의한 보안결정 1개 항목이다. 그 중 ‘취약한 API 사용’은 제외되었다.

자바스크립트 기반 구현단계 보안약점 제거 기준

파이썬에 이어 자바스크립트도 구체적인 매뉴얼이 공개되었다. 자바스크립트 역시 클라이언트 프로그램, 애플리케이션 서버, 모바일 앱, 임베디드 프로그램까지 개발이 가능한 최고의 언어로 꼽혀왔다. 특히 글로벌 개발자 플랫폼인 스택 오버플로우에서는 자바스크립트가 지난 9년 동안 가장 많이 사용되는 언어로 선정될 만큼 신뢰와 명망을 얻고 있다.

인터넷진흥원은 “그러나 언어 자체가 급격한 성장을 겪으면서 그만큼 더 높은 보안 위협에 노출되는 위험도 뒤따랐다”면서 ”대표적인 공개 취약점 데이터베이스인 CVE 통계치를 살펴보면 자바스크립트가 본격적으로 독립적인 언어의 모습을 갖추기 시작한 2015년경부터 자바스크립트 엔진에서 많은 보안 취약점이 발견되기 시작했다.“며 보안의 중요성을 강조하고 있다.

자바스크립트 매뉴얼에 대해 이들 기관은 “언어 엔진 자체의 취약점은 가이드 범위에 포함하지 않으며, 개발자가 통제 가능한 영역 내에서 안전한 코드 작성을 돕는 것을 목표로 한다.”면서 “대부분 보안약점 항목은 웹 애플리케이션을 타겟으로 하고 있으며, 자바스크립트로 클라이언트측과 서버측 모두 개발이 가능한 점을 고려해, 최대한 풀스택 상황에서의 보안 가이드를 모두 제시한다”고 밝혔다.

이에 따르면 기본적으로 순수 자바스크립트 언어 예시를 제공하며, 클라이언트 측 코드 예시는 ReactJS를, 서버 측 코드 예시는 NodeJS 기반 ExpressJS 예시 코드를 포함하고 있다. 또한 “기본적으로 클라이언트 측 코드는 공격자가 충분한 리소스만 투입한다면 분석 및 변조가 가능하므로, 안전한 클라이언트 측 코드가 제시된 항목의 경우에도 반드시 서버측 보안 기능을 반드시 적용해야 함을 주의해야 한다”고 밝혔다.

이 역시 ▲1장 ‘자바스크립트 개발보안 가이드 개발 배경 및 목적’, ▲2장 ‘자바스크립트 언어 기반 구현단계 보안약점 제거 기준 설명’, ▲3장, ‘구현단계 보안약점 제거 기준 항목(49개) 중 40개’ 등 3장으로 되어있다.

앞서 파이썬처럼 자바스크립트 매뉴얼 역시 2장에서 특히 구체적인 보안약점 제거 기준이 설명되어 있다.

우선 △‘입력데이터검증 및 표현’은 SQL 삽입, 코드 삽입, 경로 조작 및 자원 삽입 등 13개 항목으로 되어있다. 단, 정수형/메모리 버퍼, 오버플로우, HTTP 응답분할, 포맷 스트링 삽입 등 4개 항목은 제외되었다.

티오비의 글로벌 프로그램 언어 순위 집계표. (사진=티오비, 인터네보호나라)
티오비의 글로벌 프로그램 언어 순위 집계표. (사진=티오비, 인터네보호나라)

언어특성 고려 일부 제거 기준은 제외

또 △‘보안기능’은 적절한 인증 없는 중요 기능 허용, 부적절한 인가 등 16개 항목, △‘시간 및 상태’는 종료되지 않는 반복문 또는 재귀함수 1개 항목으로 구성되었다. 이 경우도 ‘경쟁조건’ 즉, 검사 시점과 사용 시점(TOCTOU)은 제외되었다.

이 밖에 △‘에러처리’의 경우는 오류 메시지 정보노출, 오류상황 대응 부재 등 3개 항목, △‘코드오류’는 Null Pointer 역참조, 부적절한 자원 해제 등 2개 항목으로 되어있다. 이 경우도 해제된 자원 사용과, 초기화되지 않은 변수 사용, 신뢰할 수 없는 데이터 역직렬화 등 3개 항목은 제외되어있다.

또한 △‘캡슐화’는 잘못된 세션에 의한 데이터 정보노출 등 4개 항목, △‘API 오용’은 DNS lookup에 의한 보안결정 1개 항목인데, ‘취약한 API 사용’은 제외되었다.

(출처 : 인터넷보호나라)
(출처 : 인터넷보호나라)

인터넷진흥원과 인터넷보호나라 사이트는 “보안 관점에서 완벽한 소프트웨어를 개발하는 것은 불가능하지만 제품 설계, 개발 단계에서부터 보안 위협을 고려하고 분석해 나간다면 많은 위협을 사전에 차단하거나 빠르게 대응할 수 있다”면서 “개발 프로세스 상에서 보안 취약점을 탐색하고 발견하는 작업이 늦어질수록 수정 비용이 기하급수적으로 증가한다는 연구 결과도 공개된 바 있다”고 그 중요성을 강조했다.

저작권자 © 애플경제 무단전재 및 재배포 금지