미국의 성직자 프랭크 크레인은 "지나치게 신뢰하면 잘 속아넘어가지만 충분히 신뢰하지 않으면 고통 속에 살게 된다"라는 유명한 말을 남겼다. 물론 오픈소스를 두고 한 말은 아니다. 그러나 이 말은 오늘날 오픈소스가 실제로 소비되는 방식과 기업이 데브섹옵스 관행 내에 성문화하기 위해 노력 중인 제로 트러스트 패턴 사이의 간극을 설명하기에 적합하다.
여러 시장조사 결과를 보면, 현재 전 세계 소프트웨어의 90~98%는 오픈소스다. 우리 모두 다른 사람이 쓴 코드를 가져다가(거인의 어깨 위에 앉는다는 생각으로) 빌드하고 수정하며, 그 과정에서 코드의 모든 작성자와 유지관리자, 그리고 우리보다 앞선 기여자를 암묵적으로 신뢰한다.
개발자는 코드를 직접 작성하기 전부터 기반 오픈소스 코드가 안전하게 작성되었을 것이라고 신뢰한다. 코드를 사용할 때가 되면 그 코드의 작성자에게 악의적인 의도가 없었으며, 설치에 앞서 코드가 변조되지 않았을 것이라고 신뢰한다. 제로 트러스트의 정 반대, 맥시멈 트러스트(maximum trust)다.
여기서는 소프트웨어 배포의 발전 과정, 그리고 앞으로 수십 년 동안 오픈소스 혁신을 지원하기 위해 새로운 신뢰의 뿌리를 어디에 두어야 하는지 알아보자.
오픈소스 소프트웨어는 안전하다
초창기, 오픈소스를 폄훼했던 사람들은 오픈소스의 보안에 대해 많은 두려움, 불확실성, 의심을 불러일으켰다. 논거는 사유 소프트웨어의 소스 코드는 외부에서 볼 수 없도록 차단되므로 누구나 볼 수 있게 소스 코드가 공개된 오픈소스보다 더 안전하다는 것이었다.
그러나 오픈소스는 소스 코드가 투명할 때 얻을 수 있는 긍정적인 효과를 입증했다. 많은 사람들이 소스 코드를 보는 만큼 네트워크 효과에 의해 취약점이 더 빨리 드러나고 수정 주기도 훨씬 더 빨라진다. 결과가 사실을 말해준다. 모든 소프트웨어의 약 97%가 오픈소스임에도 불구하고, CISA가 운영하는 CVE 목록 기준으로 알려진 악용된 취약점의 90%는 사유 소프트웨어의 취약점이다.
중대한 취약점이 발생할 때마다 오픈소스 보안의 전반적인 상태를 악의적으로 비방하기는 쉽다. 사실 유명한 취약점 중 상당수는 역으로 오픈소스 보안의 강점을 잘 보여준다.
예를 들어, Log4shell은 규모와 유명세 수준에서 OSS 취약점에 관한 한 최악의 사례라고 할 만한 시나리오다. Log4shell은 가장 널리 사용되는 프로그래밍 언어의 가장 널리 사용되는 라이브러리였다(심지어 화성 탐사선에서도 Log4j가 실행됐으니, 엄밀히 말해 최초의 우주 OSS 취약점이다!). Log4shell 취약점은 간단히 악용할 수 있었고 엄청나게 광범위했으며 심각한 결과로 이어졌지만, 유지관리자들이 며칠만에 패치를 만들어 배포했다. 즉, 오픈소스 보안의 실패 사례가 아니라 유지관리자 수준에서 보안 대응의 중대한 성공 사례다.
이런 성과는 널리 인정받아야 한다. Log4shell 취약점은 공개되고 며칠 만에 수정된 반면, 일반적으로 펌웨어 업체 또는 클라우드 제공업체의 정보 공개 프로그램의 경우를 보면 이런 사건에서 수정이 이뤄질 때까지 빨라야 30일, 60일, 심지어 90일까지 걸린다. 취약점에 대한 조치를 취하는 데 있어 늑장을 부리는 것은 오히려 기업이다. 베라코드(Veracode)의 최근 보고서에 따르면, Log4j를 실행 중인 애플리케이션의 1/3이 넘는 38%가 여전히 취약한 버전을 사용하고 있다.
그러나 신뢰가 필요하다
소프트웨어를 처음 구축하기 시작하는 단계는 그야말로 빙산의 일각에 불과하다. 공공의 이익을 위해 무료로 작성된 수백만 줄의 무료 소프트웨어를 기반으로 구축한다. 이것이 가능한 이유는 신뢰에 있다.
리눅스 배포판은 소스 코드 컴파일을 처리해서 OSS 사용자가 컴파일과 디버깅을 할 필요가 없도록 하는 것 외에도, 이런 신뢰를 구축하는 데 있어 큰 역할을 했다는 점에 대해 인정을 받아야 한다. 리눅스 배포판의 바이너리를 사용할 때는 소스코드, 그리고 배포판을 만든 업스트림 유지관리자를 신뢰한다는 의미다. 이 둘은 별개의 집단이다. 리눅스 배포판은 이런 점을 이해하고, 소프트웨어 공급망 접근 방식을 개척하고 엄격한 패키지 유지관리자 심사 방법을 구축함으로써 지난 수십 년 동안 소프트웨어 보안을 발전시켜 왔다.
데비안(Debian)은 배포판 내에 신뢰를 체계적으로 성문화하는 데 있어 가장 주목할 만한 배포판이다. 데비안은 PGP 키 서명 시스템을 사용한다. 해당 시스템에서는 충분한 수의 유지관리자가 암호화 이벤트에 대한 키에 서명하는 경우에만 데비안 키링에 추가된다. 새 패키지가 업로드되면 해당 서명이 확인되고, 데비안 배포판 자체는 온보딩된 모든 패키지에 다시 서명한다. 따라서 패키지가 데비안에 게시되면 사용자는 패키지를 어디에서 찾든 관계없이 서명을 보고 해당 패키지가 자신이 신뢰하는 유지관리자의 데비안 배포판을 통해 왔으며, 그 과정에서 변조되지 않았음을 확인할 수 있다.
이 모델은 더할 나위 없이 잘 작동한다.
OSS 종속성은 신뢰 모델 이상으로 커졌다
그러나 현재 대부분 소프트웨어 소비는 배포판 외부에서 일어난다. npm(자바스크립트), pip(파이썬), 루비 젬(루비), 컴포저(PHP) 등의 프로그래밍 언어 패키지 관리자는 모양이나 느낌이 리눅스 배포판 패키지 관리자와 비슷하지만 작동 방식에 차이가 있다. 이들 언어 패키지 관리자에서는 기본적으로 선별(큐레이션) 과정이 없다. 즉, 누구나 패키지를 업로드하고 유지관리자를 모방할 수 있다. 한 번의 패키지 설치에서 누구인지 모를 인터넷 상의 수십 명의 사람이 만든 패키지가 설치되는 경우가 많은데, 무엇인지 알고 신뢰하는 것이 가능할까?
도커는 이런 추이적(transitive) 신뢰 문제를 더욱 증폭시켰다. 도커 이미지는 내부의 기존 패키지 관리자를 사용하므로 빌드하기가 쉽다. npm install을 사용해서 npm 패키지를 받은 다음 도커 이미지로 래핑할 수 있다. 아무 언어의 패키지 관리자로 앱 설치를 한 다음 하나의 대용량 TAR 볼로 전달할 수 있다. 도커 측도 이 신뢰의 틈을 인지했으며, 검증된 빌드(Verified Builds)라는 개념을 도입하는 등 해결을 위해 노력했다. 검증된 빌드는 도커 허브의 내부 기능으로 발전했다.
도커의 검증된 빌드는 사용자가 소스 코드 리포지토리에서 도커 파일 형태로 도커 이미지를 위한 빌드 스크립트를 지정할 수 있는 방법이다. 유지관리자가 도커 파일을 작성하지만 이후 도커가 빌드를 수행하므로 이미지에서 보이는 것은 원래 유지관리자의 코드와 동일하다. 도커는 몇 년 전에 이 기능을 배포했고 계속 개선하는 중이다. 칭찬할 만한 일이다.
그러나 클라우드 네이티브 소프트웨어를 위한 이 신뢰의 거미줄에 도커만 있는 것은 아니다. 문제는 여기서 더 복잡해진다. 도커 위에는 쿠버네티스 영역에서 일반적으로 사용되는 계층이 하나 있다. 헬름(Helm)은 여러 도커 이미지와 구성을 패키징할 수 있다. 즉, 패키지의 패키지다.
가령 프로메테우스용 헬름 차트를 설치하는 경우 임의의 개인 프로젝트에서 다른 여러 이미지도 가져오게 될 가능성이 높다. 아티팩트 허브에서 출처가 검증된 게시자로 표시되므로 받는 사람은 프로메테우스 유지관리자로부터 프로메테우스를 받는다고 생각할 수 있지만, 프로메테우스에는 검증된 게시자로부터 온 것이 아닌 종속 항목이 있는 경우가 많다.
헬름의 최초 제작자들이 유지관리하는 공식 헬름 차트 리포지토리는 이러한 이미지 내에 신뢰를 성문화하기 위한 시도로 출범했다. 이 방식은 클라우드 네이티브 앱에도 리눅스 배포판이 제공하는 것과 같은 유형의 보안 관리를 제공할 수 있는 잠재력이 있었지만, 안타깝게도 확장하기가 너무 어려운 것으로 드러났고 각 프로젝트가 자체 헬름 차트를 유지관리하는, 프로그래밍 언어 패키지 관리자와 비슷한 연합된 형태의 모델이 사용됐다.
이런 모든 추이 종속성 계층이 현대 소프트웨어 공급망 보안 문제의 큰 부분을 차지하며, 악의적 행위자에게는 가장 탐스러운 영역이다. 이곳이 수십 년 동안 쌓아온 오픈소스의 위대한 신뢰를 지키기 위한 싸움의 새로운 전선이다.
처음부터 안전하게 소프트웨어 만들기
지금의 소프트웨어 배포는 20년 전과는 완전히 다르다. 20년 전에는 CompUSA나 베스트 바이와 같은 매장에서 비닐 랩으로 밀착 포장된 소프트웨어를 구매했다. 소프트웨어 박스를 구매할 때는 그 안에 무엇이 들어있는지 명확했다. 정상적인 출처에서 온 것이고 변조되지 않았다는 것도 확신할 수 있었다.
소프트웨어 배포가 CD롬에서 인터넷으로 바뀌면서 리눅스 배포판은 신뢰를 제공하는 데 있어 놀라울 정도의 성공을 거뒀다.
Log4j 솔라윈즈 사고에서 새로운 소프트웨어 공급망 공격에 이용되는 몇 가지 빈틈이 발견되자 팀은 SSDF, SLSA와 같은 프레임워크를 사용해 빌드 시스템을 잠그고 시그스토어(Sigstore, 현재 쿠버네티스와 모든 주요 프로그래밍 언어 레지스트리에서 사용하는 기본 소프트웨어 서명 방법)에서 생산한 소프트웨어 서명을 확인하기 시작했다. 이것이 발전이다.
오픈소스 보안 영역은 복잡하다. 깃허브 하나에만 3억 7,200만 개의 리포지토리가 있고 이를 대상으로 수십 년 된 신뢰 모델을 사용하고 있다!
알려진 CVE와 추이 종속 항목을 통해 부지불식간에 이를 설치하는 개발자 사이에는 여전히 큰 간극이 존재한다. 리눅스 배포판 외부에 존재하며 따라서 보안 스캐너에 포착되지 않는 취약점이 여전히 많다. 소프트웨어 소비자가 애초에 자신이 악성 소프트웨어 패키지를 실행하고 있다는 것을 인지하기도 어려운 마당에 업데이트가 나오는 즉시 빠르게 패치를 적용할 민첩함을 기대할 수는 없다.
2024년에는 CVE, 리눅스 배포판, 소프트웨어 패키지 간의 소프트웨어 공급망 간극이 좁혀질 것으로 보인다. 배포판과 이미지에 포함되는 비필수 소프트웨어 아티팩트가 대폭 줄어들고, 배포판 자체도 울피(Wolfi)와 같이 취약점 수정을 얼마나 효율적으로, 최대한 신속하게 배포하는지를 기준으로 경쟁하게 된다.
보안팀이 애플리케이션 인프라 보안에 대한 기대치를 제로 트러스트 개념에 맞추고, 배포판과 이미지에서 추이 종속성이 유입되는 빈틈과 백도어를 유발할 수 있는 요소를 더 이상 수락하지 않을 것이다. 보안팀은 eBPF, 실리움(Cilium)과 같은 기술을 사용하여 커널에 더 가까이 접근하고 테트라곤(Tetragon)과 같은 프로젝트가 제공할 수 있는 런타임 보안 정책 시행을 모색할 것이다. 이 락다운은 더욱 가속화된다. 기업 입장에서 특수한 GPU 아키텍처와 늘 모호한 백도어를 비롯해 더 많은 추이 종속성이 있는 더 많은 프레임워크를 신뢰해야 하는 AI 사용례 때문이다.
개발자가 자신이 좋아하는 OSS 구성요소에 대한 선택의 자유를 계속 누리려면 소프트웨어 배포에 대한 생각의 전환이 필요하다. 컨테이너의 패키지에 들어가는 모든 소스 코드와 이런 클라우드 네이티브 구성요소의 배포를 빌드, 패키징, 서명, 검증하기 위한 더 균일한 방법이 필요한 동시에 기본적으로 이들을 최소한으로, 그리고 안전하게 유지해야 한다. 모두 스택의 맨 위에 위치한다. 이곳은 클라우드 네이티브 세계에서 다음 수십 년의 오픈소스 혁신을 지원할 신뢰의 뿌리를 리팩터링하기에 완벽한 위치다. 이제 오픈소스 소프트웨어의 사실상 표준이 될 안전한 소스가 필요한 시점이다.
editor@itworld.co.kr
VPN (가상 사설 네트워크, Virtual Private Network)은 인터넷 사용자에게 개인 정보 보호와 보안을 제공하는 중요한 도구로 널리 인정받고 있다. VPN은 공공 와이파이 환경에서도 데이터를 안전하게 전송할 수 있고, 개인 정보를 보호하는 데 도움을 준다. VPN 서비스의 수요가 증가하는 것도 같은 이유에서다.
동시에 유료와 무료 중 어떤 VPN을 선택해야 할지 많은 관심을 가지고 살펴보는 사용자가 많다. 가장 먼저 사용자의 관심을 끄는 것은 별도의 예산 부담이 없는 무료 VPN이지만, 그만큼의 한계도 있다.
무료 VPN, 정말 괜찮을까?
무료 VPN 서비스는 편리하고 경제적 부담도 없지만 고려할 점이 아예 없는 것은 아니다.
보안 우려
대부분의 무료 VPN 서비스는 유료 서비스에 비해 보안 수준이 낮을 수 있다. 일부 무료 VPN은 사용자 데이터를 수집해 광고주나 서드파티 업체에 판매하는 경우도 있다. 이러한 상황에서 개인 정보가 유출될 우려가 있다.
속도와 대역폭 제한
무료 VPN 서비스는 종종 속도와 대역폭에 제한을 생긴다. 따라서 사용자는 느린 인터넷 속도를 경험할 수 있으며, 높은 대역폭이 필요한 작업을 수행하는 데 제약을 받을 수 있다.
서비스 제한
무료 VPN 서비스는 종종 서버 위치가 적거나 특정 서비스 또는 웹사이트에 액세스하지 못하는 경우가 생긴다. 또한 사용자 수가 늘어나 서버 부하가 증가하면 서비스의 안정성이 저하될 수 있다.
광고 및 추적
일부 무료 VPN은 광고를 삽입하거나 사용자의 온라인 활동을 추적하여 광고주에게 판매할 수 있다. 이 경우 사용자가 광고를 보아야 하거나 개인 정보를 노출해야 할 수도 있다.
제한된 기능
무료 VPN은 유료 버전에 비해 기능이 제한될 수 있다. 예를 들어, 특정 프로토콜이나 고급 보안 기능을 지원하지 않는 경우가 그렇다.
유료 VPN의 필요성
최근 유행하는 로맨스 스캠은 인터넷 사기의 일종으로, 온라인 데이트나 소셜 미디어를 통해 가짜 프로필을 만들어 상대를 속이는 행위다. 이러한 상황에서 VPN은 사용자가 안전한 연결을 유지하고 사기 행위를 방지하는 데 도움이 된다. VPN을 통해 사용자는 상대방의 신원을 확인하고 의심스러운 활동을 감지할 수 있다.
그 외에도 유료 VPN만의 강점을 적극 이용해야 하는 이유는 다음 3가지로 요약할 수 있다.
보안 강화
해외 여행객이 증가함에 따라 공공 와이파이를 사용하는 경우가 늘어나고 있다. 그러나 공공 와이파이는 보안이 취약해 개인 정보를 노출할 위험이 있다. 따라서 VPN을 사용하여 데이터를 암호화하고 개인 정보를 보호하는 것이 중요하다. 서프샤크 VPN은 사용자의 개인 정보를 안전하게 유지하고 해킹을 방지하는 데 유용하다.
개인 정보 보호
인터넷 사용자의 검색 기록과 콘텐츠 소비 패턴은 플랫폼에 의해 추적될 수 있다. VPN을 사용하면 사용자의 IP 주소와 로그를 숨길 수 있으며, 개인 정보를 보호할 수 있다. 또한 VPN은 사용자의 위치를 숨기고 인터넷 활동을 익명으로 유지하는 데 도움이 된다.
지역 제한 해제
해외 여행 중에도 한국에서 송금이 필요한 경우가 생길 수 있다. 그러나 IP가 해외 주소이므로 은행 앱에 접근하는 것이 제한될 수 있다. VPN을 사용하면 지역 제한을 해제해 해외에서도 한국 인터넷 서비스를 이용할 수 있다. 따라서 해외에서도 안전하고 편리하게 인터넷을 이용할 수 있다.
빠르고 안전한 유료 VPN, 서프샤크 VPN
뛰어난 보안
서프샤크 VPN은 강력한 암호화 기술을 사용하여 사용자의 인터넷 연결을 안전하게 보호한다. 이는 사용자의 개인 정보와 데이터를 보호하고 외부 공격으로부터 사용자를 보호하는 데 도움이 된다.
다양한 서버 위치
서프샤크 VPN은 전 세계 곳곳에 여러 서버가 위치하고 있어, 사용자가 지역 제한된 콘텐츠에 액세스할 수 있다. 해외에서도 로컬 콘텐츠에 손쉽게 접근할 수 있음은 물론이다.
속도와 대역폭
서프샤크 VPN은 빠른 속도와 무제한 대역폭을 제공하여 사용자가 원활한 인터넷 경험을 누릴 수 있도록 지원한다. 온라인 게임, 스트리밍, 다운로드 등 대역폭이 필요한 활동에 이상적이다.
다양한 플랫폼 지원
서프샤크 VPN은 다양한 플랫폼 및 디바이스에서 사용할 수 있다. 윈도우, 맥OS, iOS, 안드로이드 등 다양한 운영체제 및 디바이스에서 호환되어 사용자가 어디서나 안전한 인터넷을 즐길 수 있다.
디바이스 무제한 연결
서프샤크 VPN은 무제한 연결을 제공하여 사용자가 필요할 때 언제든지 디바이스의 갯수에 상관없이 VPN을 사용할 수 있다.