2020.03.19

리뷰 | 개발 코드에서 취약점 찾기…보안 테스트 솔루션 '시프트레프트'

John Breeden II | CSO
사이버 보안 전문가가 '문제 해결을 왼쪽으로 옮긴다'라고 말할 때가 있다. 이는 문제 해결 과정을 애플리케이션 제작 흐름도에서 가장 왼쪽, 즉 코드 생성 시점에 더 가깝게 옮긴다는 것을 의미한다. 애플리케이션이 이미 배포된 상태에서 발견되는 오류는 바로잡는 데 큰 비용이 들고, 데이터 침해의 원인이 되기도 한다. 따라서 이상적인 것은 최대한 왼쪽에서, 코드를 한창 개발하는 중에 수정하는 것이다.

개발자용 툴인 시프트레프트(ShiftLeft) 플랫폼의 이름도 여기에 착안했다. 트래픽 분석과 동적 애플리케이션 보안 테스트(DAST) 툴을 통합한 것으로, 코드 또는 각 영역에서 배포 후 문제를 일으킬 가능성이 있는 모든 취약점을 찾아낸다.

이 플랫폼의 이면은 매우 복잡하지만 기업 내에 설치하는 것은 거의 없다. 한두 줄의 코드만 추가하면 지라(Jira), 뱀부(Bamboo), 젠킨스(Jenkins), 도커(Docker), 팀시티(TeamCity), 트래비스(Travis), GoCD, 서클CI(CircleCI), 그리고 내부 또는 사유 시스템을 포함한 거의 모든 지속적 통합(CI) 시스템과 통합할 수 있다. 코드는 단순히 개발 프로세스를 시프트레프트와 연결하는 역할만 하므로 개발자는 기존의 익숙한 플랫폼 내에서 계속 작업할 수 있다. 배포에 걸리는 시간도 몇 분이면 충분하다.
 
시프트레프트 플랫폼은 지라, 서클CI, 젠킨스 등 다양한 CI 시스템과 통합할 수 있다. 코드 몇 줄만 추가하면 된다.

시프트레프트의 가격은 두 가지 요소에 따라 결정된다. 하나는 플랫폼을 사용하는 개발자의 수(시트 라이선스와 비슷), 다른 하나는 보호되는 코드의 라인 수다. 무료 버전도 있는데, 모든 기능을 사용할 수 있지만 최대 1만 2,000라인까지만 보호된다.
 

시프트레프트 작동 방식

시프트레프트는 프로그램 또는 애플리케이션의 동작을 그래픽으로 보여준다. 예를 들어 액세스 포털이 인증 계층 위에 있다가 최종적으로 데이터베이스 서버로 이동할 수 있다. 그래프에는 오픈소스 라이브러리, 애플리케이션 프로그래밍 인터페이스(API), 마이크로서비스 등이 포함된다. 플랫폼은 그래픽을 사용해 사용자나 서비스가 앱 내에서 어떻게 상호작용할지 도식화한 후 취약점, 정책 위반, 사이버 보안 위험을 찾는다. 이를 통해 시프트레프트는 매우 빠르게 분석을 수행하고 애플리케이션을 개별 데이터 포인트 모음이 아닌 하나의 전체적인 덩어리로 다룬다.

이 강력한 엔진 기능은 대부분 숨겨진 상태로 작동한다. 앱에 대한 변경이 요청될 때마다 플랫폼은 그래프를 만들어 분석할 수 있도록 시프트레프트 클라우드로 보낸다. 무거운 작업은 모두 클라우드 내에서 수행되므로 분석 속도가 매우 빠르다. 이번 리뷰에서는 50만 라인 이상의 앱을 분석했는데 단 1분이 소요됐다.

또한, 기업 외부로 것은 그래프 데이터뿐이다. 실제 애플리케이션 데이터는 나가지 않는다. 그래프 데이터 역시 강력하게 암호화된다. 이 정도면 대부분 기업의 보안 요건을 충족하겠지만 특별히 보안이 엄격한 기업이나 엄격한 규정에 따라 어떠한 데이터도 자체 네트워크 외부로 내보낼 수 없는 기업이라면 시프트레프트 분석을 온프레미스에서 수행할 수 있다. 플랫폼이 생성한 데이터는 API를 통해 보안 정보 및 이벤트 관리(SIEM) 툴로도 전송할 수 있다. 단, 이 경우 스캔 시간이 증가하고 클라우드 기반의 시프트레프트 제어판 및 사용자 인터페이스를 사용할 수 없다. 그러나 어쨌든 작동은 된다.
 
시프트레프트 플랫폼은 단순히 문제를 표시하는 것 외에 발견한 보안 취약점에 대한 자세한 설명을 제공한다.

