정적애플리케이션보안테스트(SAST) (Static Application Security Testing)
한 줄 정의: 프로그램을 실행하지 않은 상태에서 소스코드나 바이너리를 분석하여 잠재적 보안 취약점을 찾아내는 검사 기법입니다.
쉽게 풀면
정적애플리케이션보안테스트는 요리를 실제로 만들어보지 않고 레시피만 보고 위험한 재료 조합이나 잘못된 순서가 있는지 검토하는 것과 비슷합니다. 프로그램의 소스코드를 처음부터 끝까지 읽어가며 위험한 패턴이나 안전하지 않은 코드 작성 방식을 찾아내는 방식입니다. 프로그램을 실제로 실행시키지 않아도 되기 때문에 개발 초기 단계부터 적용할 수 있다는 장점이 있습니다.
왜 중요한가
개발 초기에 취약점을 발견할수록 수정 비용이 낮아지기 때문에, 정적애플리케이션보안테스트는 소프트웨어 개발 생명주기 전반의 보안성을 높이는 핵심 기법으로 정보보안학 연구와 실무에서 널리 다뤄집니다.
논문에서는 이렇게 쓰입니다
"여러 오픈소스 정적애플리케이션보안테스트(SAST) 도구의 취약점 탐지율과 오탐율을 비교 실험하였다."
정적분석 도구 간의 성능 차이를 비교한 연구 사례입니다.
"정적분석 결과를 기계학습 모델에 결합하여 오탐을 줄이는 방법을 제안하였다."
정적분석과 기계학습을 결합한 개선 기법을 다룬 연구 사례입니다.
조금 더 깊게 보면
정적애플리케이션보안테스트는 코드의 구조와 데이터 흐름을 분석하여 위험한 패턴을 탐지하며, 실제 실행 없이 이루어지기 때문에 실행 경로에 따라 발생하는 문제를 놓치거나 반대로 실제로는 문제가 되지 않는 코드까지 취약점으로 표시하는 오탐이 발생할 수 있습니다. 이러한 한계를 보완하기 위해 동적 분석 기법과 함께 사용되는 경우가 많습니다.
주의할 점
정적분석은 오탐과 미탐이 함께 존재할 수 있으므로, 도구가 제시한 결과를 그대로 신뢰하기보다는 사람이 검토하는 과정이 필요합니다.