오늘날 소프트웨어 개발 환경에서 보안과 신뢰성은 그 무엇보다 중요합니다.
기업이나 공공기관에서 대규모 프로젝트를 개발하다 보면, 모든 기능을 처음부터 끝까지 직접 개발하기보다는 이미 잘 알려지고 검증된 오픈소스 라이브러리를 모듈 형태로 조합해 사용하는 경우가 많습니다.
그 이유는 간단합니다. 개발 생산성 측면에서 모든 모듈과 컴포넌트를 자체 개발하는 것은 매우 비효율적일 수밖에 없기 때문입니다. 오히려 안정적이고 유지보수가 잘 이루어지는 오픈소스를 적절히 활용하면, 전체 제품의 품질과 완성도를 크게 높일 수 있습니다.
하지만 프로젝트 규모가 커질수록 사용되는 오픈소스 라이브러리와 서드파티 패키지의 수가 기하급수적으로 늘어나면서, 이들에 대한 관리와 통제가 점점 어려워집니다. 특히, 사용 중인 오픈소스 라이브러리에 보안 취약점이 포함되어 있다면, 해당 프로젝트 전체가 위험에 노출될 수 있습니다. 작게는 예기치 못한 런타임 버그로 인해 사용자 불편이 발생할 수 있고, 심할 경우에는 해커가 제로데이 취약점을 악용해 랜섬웨어 공격, 코인마이닝, 고객 정보 유출 등의 치명적인 보안 사고로 이어질 수 있습니다.
따라서 대규모 프로젝트일 수록 사용하고 있는 오픈소스 라이브러리에 대한 명세서 작성 및 취약점에 대한 지속적인 스캐닝을 통해 프로젝트에서 의존해서 사용중인 오픈소스 라이브러리 및 3rd party 패키지가 문제가 없는지 모니터링을 지속적으로 해주어야 합니다.
이때 프로젝트가 사용하고 있는 모든 오픈소스에 대한 명세서(라이브러리, 의존성, 버전, 라이센스)를 SBOM이라고 하고, SBOM에서 명시되어 있는 오픈소스에 대한 취약점을 검사하여 관리 하는 것을 SCA라고 합니다.
하지만 현실적으로 이러한 작업을 모두 수작업으로 진행하는 것은 매우 비효율적이고, 프로젝트 진행 속도를 떨어뜨릴 수밖에 없습니다. 수십, 수백 개의 오픈소스를 일일이 분석하고 관리하는 일은 사람이 할 수 있는 범위를 쉽게 넘어서기 때문입니다.
이러한 한계를 해결하기 위해 최근에는 SBOM/SCA를 자동으로 생성하고 관리해주는 플랫폼들이 주목받고 있습니다. 그리고 여기에 더해, 아직 알려지지 않은 보안 취약점까지도 사전에 탐지할 수 있는 Code 및 API Fuzz Testing 기술이 함께 결합되면서, 한층 강력한 보안 관리가 가능해지고 있습니다.
Fuzz Testing은 코드나 API에 예상치 못한 입력값을 반복적으로 주입해, 시스템이 어떤 식으로 반응하는지를 확인하는 방식입니다. 이 과정을 통해 일반적인 테스트에서는 드러나지 않는 예외 상황이나 잠재적 버그, 그리고 제로데이 취약점까지도 조기에 발견할 수 있습니다. 특히, API 기반의 마이크로서비스 아키텍처를 사용하는 현대적인 시스템에서는 Fuzz Testing이 더욱 강력한 보완책이 됩니다.
이번 글에서는 소프트웨어 개발 전반의 신뢰성과 안전성을 높이는 핵심 전략인 SBOM/SCA와 Fuzz Testing과, 대표적인 퍼즈 테스팅 도구 Mayhem이라는 플랫폼을 함께 소개해보겠습니다.
Mayhem으로 효율적인 SBOM/SCA 관리
전통적인 1세대 SCA 도구들은 주로 정적 분석(Static Analysis) 기반으로 동작합니다. 즉, 어플리케이션의 빌드 구성 파일이나 코드에 명시된 의존성 목록을 그대로 스캔하여 SBOM을 생성하고, 해당 구성요소들과 관련된 알려진 취약점(CVE)을 추출해내는 방식입니다. 문제는 이 방식이 어플리케이션이 실제 실행 중에 사용하는 라이브러리와 그렇지 않은 라이브러리를 구분하지 못한다는 점입니다.
결국 실제 런타임에는 전혀 사용되지 않는 오픈소스 라이브러리까지 포함되어, 영향도가 전혀 없는 취약점까지도 모두 탐지된 것처럼 보고됩니다. 이로 인해 수많은 오탐(False Positive)이 발생하고, 개발자는 진짜 취약점과 가짜 취약점을 일일이 구분하고 걸러내야 하는 부담을 떠안게 됩니다. 이는 결과적으로 피로감을 높이고, 개발 생산성까지 저하시킬 수 있는 요인이 됩니다.
반면, Mayhem은 2세대 SCA 도구답게 동적 분석(Dynamic Analysis)을 기반으로 작동합니다. 실제 애플리케이션이 런타임 환경에서 어떤 라이브러리를 사용하는지를 실시간으로 분석하고, 사용되지 않는 구성요소는 SBOM에서 제외하거나 낮은 우선순위로 처리합니다. 이를 통해 진짜 중요한 보안 취약점에 집중할 수 있게 하며, 오탐을 대폭 줄여줍니다.