분석이 끝나면 개발자는 시프트레프트가 발견한 모든 취약점에 대한 보고서와 더 자세한 설명을 볼 수 있는 링크를 받게 된다. 이 링크는 개발자가 로그인 정보를 입력하는 시프트레프트 로그인 화면으로 연결된다. 이미 작업 중인 시스템에 로그인한 경우라면 바로 인터페이스로 연결된다.
 

시프트레프트 테스트

시프트레프트의 주 대시보드는 많은 부분이 그래픽으로 구성되며, 취약점은 심각, 보통, 정보 단계로 구분된다. 각 요소를 클릭해 문제 또는 잠재적 문제를 손쉽게 세부적으로 살펴볼 수 있다.
 
클라우드 포탈을 통해 대시보드에 접근할 수 있다. 여기서 정책을 위반하거나 보안 취약점을 가진 코드 관련해 자세한 내용을 볼 수 있다.

시프트레프트는 발견된 문제나 취약점을 매우 상세히 기술한다. 발견된 구체적인 문제, 심각도, 관련된 코드 라인을 보여주며 기존 문제와 새로 발견된 문제(예를 들어 최근 애플리케이션 코드 변경에 따라 발생한 문제)를 구분해 표시한다.

또한 취약점이 위험한 이유와 문제를 해결하는 일반적인 방법을 알려준다. 이 설명 섹션에는 발견된 특정 문제에 관한 더 세부적인 정보를 제공하는 오픈 웹 애플리케이션 보안 프로젝트(OWASP)와 같은 유용한 소스로 연결되는 링크도 포함된다. 내부 사이버 보안 데이터베이스 등 기업이 선호하는 정보 출처가 있는 경우 관리자가 자체 링크를 추가할 수도 있다.

시프트레프트 플랫폼의 인상적인 기능 중 하나는 실제 사이버 보안 문제뿐만 아니라 코드 내에 숨겨진 잠재적 문제를 찾아주는 기능이다. 이번 리뷰에서는 기능을 테스트하기 위해 병·의원에서 의료 기록을 분류하는 데 사용되는 애플리케이션을 로드한 다음 애플리케이션에 활동 로그 파일을 생성하도록 하는 간단한 명령줄을 추가해 봤다. 그러자 시프트레프트는 이 변경을 잠재적인 위험 부분으로 탐지해서 차단했다.
 
인증 절차 없이 코드를 수정해봤다. 해커나 사용자가 시스템을 해킹했음을 의미할 수 있는 상황이다.

문제를 세부적으로 살펴보니, 시프트레프트가 새 명령을 위험 요소로 분류한 이유는 이 명령과 관련된 확인 또는 인증 프로세스가 없었기 때문이었다. 시프트레프트 플랫폼은 앱을 표현하기 위해 생성한 그래프를 통해 작동하면서 인증 프로세스가 없으면 악의적인 사용자가 코드 주입을 사용해 새 명령을 조작, 로그 파일을 보거나 환자 데이터를 침해할 가능성이 있다고 판단했다. 실제로 이 애플리케이션은 의료용이므로 의료보험 양도 및 책임에 관한 법률(HIPAA)이 적용된다. 보호되는 환자 데이터가 노출될 수 있으므로 잠재적 문제 수준이 심각 단계의 취약점으로 승격됐다.
 
시프트레프트는 코드의 문제를 찾은 것은 물론 신용카드 번호 같은 민감한 데이터가 승인되지 않은 사용자에게 노출될 수 있음을 잡아냈다.

시프트레프트 플랫폼은 잠재적인 문제와 해당 심각도가 지정된 이유를 설명하고, 인증을 추가하거나 다른 방식으로 로그 파일을 생성하는 등의 비교적 쉬운 몇 가지 수정 방안을 제안했다. 문제가 수정되자 시프트레프트는 명령이 안전한 방식으로 추가되었음을 확인했다.

애플리케이션 취약점 발견과 수정 단계를 개발 프로세스에 더 가까운 쪽으로 옮기는 것은 대부분 기업이 추구해야 할 목표다. 이렇게 하면 데이터 침해 가능성이 줄어들 뿐만 아니라 나중에 수정하는 것보다 비용과 시간이 덜 든다. 이를 위해서는 개발자가 사용할 수 있도록 툴을 설계해야 하는데, 시프트레프트 플랫폼이 바로 그러한 조건을 충족하는 툴이다.

시프트레프트는 거의 모든 언어 및 CI 시스템에서 작동하며 사용하기가 매우 쉽고 개발 프로세스에 바로 통합되므로 별도의 교육도 필요 없다. 취약한 코드가 프로덕션 환경에 도달하기에 앞서 초기에 문제를 수정하고자 하는 모든 기업에 유용하다. editor@itworld.co.kr
 


