자동차 공급업체, CI Fuzz 퍼즈 테스트 로 버그 32% 발견

min Read

이번 블로그에서는 한 글로벌 자동차 부품 공급업체가 자회사에서 개발한 소프트웨어에 대해 정적 분석과 AI 기반 퍼즈 테스트 를 결합해 보안 평가를 수행한 사례를 소개합니다.

이 프로젝트는 약 1,000만 줄에 달하는 C 언어 코드로 구성되어 있으며, Classic AUTOSAR 아키텍처를 기반으로 설계되었습니다. 초기 단계에서 이 기업은 정적 애플리케이션 보안 테스트(SAST)를 도입했으나, 모든 보안 규칙을 활성화했을 때 수백만 건에 달하는 이슈가 보고되면서 실질적으로 중요한 문제를 식별하는 데 어려움을 겪었습니다.

이에 따라 프로젝트 팀은 보안 이슈를 효과적으로 관리하기 위해 MISRA C와 CERT C 같은 보안 코딩 표준에 기반한 핵심 규칙만을 선별 적용하는 방식으로 분석 범위를 조정했습니다. 그리고 정적 분석의 한계를 보완하기 위해 Code Intelligence의 퍼즈 테스트를 병행 적용하여 코드 수준의 보안성과 안정성을 보다 정밀하게 검증할 수 있는 체계를 구축했습니다.

테스트 전략 및 주요 결과

정적 분석만으로는 파악할 수 없거나 잘못된 경고(false positive)로 인해 놓칠 수 있는 취약점을 보완하기 위해, 팀은 Code Intelligence의 퍼즈 테스트 솔루션인 CI Fuzz를 채택했습니다.

CI Fuzz는 시스템 수준에서 퍼징 테스트를 수행하며, 실제 자동차 통신 프로토콜인 CAN과 SPI를 활용해 전자제어장치(ECU)에 직접 입력을 전달합니다. 이를 통해 시뮬레이션 수준을 넘어 실제 하드웨어 환경에서 발생할 수 있는 보안 결함까지 효과적으로 탐지할 수 있었습니다.

퍼징 테스트는 실제로 유효한 입력 데이터를 기반으로 동작하기 때문에, 기존 테스트 방식 대비 허위 경고(false positive)가 거의 없고, 재현 가능한 실제 취약점을 정확히 식별하는 데 강점을 보였습니다.

정적 분석과 퍼징 테스트를 함께 활용한 결과, 다음과 같은 분석 결과가 도출되었습니다:

Mayhem과 Code Intelligence는 이러한 방향성을 기반으로 개발되었으며, 각기 다른 기술적 구현과 타깃 환경에 맞춰 최적화된 솔루션을

예를 들어 버퍼 오버플로우와 같은 취약점은 두 도구 모두에서 감지될 수 있지만, 정적 분석 도구에서만 보고된 경우 개발자들이 이를 거짓 경고로 간주해 무시하는 경향이 있었습니다. 반면, CI Fuzz는 취약점을 유발한 입력값과 코드 위치를 함께 제공하기 때문에, 개발자들이 문제를 쉽게 재현하고 신속하게 수정할 수 있었습니다.

퍼즈 테스트
Source: www.code-intelligence.com | Approximate Bug Detection Split Between SAST and Code Intelligence's Fuzz Testing
퍼즈 테스트

정적 분석과 퍼즈 테스트 의 통합 효과

이처럼 정적 분석과 동적 테스트, 특히 퍼즈 테스트를 결합한 방법은 자동차 소프트웨어 개발에서 매우 효과적인 접근법으로 인정받고 있습니다.

개발 초기 단계부터 이 두 테스트 방식을 함께 적용하면, 다양한 유형의 취약점을 보다 조기에 식별할 수 있으며, 거짓 경고(false positives)를 줄이고 전반적인 보안 수준을 안정적으로 끌어올릴 수 있는 장점이 있습니다.

정적 분석(SAST)과 퍼즈 테스트를 통합함으로써 다음과 같은 효과를 기대할 수 있습니다:

더 폭넓은 유형의 취약점 탐지

정적 분석에서 놓칠 수 있는 런타임 오류나, 퍼즈 테스트에서 감지하기 어려운 구조적 결함을 상호 보완적으로 탐지할 수 있습니다.

