애플리케이션 보안의 기초


애플리케이션 보안

소프트웨어 개발 환경

오늘날 소프트웨어 개발 환경의 주요 보안 문제는 응용 프로그램에서 발견되는 취약점입니다. 이에 따라 다양한 제로데이 취약점 공격이 등장한다. 응용 프로그램에서 취약점이 발견되는 이유는 개발자 개인의 문제일 수도 있지만 조직 개발 프로세스의 성숙도 문제가 더 큰 원인일 수 있습니다. 조직에 적합한 시스템 생명주기와 개발 방법론을 적용하면 조직 내 개발 프로세스의 성숙도가 높아지고 응용프로그램 취약점을 줄이는 효과를 얻을 수 있다.

또한 최근에는 오픈소스의 잦은 사용으로 많은 사람들의 눈에 버그가 많이 발견되는 진영과 단순히 소스를 공개한다고 해서 모든 버그가 발견되는 것은 아니라는 진영으로 양분되고 있다. 이에 대해 상반된 의견이 있습니다. 그러나 시스템에 대한 정보가 잘 알려지지 않은 상태에서 소스를 숨김으로써 얻을 수 있는 은닉에 의한 보안이 시스템의 보안을 보장한다는 논리는 일반적으로 잘 통하지 않는 것으로 나타났다.

1. 오늘날의 소프트웨어 환경

액세스 제어, 네트워크 보안 및 운영 보안의 많은 문제가 취약한 소프트웨어 및 시스템의 개발로 거슬러 올라갈 수 있다는 것이 점점 더 분명해지고 있습니다. 운영체제, 응용프로그램, DB에서의 보안은 객체들 사이에서 일어나는 정보의 저장과 전송에 대한 통제이다. 소프트웨어 보안 제어의 기초는 조직의 보안 정책입니다. 보안 정책은 조직 내에서 따라야 하는 요구 사항을 나타냅니다.

일반적으로 보안정책은 사용자를 그룹으로 분류하여 정보에 대한 접근을 제한하는데, 이를 위해 소프트웨어 개발자와 시스템 관리자는 정보 접근을 분류하는 기능을 개발하여 시스템에 적용해야 한다. 이는 보안 시스템을 구현하기 위해 조직의 보안 정책을 꼼꼼하게 시행하는 것을 의미합니다.

오픈 소스

1. 오픈 소스 약관

소프트웨어의 소스코드는 사용자의 상황에 따라 수정 가능한 형태로 배포되어야 합니다.

2. 오픈소스에 대한 찬성의견

1) 리누스의 법칙: 충분한 눈이 코드를 보면 모든 오류가 드러납니다.

2) 오픈 소스: 문제를 빠르게 식별하고 공개할 수 있습니다.

3. 오픈 소스에 대한 저항

소스를 여는 것만으로는 모든 오류가 발견된다는 보장이 없습니다. 부정직한 프로그래머는 오픈 소스에서 취약점을 발견할 수 있지만 이를 공개하지 않고 악용하거나 소프트웨어 공급업체를 협박하는 데 사용할 수 있습니다.

4. 오픈소스 장단점에 대한 CBK 결론

불명확성에 의한 보안: 시스템에 대해 알려진 정보가 적을수록 해킹 방법을 찾을 가능성이 적습니다. 그러나 “무명에 의한 보안”은 일반적으로 잘 작동하지 않습니다. 소스 또는 실행 파일 형식에 관계없이 프로그램의 취약점은 관찰, 리버스 엔지니어링, 분해 및 시행 착오를 통해 찾을 수 있습니다.

* 공통 지식 기반(CBK) : (ISC)2에서 개발한 정보보호 지식체계로 CISSP가 갖추어야 할 지식과 윤리에 대한 정보를 제공한다.

5. 전체 공개

이는 취약점을 발견한 사람이 해당 취약점을 악용할 수 있는 코드 등 취약점에 대한 정보를 공개 유포하는 행위로, 제로데이 공격이 발생할 수 있다.

6. 부분공시

먼저 소프트웨어 공급업체에 연락하여 취약점에 대한 패치를 공개적으로 배포한 다음 완전히 공개합니다. 취약점 정보만 공개하고 해결책을 제시합니다.

요컨대 보안의 관점에서 보면 오픈소스인지 상용 소프트웨어인지 고민하기보다는 소프트웨어가 어떻게 설계됐는지 살펴보는 게 낫다. 프로그래밍 언어 선택, 프로그래밍 스타일 및 테스트 방법과 같은 초기 고려 사항과 보안이 균형을 이루도록 해야 합니다.