오픈소스 인사이트
home
오픈소스 기술 동향
home
🔎

 어느 날 Kafka EOS 공지를 발견했다

7 more properties
얼마 전 운영 중인 시스템의 인프라 구성 현황을 점검하던 중이었다.
정기 패치 내역을 검토하던 과정에서 Apache Kafka 4.1.1 버전에 대한 EOS(End of Support) 정보가 눈에 들어왔다. 처음에는 단순한 유지보수 이슈라고 생각했다. 하지만 곧 이런 생각이 들었다.
“EOS가 끝났다면 알려진 보안 취약점은 얼마나 존재할까?” 그리고 더 중요한 질문이 이어졌다. “우리 시스템은 영향을 받는 걸까?” 🤔
보안 담당자나 운영 담당자라면 익숙한 상황이다. 새로운 취약점 공지가 나오면 가장 먼저 영향 여부를 확인해야 한다. 하지만 실제 현장에서는 취약점을 분석하기 전에 먼저 해야 하는 일이 있다.
바로 사용하고 있는 실제 소프트웨어의 정보를 식별하는 것이다.
운영 간 소프트웨어 관리를 위한 문서에서는 Kafka라는 명칭과 버전 정보가 적혀 있었지만, 취약점 데이터베이스에서 관리하는 CVE 정보를 단순하게 Kafka라는 이름만으로 검색하기에는 무리가 있었다.
보안 취약점(CVE)을 정확히 추적하기 위해서 CPE (Common Platform Enumeration)을 기준으로 제품 정보가 관리되고 있기에, 결국 Kafka 이름 만을 찾는 것이 아니라 Kafka의 CPE를 찾아야 했다.
가장 먼저 NVD에서 제공 중인 CPE 검색 API를 활용해 Kafka 제품 관련 CPE를 검색했다. 실제 조회 시에는 아래와 같은 형태로 API 호출 가능하다. ⚙️
#!/bin/bash curl --request GET \ --url "https://services.nvd.nist.gov/rest/json/cpes/2.0?keywordSearch=kafka"
Bash
복사
그 결과, 수백 개의 결과가 반환되었다. 그중에서 우리가 찾고 있던 정보는 다음과 같았다.
cpe:2.3:a:apache:kafka:4.1.1:*:*:*:*:*:*:*
Bash
복사
생각보다 단순해 보이지만 여기서부터가 시작이다. 이제 해당 CPE를 기반으로 취약점을 조회한다. 🛠️
#!/bin/bash curl --request GET \ --url "https://services.nvd.nist.gov/rest/json/cves/2.0?cpeName=cpe:2.3:a:apache:kafka:4.1.1:*:*:*:*:*:*:*"
Bash
복사
조회 결과에는 여러 CVE 정보와 함께 CVSS 점수가 제공된다. 실제 확인했던 항목 중에는 CVSS 9.1 수준의 Critical 취약점도 포함되어 있었다. 운영자 입장에서 중요한 것은 취약점의 존재 자체가 아니다. 진짜 중요한 것은 다음 질문이다.
“이 취약점이 우리 환경에도 영향을 미치는가?” 🚨
이 시점에서 많은 사람들이 보안 문제라고 생각하지만 실제로는 자산관리 문제에 가깝다.
취약점을 확인하는 데 걸린 시간은 몇 분이었다. 하지만 영향도를 판단하는 데는 훨씬 많은 시간이 필요했다.
운영 환경에는 여러 서버가 존재하고, 개발 환경과 운영 환경이 다르며, 일부 시스템은 컨테이너 기반으로 운영되고, 일부 시스템은 직접 바이너리 파일이 설치된 형태로 운영된다.
때문에, 현재 적용된 시스템 구성도를 확인하고, 설치 문서를 검토하고, 운영 담당자와 이야기를 나누게 된다.
이런 경험을 반복하다 보면 한 가지 사실을 깨닫게 된다.
운영 시스템의 오픈소스 보안은 CVE 관리에서 시작되지 않는다. 어떤 오픈소스가 어느 곳에 어느 형태로 설치되어 있는지 아는 것에서 시작된다. 많은 조직이 취약점 정보를 수집하는 데 집중한다.
하지만 정작 중요한 것은 다음 질문에 즉시 답할 수 있는 능력이다. 💡
•
우리 회사는 Kafka를 사용하는가?
•
어떤 시스템에서 사용하는가?
•
현재 버전은 무엇인가?
•
EOS 상태인가?
•
영향을 받는 CVE가 존재하는가?
이 질문에 바로 답할 수 없다면 취약점 대응은 이미 늦어지고 있는 것이다. ⌛
물론 NVD API만으로 모든 것을 해결할 수는 없다. 실제 운영 과정에서는 여러 한계가 존재한다.
NVD는 호출 제한(Rate Limit)이 있으며, 일부 취약점은 늦게 등록되거나 누락될 수 있다. 또한 특정 제품은 공급사 명칭과 제품명이 달라 원하는 정보를 찾기 어려운 경우도 있다.
그래서 실제 현장에서는 NVD뿐 아니라 SCA 도구, OSV 데이터베이스, 벤더 공지사항 등을 함께 활용 가능하다.
Kafka EOS 공지를 확인했던 그날도 결국 같은 결론에 도달했다.
취약점을 찾는 것은 어렵지 않다. 어려운 것은 운영 환경 속 수많은 오픈소스를 지속적으로 식별하고 관리하는 일이다. 오픈소스 보안의 시작은 CVE가 아니다. 내가 운영하는 시스템에 무엇이 설치되어 있는지 정확히 아는 것. 그리고 그 정보를 지속적으로 유지하는 것이다.
운영자가 가장 먼저 관리해야 하는 것은 취약점이 아니라 오픈소스 자산 목록일지도 모르겠다.
이규태 프로
오픈소스를 분석하고 응용하는 프로젝트를 진행해왔고, 지금은 에스코어에서 Elastic Stack 관련 기술지원 엔지니어로 근무하고 있어요. 😄