2020.03.19

리뷰 | 개발 코드에서 취약점 찾기…보안 테스트 솔루션 '시프트레프트'

John Breeden II | CSO
사이버 보안 전문가가 '문제 해결을 왼쪽으로 옮긴다'라고 말할 때가 있다. 이는 문제 해결 과정을 애플리케이션 제작 흐름도에서 가장 왼쪽, 즉 코드 생성 시점에 더 가깝게 옮긴다는 것을 의미한다. 애플리케이션이 이미 배포된 상태에서 발견되는 오류는 바로잡는 데 큰 비용이 들고, 데이터 침해의 원인이 되기도 한다. 따라서 이상적인 것은 최대한 왼쪽에서, 코드를 한창 개발하는 중에 수정하는 것이다.

개발자용 툴인 시프트레프트(ShiftLeft) 플랫폼의 이름도 여기에 착안했다. 트래픽 분석과 동적 애플리케이션 보안 테스트(DAST) 툴을 통합한 것으로, 코드 또는 각 영역에서 배포 후 문제를 일으킬 가능성이 있는 모든 취약점을 찾아낸다.

이 플랫폼의 이면은 매우 복잡하지만 기업 내에 설치하는 것은 거의 없다. 한두 줄의 코드만 추가하면 지라(Jira), 뱀부(Bamboo), 젠킨스(Jenkins), 도커(Docker), 팀시티(TeamCity), 트래비스(Travis), GoCD, 서클CI(CircleCI), 그리고 내부 또는 사유 시스템을 포함한 거의 모든 지속적 통합(CI) 시스템과 통합할 수 있다. 코드는 단순히 개발 프로세스를 시프트레프트와 연결하는 역할만 하므로 개발자는 기존의 익숙한 플랫폼 내에서 계속 작업할 수 있다. 배포에 걸리는 시간도 몇 분이면 충분하다.
 
시프트레프트 플랫폼은 지라, 서클CI, 젠킨스 등 다양한 CI 시스템과 통합할 수 있다. 코드 몇 줄만 추가하면 된다.

시프트레프트의 가격은 두 가지 요소에 따라 결정된다. 하나는 플랫폼을 사용하는 개발자의 수(시트 라이선스와 비슷), 다른 하나는 보호되는 코드의 라인 수다. 무료 버전도 있는데, 모든 기능을 사용할 수 있지만 최대 1만 2,000라인까지만 보호된다.
 

시프트레프트 작동 방식

시프트레프트는 프로그램 또는 애플리케이션의 동작을 그래픽으로 보여준다. 예를 들어 액세스 포털이 인증 계층 위에 있다가 최종적으로 데이터베이스 서버로 이동할 수 있다. 그래프에는 오픈소스 라이브러리, 애플리케이션 프로그래밍 인터페이스(API), 마이크로서비스 등이 포함된다. 플랫폼은 그래픽을 사용해 사용자나 서비스가 앱 내에서 어떻게 상호작용할지 도식화한 후 취약점, 정책 위반, 사이버 보안 위험을 찾는다. 이를 통해 시프트레프트는 매우 빠르게 분석을 수행하고 애플리케이션을 개별 데이터 포인트 모음이 아닌 하나의 전체적인 덩어리로 다룬다.

이 강력한 엔진 기능은 대부분 숨겨진 상태로 작동한다. 앱에 대한 변경이 요청될 때마다 플랫폼은 그래프를 만들어 분석할 수 있도록 시프트레프트 클라우드로 보낸다. 무거운 작업은 모두 클라우드 내에서 수행되므로 분석 속도가 매우 빠르다. 이번 리뷰에서는 50만 라인 이상의 앱을 분석했는데 단 1분이 소요됐다.

또한, 기업 외부로 것은 그래프 데이터뿐이다. 실제 애플리케이션 데이터는 나가지 않는다. 그래프 데이터 역시 강력하게 암호화된다. 이 정도면 대부분 기업의 보안 요건을 충족하겠지만 특별히 보안이 엄격한 기업이나 엄격한 규정에 따라 어떠한 데이터도 자체 네트워크 외부로 내보낼 수 없는 기업이라면 시프트레프트 분석을 온프레미스에서 수행할 수 있다. 플랫폼이 생성한 데이터는 API를 통해 보안 정보 및 이벤트 관리(SIEM) 툴로도 전송할 수 있다. 단, 이 경우 스캔 시간이 증가하고 클라우드 기반의 시프트레프트 제어판 및 사용자 인터페이스를 사용할 수 없다. 그러나 어쨌든 작동은 된다.
 
시프트레프트 플랫폼은 단순히 문제를 표시하는 것 외에 발견한 보안 취약점에 대한 자세한 설명을 제공한다.

