소프트웨어 공급망 보안에 대한 권한은 누가 가져야 할까요? 개발자 혹은 개발자를 지원하는 플랫폼과 보안 엔지니어링 팀? 과거에는 기업의 지원 계약 및 보안 서비스수준협약(SLA)을 어느 리눅스 배포판과 운영체제, 인프라 플랫폼으로부터 확보할지를 CIO, CISO, 또는 CTO와 담당 보안팀이 결정하곤 했습니다. 하지만 이후 개발자가 이 모든 일을 도커 파일(Docker Files)과 깃허브 액션(GitHub Actions)에서 처리하게 됐습니다. 개발자에게 상황이 ‘시프트 레프트(shift left)’했고 이전과 같은 기업 차원의 감독은 사라졌습니다.

[이미지 = Freepik]

 

오늘날에는 규정 준수 및 보안 팀이 이런 정책과 요건을 규정합니다. 개발자는 이 요건을 준수하는 범주 내에서 원하는 도구를 선택할 유연성을 갖습니다. 이처럼 업무가 구분되면 개발자 생산성에 가속도가 크게 붙습니다.

그러나 Log4j 사태는 기업의 시스템 보안 문제에 대한 경종을 울렸습니다. 시프트 레프트 개발자 자율성과 생산성의 장점에도 불구하고 소프트웨어 공급망을 이루는 오픈소스 구성요소는 악성 행위자가 노리는 새로운 표적이 되고 말았습니다.

오픈소스는 개발자와 공격자 모두에게 좋다

네트워크 보안은 공격자 입장에서 예전보다 훨씬 더 어려운 공격 벡터가 됐습니다. 반면 오픈소스라면? 오픈소스 의존성 또는 라이브러리를 찾아 개입한 후 다른 모든 의존성으로 방향을 전환하면 그만입니다. 공급망은 기업과 기업의 소프트웨어 산출물 사이의 연결 고리가 중요하다. 오늘날 공격자는 바로 이 부분을 집중적으로 공략하고 있습니다. 기본적으로 개발자 입장에서 오픈소스 소프트웨어의 장점은 공격자 입장에서도 장점입니다.

개방성 : 개발자는 ‘누구나 코드를 볼 수 있고 누구나 코드에 기여할 수 있다’는 점을 좋아합니다. 리누스 토발스의 말처럼 “지켜보는 눈이 많으면 모든 버그는 잡아내기 쉬워지고” 이는 오픈소스의 큰 장점입니다.

반면 공격자는 ‘깃허브 계정이 있는 사람이라면 누구나 필수 라이브러리에 코드에 기여할 수 있다’는 점을 대단히 좋아합니다. 악성 코드 커밋은 자주 발생합니다. 만인의 이익은 안중에도 없는 소유자에게 라이브러리가 접수돼 넘어갑니다. 유명한 사례가 ‘위대한 중지자(The Great Suspender)’라는 크롬 플러그인이었습니다. 관리자가 이 플러그인을 다른 사람에게 넘겼고 그는 즉시 악성코드에 플러그인하기 시작했습니다. 이처럼 호의적인 기여자가 악의적인 기여자로 변한 사례는 많습니다.

투명성 : 개발자는 ‘문제가 있을 때 직접 소스를 살펴 코드 감사를 할 수 있다’는 점을 좋아합니다. 반면 공격자는 ‘오픈소스는 분량이 방대해서 코드 감사가 현실적으로 불가능하다’는 점을 대단히 좋아합니다. 게다가, 코드의 많은 부분이 실제 사용되는 방식과는 다른 소스로 배포됩니다. 예를 들어, 파이썬(Python)이나 노드.js(Node.js) 패키지에 대한 소스 코드를 보면, pip install 또는 npm install을 실행했을 때 컴파일된 것에서 온 패키지를 잡게 되는데, 이 패키지가 실제로 사용자가 감사한 소스 코드에서 왔다는 보장이 없습니다.

소스 코드 활용 방식에 따라 다르지만 실제로 소스 코드를 매번 처음부터 컴파일하는 것이 아니라면 투명성 중 많은 부분은 착각일 수 있습니다. 유명한 사례는 코드코브(Codecov) 침해입니다. 인스톨러였던 배시(bash) 스크립트가 해킹돼 정보를 빼내는 악성코드가 주입된 상태였습니다. 이는 조작 가능한 다른 빌드에 대한 취약점으로도 악용됐습니다.

무료 : 개발자가 오픈소스를 대단히 좋아하는 것은 다른 사람이 작성한 코드를 자유롭게 사용하도록 보장하는 라이선스와 함께 제공되기 때문입니다. 이는 매우 훌륭한 방식입니다. 기업이 내부적으로 개선된 소프트웨어를 얻기 위해 조달 과정을 거처야 하는 것보다 훨씬 쉽습니다. 반면 공격자에게 이는 무료에 이끌려 오픈소스를 사용하는 수없이 많은 표적이 있다는 의미입니다. 실제로 2014년에 발생한 하트블리드(Heartbleed) 공격은 인터넷의 필수 인프라 중 얼마나 많은 부분이 무료인 오픈소스를 바탕으로 운영되는지 보여주며 경종을 울린 첫 번째 사례였습니다.

