최근 우리 팀에서 누구나 간단히 쿠버네티스 리소스를 생성, 조회, 삭제할 수 있는 운영 툴을 개발하자는 의견이 나왔다. 복잡한 클라우드 인프라를 쉽고 직관적으로 관리할 수 있게 만들어 생산성을 높이자는 취지였다. 본 개발에 앞서 다양한 UI와 UX를 시도하기 위한 프로토타입 개발이 시작되었고, 나도 여기 참여하게 되었다. 쿠버네티스 API를 활용해 툴을 개발하는 과정은 매력적이면서도 도전적인 작업이었다. 이 글에서는 툴의 개발 과정을 간략히 소개하고, 그 과정에서 가진 의문과 고민을 공유하고자 한다.
메시지 큐는 컴퓨터 시스템에서 쓰이는 비동기 통신 프로토콜의 한 종류입니다. 이를 활용하면 응용 프로그램이 다른 응용 프로그램으로 메시지를 보낼 수 있습니다. 메시지 큐는 서버리스 및 마이크로서비스 아키텍처의 중요한 요소입니다. 서비스 간의 비동기 통신을 용이하게 만들어 서비스의 성능, 신뢰성, 그리고 확장성을 올려주기 때문이죠. 다만 분산 환경에서 대량의 메시지를 처리할 때 메시지 큐를 관리하는 것은 어려운 작업입니다. 그럴 때 Redis를 기반으로 구축된 Node.js 라이브러리, BullMQ의 도움을 받을 수 있습니다.
지난 3월 29일, 마이크로소프트의 소프트웨어 엔지니어 ‘Andres Freund’는 무손실 데이터 압축 유틸리티 XZ Utils(이전에는 LZMA Utils) 5.6.0과 5.6.1버전에 SSH 백도어가 존재한다고 밝혔다. XZ Utils 백도어 사태가 중요한 이유는 유틸리티에 원격 명령어 실행이 가능한 백도어가 삽입되어 있다는 점 이외에도, 백도어를 삽입하는 공급망 공격 과정에서 시사점을 찾을 수 있다. 공격자가 상호 간의 신뢰를 바탕으로 운영되는 오픈소스 생태계와 프로젝트 운영자의 신뢰를 이용했다는 점에서, 오픈소스 생태계의 소프트웨어 공급망 보안의 분수령이 될 만한 사건이다. 이번 글에서는 ‘CVE-2024-3094’라고 불리는 XZ Utils 백도어 사태에 대해 다시 되짚어보고, 나아가 오픈소스 생태계에서 발생하는 소프트웨어 공급망 공격 대응 방안을 고민해 보고자 한다.
“IT회사 CEO들 사이에는 ‘개발조직은 돈 먹는 하마’라는 이야기가 돌고 있어요. 도대체 개발팀들은 맨날 바쁘다, 밤샌다고 하는데 시스템 완성은 매번 늦어져요. 이유가 뭔지 모른 채 엄청난 개발조직 인건비를 지불하고 있어요.” 개발조직이 ‘돈 먹는 하마’로 보이는 현상이 과거 이들이 ‘전산실’이라 불리던 시절부터, 웹과 클라우드의 발전 그리고 AI 혁신이 세상을 시끄럽게 하는 요즘까지도 별 차이가 없다는 이야기입니다. 깊이 공감하는 문제이고, 이 글을 쓰게 된 계기이자 곧 주제이기도 합니다.