1. 소스코드 정적분석과 오경보
소스 코드의 정적 분석은 소프트웨어 개발 과정에서 품질을 유지하고 보안을 강화하는 중요한 단계입니다. 그러나 소프트웨어를 실제로 실행시키지 않는 정적 분석의 특성 상 결과는 항상 정확하지 않을 수 있습니다. 때로는 오류가 아닌 것을 오류로 잘못 분류하는 경우가 발생할 수 있습니다. 이러한 경우 “오경보”라고 불리는 잘못된 경보가 발생하게 됩니다.
이러한 오경보를 처리하기 위해 개발자는 검출된 오류 경보에 대해 분석 결과를 검토하여 실제 발생 가능성을 판단하는 과정을 수행합니다. 그러나 많게는 수 천만 라인에 달하는 소프트웨어 검출된 많은 양의 오류 경보를 검토하는 과정은 개발자의 시간과 리소스를 낭비하는 결과를 초래할 수 있습니다.
2. 효율적으로 오경보를 검토하는 방법은 무엇인가요?
많은 양의 오류 경보를 검토하는 과정을 효율화하는 가장 대표적인 방법은 경보의 분류입니다. 경보의 분류란, 수 많은 오류 경보들에 대해서 서로 공통점이 있거나 비슷해 보이는 경보들끼리 묶어서 분석하는 방법입니다. 경보 유형을 발생 과정을 기준으로 분류하고 분석한다면 수 많은 오류 경보를 하나씩 분석하는 것 보다 빠르고 정확하게 오경보의 가능성이 높은 경보 유형을 확인할 수 있으며 이에 대해 추가적인 분석이나 대비를 할 수 있습니다.
경보 분류 기술의 장점은 다음과 같습니다. 먼저, 개발자의 수작업을 최소화하여 리소스를 효율적으로 활용할 수 있습니다. 또한, 자동화된 경보 분류 기술을 소프트웨어 개발 과정에 적용하면 더 빠르고 더 정확하게 오경보를 분류할 수 있게됩니다. 이는 궁극적으로 개발 프로세스를 향상시키는 것은 물론, 보안 수준 강화를 위한 개발팀과 보안팀의 긴밀한 협업으로 이어져 데브섹옵스 실현이 가능해집니다.
ㅅ
3. 오류 경보 유형을 분류하는 과정은 어떻게 되나요?
오류 경보 유형을 분류할 때에는 경보 경로와 연관된 소스 코드 정보를 활용합니다. 경보 경로란, 경보가 실제로 발생했다고 가정했을 때 소프트웨어가 실행되었을 것으로 예상되는 소스 코드 상의 실행 경로입니다. 경보 경로에 직접적으로 연관된 소스 코드 정보가 해당 오류 경보를 나타내는 가장 정확한 정보일 것입니다. 이 과정에서 경보 경로에 포함되지 않는 불필요한 소스 코드 정보들은 모두 제거하고 꼭 필요한 정보만 분류를 위해 남겨둡니다.
얻어진 경보 정보를 활용하여 유형을 분류하는 과정에서는 “클러스터링” 기법이 사용됩니다. 클러스터링은 비슷한 특성을 가진 데이터를 그룹으로 묶는 기술입니다. 주어진 데이터의 특성을 기반으로 유사성을 측정하고, 그 유사성에 따라 데이터를 여러 군집으로 그룹화합니다. 보다 구체적으로는, 임의의 클러스터를 만들고 데이터들을 각 클러스터에 가장 가까운 중심으로 할당합니다. 이후 할당된 데이터 포인트를 기반으로 새로운 중심을 계산하고, 이 과정을 반복하여 최적의 클러스터를 찾는 것입니다.
스패로우가 보유하고 있는 오류 경보 유형 분류 기술은 기존의 정적 분석기로부터 발생하는 오류 경보를 처리하는 데에 소요되는 리소스의 낭비를 방지할수 있도록 소스 코드에서 발생하는 다양한 경보를 자동으로 분류하고 분석함으로써 리소스를 효율적으로 관리하고 오류를 신속하게 해결하는 것을 목표로 합니다.
소프트웨어의 잠재적인 오류나 보안 취약점을 많이 검출하고 조치하는 것도 중요하지만, 보다 효율적이고 정확하게 조치할 수 있게 하는 것 역시 신속하고 정확한 대응을 필요로 하는 DevSecOps 환경에 꼭 필요한 기술입니다. 스패로우와 함께 누구보다 빠르고 남들보다 정확하게 안전한 소프트웨어를 만들어보세요!