Jwt-go라는 고랭(Golang) 라이브러리도 있었습니다. 전체 고랭 생태계(쿠버네티스 포함)에 걸쳐 사용된 인기 높은 라이브러리였지만, 내부에 취약점이 발견되었을 때 해결책을 제공할 관리자가 이미 떠나고 없어 혼란이 발생했습니다. 사람들은 버그 해결을 위해 다양한 패치를 내놓았고 한때는 똑같은 버그에 대여섯 가지 패치 버전이 경쟁하기도 했습니다. 마침내 하나의 패치가 등장해 취약점을 종결시켰습니다.

오픈소스는 소프트웨어 공급망 보안에도 대단히 좋다

이 모든 연결 고리를 강화할 유일한 방법은 협력입니다. 커뮤니티야말로 우리가 가진 최대의 강점입니다. 업계 전체와 만인의 공급망 내 곳곳에 오픈소스가 스며든 것은 어쨌든 오픈소스 커뮤니티(시간과 노력을 들이고 코드를 공유한 모든 프로젝트 관리자) 덕분입니다. 우리는 바로 그 커뮤니티를 활용해 그 공급망의 안전을 확보할 수 있습니다.

개발자든 플랫폼 또는 보안 엔지니어링팀의 일원이든 이러한 소프트웨어 공급망 보안 분야의 발전 상황에 관심이 있는 사람이 주목해야 할 오픈소스 프로젝트를 소개합니다.

SLSA : SLSA(소프트웨어 산출물을 위한 공급망 수준(Supply chain Levels for Software Artifacts)의 줄인 말로 “살사”라고 읽음)는 규범적이고 진보적인 빌드 시스템 보안 요건입니다. 1단계는 빌드 시스템을 사용하는 것입니다(노트북에서 손으로 하면 안 된다). 2단계는 로그와 메타데이터를 내보내는 것이고(그래야 나중에 검색과 사건 대응을 할 수 있다), 3단계는 일련의 모범 사례를 따르는 것입니다. 4단계는 실제로 안전한 빌드 시스템을 사용하는 것입니다.

테크톤(Tekton) : 테크톤은 보안을 염두에 두고 설계된 오픈소스 빌드 시스템입니다. 많은 빌드 시스템을 안전한 방식으로 실행할 수 있습니다. 테크톤은 SLSA가 내장된 준수한 기본 제품의 대표적인 사례입니다.

인토토(In-Toto) : 인토토와 다음에 소개하는 TUF는 모두 소프트웨어 공급망 보안이 거론되기 시작하기 한참 전에 뉴욕대학교(NYU) 연구실에서 탄생했습니다. 공급망 도중에 발생하는 이슈를 기록하고 정책에 따라 검증할 수 있는 암호화 체인을 적용합니다. 인토토는 빌드 쪽에 집중하고 TUF는 배포 쪽에 집중합니다.

TUF : TUF(업데이트 프레임워크)는 자동 업데이트 시스템, 패키지 관리자, 배포, 정족수를 통해 승인되는 관리자 집합을 처리합니다. TUF도 안 좋은 일이 발생할 때 암호화 키 복구를 전문으로 합니다.

시그스토어(Sigstore) : 시그스토어는 오픈소스 소프트웨어 산출물을 위한 무료이자 손쉬운 코드 승인 프레임워크입니다. 승인은 암호학적으로 검증 가능한 관리 연속성, 즉, 조작되지 않은 소프트웨어 출처 기록을 확립하는 수단입니다.

소프트웨어 공급망을 위한 더 개선된 보호장치

지난 10년 동안 도구와 보안의 선택이 모두 개발자에게 ‘시프트 레프트’됐습니다. 앞으로도 개발자가 사용할 최고의 도구를 선택하는 데 계속 자율성을 유지할 가능성이 큽니다. 단, 보안 태세와 관련 정책을 관리할 책임은 원상 복귀(‘시프트 라이트’)할 필요가 있습니다.

흔히 오해하는 것처럼 보안팀이 보안 버그를 찾아내고 취약점을 없애기 위해 온종일 코드를 한줄 한줄 검토한다는 것은 실제와 전혀 다릅니다. 보안팀은 개발팀에 비해 규모가 훨씬 작습니다. 보안팀의 존재 이유는 프로세스를 수립하고, 개발자가 마땅히 해야 할 일을 하도록 돕고, 한 번에 보안 버그 하나씩이 아니라 취약점 부류 전체를 제거하는 것입니다. 이 방법으로만 보안팀이 엔지니어 수백 명으로 구성된 개발팀을 따라잡을 수 있습니다.

보안팀은 소프트웨어 산출물에 대한 신뢰의 근원을 확보할 표준 프로세스가 필요하고, 개발자는 명확히 규정된 보안 정책을 대상으로 오픈소스 선택의 균형을 맞출 확실한 경로가 필요합니다. 오픈소스는 종종 문제를 일으켰지만 결국은 그 해답을 찾는 데 도움을 줄 것입니다. 언젠가는 개발자가 알려진 취약점을 예방하기 위해 점검을 거친 이미지만 배포하게 될 것입니다.

기사 출처. IT world

https://www.itworld.co.kr/mainnews/246172#csidx2188fcf6edd02a18dedeedf88e691ba

제품에 대해 궁금한 점이 있으신가요?
빠르고 정확한 답변을 도와드리겠습니다.

TEL : 031-784-8500~1
E-mail : sales@pplus.co.kr