재현 가능한 이슈 제공으로 디버깅 효율 향상

퍼즈 테스트는 실제 입력 데이터를 기반으로 문제를 보고하므로, 개발자가 이슈를 빠르게 재현하고 수정할 수 있습니다.

업계 표준 코딩 가이드라인 준수

MISRA C, CERT C와 같은 자동차 소프트웨어 보안 표준을 만족하며, 규제 대응에도 유리합니다.

전반적인 소프트웨어 품질 향상

코드의 신뢰성과 보안성이 동시에 강화되어, 안전이 핵심인 시스템 개발에 최적화된 테스트 전략이 됩니다.

정적 코드 분석 (Static Code Analysis)
정적 분석 + 코드 퍼즈 테스트 (Static Analysis + Code Fuzz Testing)
최종 사용자
개발자 및 테스트 팀
개발자 및 테스트 팀
애플리케이션 지식
전체 코드에 대한 이해 프로그램의 내부 구조를 분석하여 전체 맥락을 파악
전체 코드에 대한 이해 프로그램의 내부 구조를 분석하여 전체 맥락을 파악
소스 코드 접근
필요함
필요함
코드 분석 유형
정적 분석
코드를 실제로 실행하지 않고 분석함
정적 + 동적 분석
소스 코드와 실행 중인 애플리케이션을 함께 분석함
버그 및 취약점 탐지
- 안전하지 않은 코딩 관행
- 악성 코드
- 인증 및 인가 문제
- 코드 변조 및 인젝션 결함
- 안전하지 않은 코딩 관행
- 악성 코드
- 인증 및 인가 문제
- 코드 변조 및 인젝션 결함
- 메모리 손상 문제
- 입력값 검증 문제
- 프로토콜 파싱 결함
- 복잡한 논리 결함
- 외부 시스템과의 상호작용 문제
- 환경 특화 문제
- 보안 설정 오류
결과 신뢰도
낮음
많은 수의 오탐(false positive)과 중복 항목 발생
높음
퍼즈 테스트는 실제 문제가 있는 경우만 표시
문제 재현 가능성
제한적
취약점을 재현하기 위한 입력값 제공에 어려움이 있음
완전함
퍼즈 테스트는 개발자가 버그를 재현하고 정확한 코드 위치를 파악할 수 있는 입력값 제공
개발 프로세스 통합
완전함
IDE에서 직접 실행 가능
완전함
정적 분석은 IDE에서 직접 실행 가능하며, 퍼즈 테스트도 단위 테스트처럼 IDE에서 실행 가능

이번 프로젝트 사례는 정적 분석과 퍼즈 테스트를 통합한 접근법이 대규모 임베디드 소프트웨어 환경에서 실질적인 보안 효과를 낼 수 있다는 점을 잘 보여줍니다.

특히 자동차 산업처럼 안전성과 신뢰성이 핵심인 분야에서는 두 가지 테스트 방식을 조기에 병행함으로써 문제 탐지 범위를 넓히고, 디버깅 효율을 높이며, 규제 대응까지 한 번에 충족할 수 있는 전략적 이점이 있습니다.

정적 분석은 코드 품질과 규정 준수를 확인하는 데 강점을 가지고 있으며, 퍼즈 테스트는 실제 동작 조건에서 발생할 수 있는 취약점을 식별하는 데 뛰어납니다. 이 둘을 적절히 결합하면 단일 도구로는 놓칠 수 있는 위협까지도 더 넓고 정확하게 탐지할 수 있습니다.

보안과 안전이 요구되는 임베디드 시스템 개발 환경이라면,

정적 분석과 퍼즈 테스트의 통합은 더 이상 선택이 아닌 필수입니다.

Latest Posts

Subscribe to
SLEXN NEWSLETTER

개인정보 수집 및 이용

뉴스레터 발송을 위한 최소한의 개인정보를 수집하고 이용합니다. 수집된 정보는 발송 외 다른 목적으로 이용되지 않으며, 서비스가 종료되거나 구독을 해지할 경우 즉시 파기됩니다.

SOLUTION

Tags

Category

Most Commented Posts