Fuzz testing 으로 알려지지 않은 결함 찾기
이뿐만 아니라, Mayhem은 알려지지 않은 취약점까지 탐지할 수 있는 Fuzz Testing 기능을 통해 보안 테스트의 커버리지를 포괄적으로 확장할 수 있는 이상적인 솔루션도 제공합니다.
SBOM이나 SCA는 기본적으로 알려진 취약점(CVE)을 탐지하는 데 초점을 맞추고 있기 때문에, 메모리 누수나 로직 버그처럼 코드 내부에서 발생할 수 있는 문제들은 감지하지 못하는 한계가 있습니다.
이때, Fuzz Testing이 그 빈틈을 메워줍니다. Fuzz Testing은 무작위 또는 비정형 입력값을 자동으로 주입해 코드나 시스템이 예상치 못한 방식으로 동작하는지를 테스트함으로써 숨겨진 버그나 메모리 오류, 예외 처리 누락 등을 발견할 수 있습니다.
Mayhem의 Fuzz Testing은 다양한 환경에 유연하게 적용할 수 있도록 설계되어 있습니다. REST나 GraphQL 기반의 API, 컨테이너화된 애플리케이션, 바이너리 파일, 네트워크 프로토콜 등 소스코드 없이도 테스트가 가능하다는 점이 특징이며, 특히 API 보안과 런타임 기반의 코드 분석에 특화되어 있습니다.

Mayhem에서 제공하는 Fuzz testing은 크게 Code 및 API 보안영역 두 개로 구분됩니다.
그 중 API 보안 영역에서는 실제 사례로도 효과가 입증되고 있는데요, 대표적으로는 메타버스 게임 플랫폼 Roblox의 사례가 있습니다.
Roblox는 사용자들이 직접 게임을 프로그래밍하고, 서로의 게임에 참여할 수 있는 대규모 글로벌 플랫폼입니다. 이 플랫폼에서 Mayhem의 API Fuzz Testing을 도입해, 입력값 검증 오류나 비정상적인 요청 처리 과정에서의 취약점을 찾아낸 바 있습니다.
예를 들어, 특정 API Endpoint가 비정상적인 요청에 대해서 예외를 발생 시킨다던가 잘못된 응답을 반환하는 등의 문제를 API fuzz testing을 통해 검출 및 개선할 수 있었고, CI/CD 파이프라인 통합을 통해 지속적인 API 보안테스트를 가능하게 할 수 있습니다.

특히 Mayhem의 API 보안은 OWASP 상위 10개의 API 취약점을 찾아내는데 특화되어 있습니다. Code 및 API에 대한 Fuzz testing이 필수적인 이유는 아래와 같습니다:
- 제로데이 취약점 탐지 – 정적분석이 놓칠 수 있는 런타임 환경에 대한 취약점 탐지
- 공급망 보안 강화 – SBOM/SCA와 결합하여 알려진/알려지지 않은 취약점 관리
- 규제 준수 대응 – 자동차(ISO 21434), 의료(FDA), 연방 정부(NIST, SSDF) 등 다양한 산업군에서 요구하는 동적 보안 테스트 기준 충족
결론적으로 현대 소프트웨어의 경우 과거와 달리 오픈소스 라이브러리 및 3rd party 의존성이 높아졌고, Rest API와 같은 외부 시스템 연동 및 접근을 위한 API 구현이 일반화 되었습니다.
이러한 복잡한 환경에서는 SBOM/SCA 검증과 Fuzz testing을 함께 적용해 보안 취약점을 다각도로 탐지하고, 이를 CI/CD 파이프라인과 연계해서 자동화하는 것이 무엇보다 중요합니다.
Mayhem은 이러한 보안 요구사항 전반을 하나의 플랫폼에서 통합적으로 커버할 수 있도록 설계되어 있는, 개발 효율성과 보안 수준을 동시에 향상시킬 수 있는 이상적인 솔루션입니다.
개발자에게는 노이즈를 줄이고 진짜 문제에 집중할 수 있는 환경을, 보안 담당자에게는 신뢰도 높은 데이터 기반의 보안 가시성을, 의사결정자에게는 생산성과 규제 대응을 모두 만족시키는 안정적 기반을 제공합니다. 지금 여러분의 개발 환경에 보안을 ‘추가’하는 것이 아니라, 기본기로 내재화할 수 있는 구조를 구축해보세요.
Mayhem은 그 시작점이 될 수 있습니다.
“복잡한 시스템일수록 보안은 자동화되고 실용적이어야 합니다.
SBOM/SCA와 Fuzz Testing은 선택이 아닌, 생존을 위한 전략입니다.”