소프트웨어 보안에 대한 새로운 희망
매트 아세이
InfoWorld 기고자 |
2021년 12월 Log4j 취약점은 소프트웨어 공급망을 크게 무시된 보안 표면 영역으로 부각시켰습니다. 이는 우리 소프트웨어 아티팩트가 얼마나 상호 연결되어 있는지, 그리고 우리 시스템이 가장 약한 링크만큼만 안전한지 보여주었습니다. 또한 보안은 우리가 살 수 있는 것이라고 생각할 수도 있지만 실제로는 우리가 개발팀으로서 기능하는 방식에 관한 것이라는 생각을 강화했습니다.
그 이후로 우리는 개선을 위해 전력 질주해 왔습니다.
아마도 가장 주목할만한 점은 Google이 오픈 소스로 제공한 Sigstore 프로젝트가 Java, Python, Node, Ruby 등을 포함한 모든 주요 언어 생태계에서 채택된 소프트웨어 아티팩트에 대한 사실상의 서명 방법이 되었다는 것입니다. 이는 역사상 가장 빠르게 채택된 오픈 소스 보안 프로젝트 중 하나가 되었으며 개발자에게 소프트웨어 구성 요소의 출처와 출처를 확인할 수 있는 정품 "밀랍 봉인"을 제공했습니다.
그럼, 아직 거기까지 왔나요?
설마. 아직 아님. 2021년 5월 백악관 법령에 의해 도입된 소프트웨어 재료 명세서(SBOM) 개념은 계속해서 거리감을 느끼게 되었습니다. 개발자가 소프트웨어 패키지의 구성 요소 목록을 공유하는 링구아 프랑카 개념에는 여러 가지 새로운 형식(SPDX, CycloneDX)이 있어 상황이 복잡해집니다. 더 나쁜 것은 SBOM이 실제로 개발자의 작업 흐름에 어떻게 적용되는지, 그리고 그 과정에서 개발자가 얻을 수 있는 구체적인 이점이 무엇인지 명확하지 않다는 것입니다.
이 모든 것을 하나로 모으고 소프트웨어 서명, SBOM 및 개발자 워크플로우에 대한 응집력 있는 전략을 수립하기 위한 긴급성을 높이기 시작한 것은 소프트웨어 보안의 무결성에 대한 보다 엄격한 소유권을 요구하는 규제입니다.
지난 4월, CISA(사이버 보안 인프라 기관)는 새로 제안된 보안 소프트웨어 개발 증명 양식에 대한 의견 요청을 발표했습니다. 이 양식은 소프트웨어 회사의 CEO에게 해당 소프트웨어가 보안 환경에서 구축되었으며 신뢰할 수 있는 소스 코드 공급망을 유지하기 위해 선의로 합리적인 노력을 기울여 왔습니다.
무엇이 "합리적"이라고 간주됩니까?
지금까지 "합리적인" 노력은 FedRAMP의 컨테이너에 대한 취약점 검색 요구 사항과 국립 표준 기술 연구소(National Institute of Standards and Technology)의 보안 소프트웨어 개발 프레임워크에 명시된 지침인 것으로 보입니다. 그러나 새로운 자체 증명 요구 사항에 대한 훨씬 더 미묘하고 행간 해석은 소프트웨어에 통합된 타사 코드를 다루는 조항에 있습니다. 간단히 말해서, 소프트웨어 제공업체는 공급망에서 사용하는 자금이 없고 유지 관리되지 않는 인기 오픈 소스에 대해 책임을 지게 됩니다.
무엇을 기다립니다? 임의의 프로젝트 관리자의 코드를 담당하고 있습니까? 분명히 그렇습니다. 그게 "합리적"인가요?
CISO에 대한 이러한 어지러운 고려 사항의 확산은 수많은 트위터 밈의 대상이 되었습니다.
필요한 경우 오픈 소스의 자유로운 채택을 확인하는 것은 다소 충격적입니다. 저는 기업들이 오픈 소스를 사용해서는 안 된다고 주장하는 것이 아닙니다. 오히려 그 반대입니다. 무료(및 오픈 소스) 소프트웨어로 패키지로 제공되는 경우를 포함하여 공짜 점심은 없다는 점을 상기시켜 드립니다. 누군가는 유지관리자를 위해 비용을 지불해야 하고, 누군가는 개발자가 이 모든 인바운드 오픈 소스 소프트웨어를 이해할 수 있도록 도와야 합니다.
체인가드는 그런 사람일 수도 있습니다.
Chainguard는 Sigstore 프로젝트를 주도한 전 Google 직원이 이끄는 회사입니다. 개발자를 위한 응집력 있는 툴체인으로 모든 것을 통합하려고 노력하고 있습니다. 스타트업의 초기 노력은 빌드 프로세스를 잠그고 서명, 출처, SBOM과 같은 기능을 소프트웨어 공급망 및 소프트웨어 빌드 프로세스에 고유하게 만드는 단계에 중점을 두었습니다. 작년에 그들은 Wolfi와 함께 공급망 보안 기본 요소를 중심으로 특별히 구축된 최초의 커뮤니티 Linux (비)배포판을 도입했습니다. 또한 독립 실행형 바이너리, nginx와 같은 애플리케이션, Go 및 C 컴파일러와 같은 개발 도구의 기본 이미지인 Chainguard Images를 출시했습니다.