2017.02.02

기고 | 문제는 클라우드가 아니라 '안전한 애플리케이션'이다

Mike Kail | Network World
* 본 기고문은 벤더가 작성한 것으로 네트워크 월드 편집진의 수정을 거쳤지만 일부 벤더의 시각이 남아 있을 수 있다.

현재 거의 모든 기업에서 전략 우선순위 중 하나가 클라우드 도입이 됐다. 그러나 클라우드 보안에 대한 두려움, 불확실성, 의심은 여전하다. 하지만 상당수는 근거가 없다. 개인적인 경험에 비춰보면, 데이터가 위치한 장소에 상관없이 대부분 보안 문제의 근원은 코딩 오류와 애플리케이션 취약점에 있었다. 클라우드의 경우, 이렇게 혼돈을 초래하는 부분을 지나쳐 애플리케이션 보안에 초점을 맞춰야 한다.

온프레미스(내부)와 클라우드 보안의 중요한 차이점은 하드웨어 어플라이언스로 보호할 수 있는 잘 구현된 보안 경계선이 없다는 것이다. 보안 부서는 하드웨어 정의 방식에서 벗어나, 소프트웨어 정의 솔루션을 도입해 적용해야 한다. 그리고 클라우드가 이런 방향으로 유도하는 유일한 동인은 아니다. 빠른 속도로 확산하는 '모바일 퍼스트'도 주요 동인 중 하나다.

취약한 애플리케이션 보안이 취약점 노출에 어떤 영향을 주는지 잘 알려져 있다. OWASP(Open Web Application Security Project) 연구를 살펴보면, 몇 년 동안 애플리케이션 보안 취약점이 계속해서 위협이 됐다는 사실을 확인할 수 있다. 지난 10년간 OWASP의 상위 10대 애플리케이션 취약점이 거의 바뀌지 않았다. 방화벽 어플라이언스가 발전했지만, 보안 침해 사고가 경종을 울릴 정도로 증가하는 추세다.

경계선(방어선) 기법에 기반을 둔 보안 어플라이언스는 본질적으로 소프트웨어 솔루션만큼 유연하지 않다. WAF(Web Application Firewalls)가 레이어 7 검사 및 정책을 통해 보안 방어 상태를 개선하려 시도했다. 그러나 이는 동적이 아닌 정적인 방식이다. 따라서 적법한 트래픽을 차단하거나, 심한 경우 악성 트래픽을 통과시키는 긍정 오류를 발생시키는 때가 많다.

개발자 대 방어자
조직이 소프트웨어 정의 환경에서 애플리케이션 보안을 강화할 때 직면하는 가장 큰 도전 과제는 '데브옵스가 빠르게 확산하는 것'과 'CI/CD(Continuous Integration/Delivery)가 강조되고 있는 것'이다. 개발자가 자신에 낯선 방어자가 돼야 하는 것도 도전과제다.

개발자는 보안보다 속도를 우선시한다. 따라서 지속해서 빠르게 기능을 전달하고, 코드와 애플리케이션 보안 테스팅을 소프트웨어 개발 라이프사이클에 통합할 수 있는 보안 솔루션이 필요하다. 많은 이들은 보안 부서에 편견이 있다. 이들은 보안 부서를 기술 적용의 방해 요소, 적용이 끝난 후 취약점을 드러내 환경을 복잡하게 만드는 부서로 본다. 분명 협력적인 관계는 아니다. 개발자는 바로 잡아야 할 취약점이 있는 경우에만 관여한다. 나머지 경우의 스캐닝과 테스팅 프로세스는 일상 활동에 내포돼야 한다.

이를 해결하기 위해서는 개발 부서와 보안 부서 문화가 완전히 바뀌어야 한다. 개발자가 보안 전문가가 될 필요는 없다. 그러나 전체 소프트웨어 라이프사이클에 보안 베스트 프랙티스를 통합해 반영하는 것이 중요하다는 점을 인지해야 한다. 방어자는 먼저 개발자 팀과 더 효과적으로 협력하는 방법, 비난과 논쟁 대신 베스트 프랙티스를 공유하는 방법을 이해해야 한다. 공감이 필요하며, 모든 사람이 보안 책임을 공유해야 한다.

