소프트웨어 개발 환경
오늘날의 소프트웨어 개발환경에서의 주요 보안 이슈는 응용프로그램에서 발견되는 취약점이다. 이로 인해 다양한 제로데이(Zero-day) 취약점 공격이 발생하고 있다. 응용프로그램에서의 취약점이 발견되는 이유는 개발자 개인의 문제일 수도 있으나, 조직의 개발 프로세스의 성숙도 문제가 더 큰 원인일 수 있다. 조직에 적합한 시스템 생명주기와 개발방법론이 적용될 경우에는 조직 내의 개발 프로세스의 성숙도가 높아져 응용프로그램 취약점의 감소라는 이점을 얻을 수 있다.
또한, 최근에는 오픈 소스를 많이 사용함에 따라 수많은 버그가 많은 사람의 눈을 통해 찾아진다는 진영과 단지 소스를 오픈하는 것만으로는 모든 버그가 발견된다는 것을 보장하지 못한다는 진영으로 구분되어, 오픈 소스에 대한 찬반양론이 엇갈리고 있다. 그러나 소스를 숨김으로써 얻을 수 있는 은닉을 통한 보안(Security by obscurity)으로 시스템에 대한 정보가 덜 알려지면, 그 시스템의 안전성이 보장된다는 논리는 일반적으로 잘 작동하지 않는 것으로 확인되고 있다.
1. 오늘날의 소프트웨어 환경
접근통제, 네트워크 보안, 운영 보안의 많은 문제가 취약한 소프트웨어 및 시스템 개발로부터 발생하고 있음이 점점 더 명백해지고 있다. 운영체제, 응용프로그램, DB에서의 보안은 객체(Object)들 사이에 발생하는 정보의 저장과 전송에 대한 통제이다. 소프트웨어 보안 통제의 근간은 조직의 보안 정책이다. 보안 정책은 조직 내에서 지켜야 하는 요구사항을 의미한다.
보통 보안 정책은 그룹별로 구분하여 사용자의 정보 접근을 제한하고 있으며, 이를 위해서 소프트웨어 개발자 및 시스템 관리자는 정보 접근을 구분하는 기능을 개발하고, 시스템에 적용하여야 한다. 이는 안전한 시스템을 구현하기 위해 조직의 보안 정책을 성실히 집행하는 것을 의미한다.
오픈소스(Open Source)
1. 오픈소스의 조건
소프트웨어의 소스코드가 사용자의 상황에 맞게 변경될 수 있는 형태로 배포되어야 한다.
2. 오픈소스에 대한 찬성 의견
1) 리누스의 법(Linus's Law) : 충분히 많은 눈알(Eyeball)들이 코드를 바라보게 되면, 모든 버그가 드러나게 될 것이다.
2) 소스의 개방성 : 이슈들에 대한 빠른 식별 및 개설을 가능케 한다.
3. 오픈소스에 대한 반대 의견
단지 소스를 오픈하는 것만으로 모든 버그가 발견될 것이라 보장할 수 없다. 정직하지 못한 프로그래머가 오픈소스의 취약점을 발견하지만, 이를 공개하지 않고 악용하거나 소프트웨어 벤더를 협박하는 데 이용할 수 있다.
4. 오픈소스 찬반에 대한 CBK 결론
은닉을 통한 보안(Security by obscurity) : 시스템에 대한 정보가 덜 알려진다면 그 시스템을 깨뜨릴 방법을 찾아낼 가능성이 줄어든다는 의미이다. 하지만 '은닉을 통한 보안'은 일반적으로 잘 작동하지 않는다. 소스 또는 실행파일 형태에 상관없이 프로그램은 관찰, 역공학(Reverse Engineering), 디어셈블리(Disasembly), 시험과 오류(Trial and Error)를 통해 보안 취약점이 발견될 수 있다.
* CBK(Common Body of Knowledge) : (ISC)2에서 개발한 정보보호지식체계로서, CISSP으로서 갖추어야 할 지식과 윤리에 대한 정보를 제공하고 있다.
5. 완전 공개(Full Disclosure)
보안 취약점을 발견한 사람이 취약점을 악용할 수 있는 코드를 포함해서 취약점 정보를 공개적으로 배포하는 행위로써, 제로데이(Zero-day) 공격이 발생할 수 있다.
6. 부분 공개(Partial Disclosure)
먼저 해당 소프트웨어 벤더를 접촉하여 취약점에 대한 패치가 공개적으로 배포되도록 한 후 완전공개(Full disclosure)한다. 취약점 정보만을 공개하고 이에 대한 해결책을 제시한다.
결론적으로 오픈 소스인지, 상용 소프트웨어인지를 고민하기보다는 해당 소프트웨어가 어떻게 설계되었는지를 살펴보는 것이 보안 관점에서 적합하다. 프로그래밍 언어 선택, 프로그래밍 스타일, 테스트 방법 등의 초기 고려사항에 보안이 검토되었는지 확인해야 한다.
'IT' 카테고리의 다른 글
CPU(중앙 처리 장치)에 대한 가장 쉬운 설명 (0) | 2023.03.28 |
---|---|
소프트웨어 개발 방법론 종류 (0) | 2023.03.12 |
RAID 유형에 대해서 살펴보자 (0) | 2023.03.12 |
재해 복구 시스템 복구 수준별 유형 (0) | 2023.03.12 |
벨라파둘라, 비바 무결성 모델에 대하여 (0) | 2023.03.12 |
댓글