분석이 끝나면 개발자는 시프트레프트가 발견한 모든 취약점에 대한 보고서와 더 자세한 설명을 볼 수 있는 링크를 받게 된다. 이 링크는 개발자가 로그인 정보를 입력하는 시프트레프트 로그인 화면으로 연결된다. 이미 작업 중인 시스템에 로그인한 경우라면 바로 인터페이스로 연결된다.
 

시프트레프트 테스트

시프트레프트의 주 대시보드는 많은 부분이 그래픽으로 구성되며, 취약점은 심각, 보통, 정보 단계로 구분된다. 각 요소를 클릭해 문제 또는 잠재적 문제를 손쉽게 세부적으로 살펴볼 수 있다.
 
클라우드 포탈을 통해 대시보드에 접근할 수 있다. 여기서 정책을 위반하거나 보안 취약점을 가진 코드 관련해 자세한 내용을 볼 수 있다.

시프트레프트는 발견된 문제나 취약점을 매우 상세히 기술한다. 발견된 구체적인 문제, 심각도, 관련된 코드 라인을 보여주며 기존 문제와 새로 발견된 문제(예를 들어 최근 애플리케이션 코드 변경에 따라 발생한 문제)를 구분해 표시한다.

또한 취약점이 위험한 이유와 문제를 해결하는 일반적인 방법을 알려준다. 이 설명 섹션에는 발견된 특정 문제에 관한 더 세부적인 정보를 제공하는 오픈 웹 애플리케이션 보안 프로젝트(OWASP)와 같은 유용한 소스로 연결되는 링크도 포함된다. 내부 사이버 보안 데이터베이스 등 기업이 선호하는 정보 출처가 있는 경우 관리자가 자체 링크를 추가할 수도 있다.

시프트레프트 플랫폼의 인상적인 기능 중 하나는 실제 사이버 보안 문제뿐만 아니라 코드 내에 숨겨진 잠재적 문제를 찾아주는 기능이다. 이번 리뷰에서는 기능을 테스트하기 위해 병·의원에서 의료 기록을 분류하는 데 사용되는 애플리케이션을 로드한 다음 애플리케이션에 활동 로그 파일을 생성하도록 하는 간단한 명령줄을 추가해 봤다. 그러자 시프트레프트는 이 변경을 잠재적인 위험 부분으로 탐지해서 차단했다.
 
인증 절차 없이 코드를 수정해봤다. 해커나 사용자가 시스템을 해킹했음을 의미할 수 있는 상황이다.

문제를 세부적으로 살펴보니, 시프트레프트가 새 명령을 위험 요소로 분류한 이유는 이 명령과 관련된 확인 또는 인증 프로세스가 없었기 때문이었다. 시프트레프트 플랫폼은 앱을 표현하기 위해 생성한 그래프를 통해 작동하면서 인증 프로세스가 없으면 악의적인 사용자가 코드 주입을 사용해 새 명령을 조작, 로그 파일을 보거나 환자 데이터를 침해할 가능성이 있다고 판단했다. 실제로 이 애플리케이션은 의료용이므로 의료보험 양도 및 책임에 관한 법률(HIPAA)이 적용된다. 보호되는 환자 데이터가 노출될 수 있으므로 잠재적 문제 수준이 심각 단계의 취약점으로 승격됐다.
 
시프트레프트는 코드의 문제를 찾은 것은 물론 신용카드 번호 같은 민감한 데이터가 승인되지 않은 사용자에게 노출될 수 있음을 잡아냈다.

시프트레프트 플랫폼은 잠재적인 문제와 해당 심각도가 지정된 이유를 설명하고, 인증을 추가하거나 다른 방식으로 로그 파일을 생성하는 등의 비교적 쉬운 몇 가지 수정 방안을 제안했다. 문제가 수정되자 시프트레프트는 명령이 안전한 방식으로 추가되었음을 확인했다.

애플리케이션 취약점 발견과 수정 단계를 개발 프로세스에 더 가까운 쪽으로 옮기는 것은 대부분 기업이 추구해야 할 목표다. 이렇게 하면 데이터 침해 가능성이 줄어들 뿐만 아니라 나중에 수정하는 것보다 비용과 시간이 덜 든다. 이를 위해서는 개발자가 사용할 수 있도록 툴을 설계해야 하는데, 시프트레프트 플랫폼이 바로 그러한 조건을 충족하는 툴이다.

시프트레프트는 거의 모든 언어 및 CI 시스템에서 작동하며 사용하기가 매우 쉽고 개발 프로세스에 바로 통합되므로 별도의 교육도 필요 없다. 취약한 코드가 프로덕션 환경에 도달하기에 앞서 초기에 문제를 수정하고자 하는 모든 기업에 유용하다. editor@itworld.co.kr
 


X