조직은 이런 문화적 변화를 달성하기 위해 애플리케이션 보안 테스팅의 이유를 더 중요하게 강조해야 한다. 과거에는 보안 부서가 테스팅 방법만 설명하는 경우가 많았다. 이는 다른 급한 우선순위가 많은 개발자에 호소력을 갖지 못한다. 개발자가 서로 협력해 문제를 해결하는 가치, 생산 환경에 적용하기에 앞서 취약점을 해결해야 하는 이유를 이해하면, 보안 팀과 훨씬 더 효과적으로 협력하게 될 것이다.

조직은 이런 문화적인 문제들을 해결한 후, 소프트웨어 개발 라이프사이클의 일부로 계속 보안을 적용하는 틀을 만들어야 한다. 이 프레임워크에는 다음이 포함돼야 한다.

• 구축(Building) -- 보안 코딩 프랙티스를 정착시키고, 오픈소스 구성 요소와 써드파티 라이브러리를 정기적으로 감사한다. 코딩한 언어에 기반을 둔 보안 베스트 프랙티스를 적용한다.
• 테스팅(Testing) – 정적 코드 분석(SAST)과 침입 테스트 같은 기술, 동료 간 코드 검토와 버그 바운티(버그 찾기 경쟁) 등 프로그램을 활용해, 개발 과정에 보안을 통합한다.
• 문제 해결(Remediating) -- 취약점 해결을 지속적인 프로세스로 만든다. 원인 분석 결과를 상세한 기록으로 유지하면 과거 취약점에 노출될 확률이 낮아진다.
• 위험 관리(Risk Management) -- 거버넌스, 매트릭스, 보고를 중시한다. 시간 경과와 함께 전체 SDLC를 모니터링 하는 것도 큰 도움이 된다.

네트워크 보안은 항상 보안 프레임워크에 포함돼야 한다. 그러나 우리는 무게 중심을 “왼쪽으로의 옮겨야” 하며, 애플리케이션 중심의 보안을 우선시해야 한다. 애플리케이션 스택이 새로운 경계선이 됐기 때문이다. 더 많은 기업이 데브옵스를 도입하면서, 자동화를 통한 애플리케이션 중심의 스캐닝이 현실이 됐다.

* Mike Kail은 사이브릭(Cybric)의 공동창업자 겸 최고혁신책임자다. 사이브릭을 창업하기 전에는 야후에서 인프라 담당 부사장과 CIO를 역임했다. ciokr@idg.co.kr



2017.02.02

기고 | 문제는 클라우드가 아니라 '안전한 애플리케이션'이다

Mike Kail | Network World
* 본 기고문은 벤더가 작성한 것으로 네트워크 월드 편집진의 수정을 거쳤지만 일부 벤더의 시각이 남아 있을 수 있다.

현재 거의 모든 기업에서 전략 우선순위 중 하나가 클라우드 도입이 됐다. 그러나 클라우드 보안에 대한 두려움, 불확실성, 의심은 여전하다. 하지만 상당수는 근거가 없다. 개인적인 경험에 비춰보면, 데이터가 위치한 장소에 상관없이 대부분 보안 문제의 근원은 코딩 오류와 애플리케이션 취약점에 있었다. 클라우드의 경우, 이렇게 혼돈을 초래하는 부분을 지나쳐 애플리케이션 보안에 초점을 맞춰야 한다.

온프레미스(내부)와 클라우드 보안의 중요한 차이점은 하드웨어 어플라이언스로 보호할 수 있는 잘 구현된 보안 경계선이 없다는 것이다. 보안 부서는 하드웨어 정의 방식에서 벗어나, 소프트웨어 정의 솔루션을 도입해 적용해야 한다. 그리고 클라우드가 이런 방향으로 유도하는 유일한 동인은 아니다. 빠른 속도로 확산하는 '모바일 퍼스트'도 주요 동인 중 하나다.

취약한 애플리케이션 보안이 취약점 노출에 어떤 영향을 주는지 잘 알려져 있다. OWASP(Open Web Application Security Project) 연구를 살펴보면, 몇 년 동안 애플리케이션 보안 취약점이 계속해서 위협이 됐다는 사실을 확인할 수 있다. 지난 10년간 OWASP의 상위 10대 애플리케이션 취약점이 거의 바뀌지 않았다. 방화벽 어플라이언스가 발전했지만, 보안 침해 사고가 경종을 울릴 정도로 증가하는 추세다.

경계선(방어선) 기법에 기반을 둔 보안 어플라이언스는 본질적으로 소프트웨어 솔루션만큼 유연하지 않다. WAF(Web Application Firewalls)가 레이어 7 검사 및 정책을 통해 보안 방어 상태를 개선하려 시도했다. 그러나 이는 동적이 아닌 정적인 방식이다. 따라서 적법한 트래픽을 차단하거나, 심한 경우 악성 트래픽을 통과시키는 긍정 오류를 발생시키는 때가 많다.

개발자 대 방어자
조직이 소프트웨어 정의 환경에서 애플리케이션 보안을 강화할 때 직면하는 가장 큰 도전 과제는 '데브옵스가 빠르게 확산하는 것'과 'CI/CD(Continuous Integration/Delivery)가 강조되고 있는 것'이다. 개발자가 자신에 낯선 방어자가 돼야 하는 것도 도전과제다.

개발자는 보안보다 속도를 우선시한다. 따라서 지속해서 빠르게 기능을 전달하고, 코드와 애플리케이션 보안 테스팅을 소프트웨어 개발 라이프사이클에 통합할 수 있는 보안 솔루션이 필요하다. 많은 이들은 보안 부서에 편견이 있다. 이들은 보안 부서를 기술 적용의 방해 요소, 적용이 끝난 후 취약점을 드러내 환경을 복잡하게 만드는 부서로 본다. 분명 협력적인 관계는 아니다. 개발자는 바로 잡아야 할 취약점이 있는 경우에만 관여한다. 나머지 경우의 스캐닝과 테스팅 프로세스는 일상 활동에 내포돼야 한다.

이를 해결하기 위해서는 개발 부서와 보안 부서 문화가 완전히 바뀌어야 한다. 개발자가 보안 전문가가 될 필요는 없다. 그러나 전체 소프트웨어 라이프사이클에 보안 베스트 프랙티스를 통합해 반영하는 것이 중요하다는 점을 인지해야 한다. 방어자는 먼저 개발자 팀과 더 효과적으로 협력하는 방법, 비난과 논쟁 대신 베스트 프랙티스를 공유하는 방법을 이해해야 한다. 공감이 필요하며, 모든 사람이 보안 책임을 공유해야 한다.

조직은 이런 문화적 변화를 달성하기 위해 애플리케이션 보안 테스팅의 이유를 더 중요하게 강조해야 한다. 과거에는 보안 부서가 테스팅 방법만 설명하는 경우가 많았다. 이는 다른 급한 우선순위가 많은 개발자에 호소력을 갖지 못한다. 개발자가 서로 협력해 문제를 해결하는 가치, 생산 환경에 적용하기에 앞서 취약점을 해결해야 하는 이유를 이해하면, 보안 팀과 훨씬 더 효과적으로 협력하게 될 것이다.

조직은 이런 문화적인 문제들을 해결한 후, 소프트웨어 개발 라이프사이클의 일부로 계속 보안을 적용하는 틀을 만들어야 한다. 이 프레임워크에는 다음이 포함돼야 한다.

• 구축(Building) -- 보안 코딩 프랙티스를 정착시키고, 오픈소스 구성 요소와 써드파티 라이브러리를 정기적으로 감사한다. 코딩한 언어에 기반을 둔 보안 베스트 프랙티스를 적용한다.
• 테스팅(Testing) – 정적 코드 분석(SAST)과 침입 테스트 같은 기술, 동료 간 코드 검토와 버그 바운티(버그 찾기 경쟁) 등 프로그램을 활용해, 개발 과정에 보안을 통합한다.
• 문제 해결(Remediating) -- 취약점 해결을 지속적인 프로세스로 만든다. 원인 분석 결과를 상세한 기록으로 유지하면 과거 취약점에 노출될 확률이 낮아진다.
• 위험 관리(Risk Management) -- 거버넌스, 매트릭스, 보고를 중시한다. 시간 경과와 함께 전체 SDLC를 모니터링 하는 것도 큰 도움이 된다.

네트워크 보안은 항상 보안 프레임워크에 포함돼야 한다. 그러나 우리는 무게 중심을 “왼쪽으로의 옮겨야” 하며, 애플리케이션 중심의 보안을 우선시해야 한다. 애플리케이션 스택이 새로운 경계선이 됐기 때문이다. 더 많은 기업이 데브옵스를 도입하면서, 자동화를 통한 애플리케이션 중심의 스캐닝이 현실이 됐다.

* Mike Kail은 사이브릭(Cybric)의 공동창업자 겸 최고혁신책임자다. 사이브릭을 창업하기 전에는 야후에서 인프라 담당 부사장과 CIO를 역임했다. ciokr@idg.co.kr

X