Ripple20
기기 제조업체들이 수년간 라이선스해 온, 흔히 다른 이름으로 쓰이던 작은 TCP/IP 라이브러리에서 CVSS 최대 10.0의 취약점 19개가 발견되었습니다. 이 라이브러리는 여러 공급업체의 제품에 들어 있었고, 상당수 업체는 먼저 자사가 이를 출시했는지부터 파악해야 했습니다.
출시하는지조차 모르는 구성 요소는 패치할 수 없습니다.
모든 스마트 기기는 오픈 소스 패키지, 칩 공급업체 SDK, 빌드 도중 다운로드한 도구로 만든 펌웨어를 탑재해 출시됩니다. 공급망 공격에는 그중 하나만 있으면 됩니다. CRACI는 펌웨어 빌드를 실행하고, 들어가는 모든 구성 요소를 기록하며, 빌드가 필요 없는 곳에 접근하지 못하게 합니다.
커넥티드 기기에 들어 있는 코드 대부분은 다른 누군가가 작성한 것입니다. 임베디드 Linux 배포판, 칩 공급업체의 보드 지원 패키지, 네트워크 스택, 수백 개의 오픈 소스 라이브러리와 그 아래의 Rust crate가 그렇습니다. 같은 구성 요소가 여러 브랜드의 제품에 탑재되고, 기기는 수년간 가정에 머물며, 그 안에 무엇이 들어 있는지 마지막으로 확인한 지 한참 지난 경우도 많습니다.
그래서 하나의 약한 구성 요소가 공격자에게는 큰 가치를 지닙니다. 공유 라이브러리나 SDK의 결함 하나가 이를 탑재한 모든 제품의 문을 열고, 오염된 릴리스 하나가 이를 가져오는 모든 빌드에 도달합니다. 다음 사고들이 그 패턴을 보여 줍니다.
기기 제조업체들이 수년간 라이선스해 온, 흔히 다른 이름으로 쓰이던 작은 TCP/IP 라이브러리에서 CVSS 최대 10.0의 취약점 19개가 발견되었습니다. 이 라이브러리는 여러 공급업체의 제품에 들어 있었고, 상당수 업체는 먼저 자사가 이를 출시했는지부터 파악해야 했습니다.
출시하는지조차 모르는 구성 요소는 패치할 수 없습니다.
칩 공급업체 SDK의 결함이 약 65개 제조업체의 약 200개 기기 모델에 도달했습니다. 라우터, IP 카메라, 스마트 조명 게이트웨이, 커넥티드 장난감 등입니다. 세부 내용이 공개된 지 이틀 만에 Mirai 봇넷이 해당 기기를 스캔하고 있었습니다.
칩 공급업체의 코드도 기기에 탑재되어 출시되는 순간 자사의 코드입니다.
업스트림 xz 프로젝트 자체의 5.6.0 및 5.6.1 버전에 백도어가 심어졌습니다. 임베디드 Linux 이미지는 xz 같은 압축 라이브러리를 으레 포함하며, 대개 누구도 이를 직접 선택하지 않습니다.
신뢰받던 오픈 소스도 단 한 번의 릴리스로 적대적으로 바뀔 수 있습니다.
공격자들은 ASUS의 자체 서명 인증서로 백도어가 심긴 업데이트 유틸리티에 서명하고, 공식 업데이트 서버를 통해 배포했습니다. Kaspersky는 100만 명 이상의 사용자에게 도달했을 수 있다고 추정했습니다.
유효한 서명은 누가 서명했는지만 증명할 뿐, 무엇이 들어갔는지는 증명하지 않습니다.
보안 부팅, 기본 비밀번호 제거, 디버그 포트 차단 같은 기기 강화는 출시하는 기기를 보호합니다. 아래 단계는 그 기기에 들어가는 것을 보호합니다.
CRACI는 이 목록 중 빌드 측면을 담당합니다. 모든 빌드의 SBOM, 공급업체 SBOM, 지속적인 모니터링, 빌드 격리, 이그레스 통제, 정책 게이트입니다. 서명과 기기 강화는 자사 도구로 계속 수행합니다.
Yocto 및 기타 임베디드 Linux 빌드를 CRACI의 GitHub Actions 러너에서 최대 32 vCPU로, x86-64 또는 네이티브 ARM64에서 실행하세요. 빌드가 실행되는 동안 CRACI는 호스트 패키지, Git 소스, GitHub Actions, 그리고 어떤 레시피나 잠금 파일에도 없는 다운로드를 포함해 빌드가 가져오는 모든 패키지와 파일을 기록합니다. core-image-sato 빌드에서 CRACI의 SBOM은 Yocto 자체 SBOM의 모든 구성 요소에 더해 Yocto가 놓친 88개를 포함했으며, 653개 Rust crate 버전 각각에 패키지 URL이 있어 모두 취약점 모니터링이 가능합니다.
각 작업은 작업 시작 전에 검증되고 실패 시 차단되는 이그레스 정책 아래에서 자체 격리된 가상 머신으로 실행됩니다. 기본 거부 정책을 사용하면 빌드는 패키지 소스에만 접근할 수 있습니다. 손상된 종속성이 서명 자료나 토큰을 공격자의 호스트로 보내려 하면, 공격이 새롭고 아직 아무도 보안 권고를 공개하지 않았더라도 차단되고 알림이 발생합니다.
칩 공급업체와 기타 공급업체의 SBOM을 추가하면, 구매한 구성 요소가 자사에서 빌드하는 소프트웨어와 함께 모니터링됩니다. 다음 SDK 취약점이 발표되면 공급업체의 코드가 자사 코드와 같은 기록 안에 있습니다.
CRACI는 새로운 취약점이 공개될 때마다 모니터링 중인 SBOM을 계속 재평가합니다. 빌드 기록은 어떤 빌드에 직접 또는 전이적인 취약한 종속성이 포함되었는지 보여 주고, 인벤토리 뷰는 어떤 소프트웨어 버전이 어떤 제품에 배포되었는지 보여 줍니다. 보안팀은 각 발견 사항을 분류해 수정을 담당하는 팀에 전달하며, 정책 게이트로 특정 CVE가 이후 모든 빌드에 들어오지 않게 할 수 있습니다.
Cyber Resilience Act에 따른 CE 마킹은 기술 문서와 적합성 평가를 기반으로 합니다. CRACI는 그 문서에 필요한 공급망 증거를 제공합니다. CycloneDX 또는 SPDX로 내보내는 빌드 시점 SBOM, 취약점 기록, 빌드 기록이 그것입니다. CRACI는 고객이 제출할 CRA 취약점 통지의 내용도 준비합니다. 적합성 평가, EU 적합성 선언서, CE 마킹은 제조업체인 고객사의 몫으로 남습니다.
CRACI는 펌웨어, SBOM, 출처 증명에 서명하지 않으며, 새로운 악성 패키지를 동작이나 평판으로 탐지하지 않습니다. CVE가 포함된 보안 권고가 나오면 악성 릴리스를 표시하고, 그전까지는 이그레스 정책에 의존합니다. 적합성 평가를 수행하거나 적합성 선언서를 작성하지 않습니다. 현재는 Linux 러너에서 GitHub Actions 작업을 실행하며, GitLab CI, Jenkins, Windows 및 macOS 러너는 로드맵에 있습니다.
커넥티드 기기와 소프트웨어 공급망 보호에 관해 자주 묻는 질문
기기 자체가 아니라 제조업체가 의존하는 것을 통해 기기에 도달하는 공격입니다. 취약한 오픈 소스 라이브러리, 칩 공급업체의 SDK, 오염된 패키지 릴리스, 손상된 빌드 도구, 탈취된 업데이트 채널 등이 그 경로입니다. 같은 구성 요소가 여러 제품에 탑재되므로, 하나의 약점이 여러 브랜드의 수백만 대 기기에 한꺼번에 도달할 수 있습니다.
출시하는 것부터 시작하세요. 모든 펌웨어 빌드에 대해 SBOM을 보관하고, 공급업체 구성 요소를 추적하며, 새로운 취약점이 나올 때마다 출시된 버전을 계속 확인합니다. 빌드 자체를 잠그고, 정책 게이트로 알려진 불량 버전을 차단하며, 서명 키를 보호하고, 분류, 수정, 공개를 위한 프로세스를 마련하세요. 보안 부팅이나 기본 비밀번호 비활성화 같은 기기 강화도 중요하지만, 펌웨어에 이미 취약한 구성 요소가 들어 있다면 도움이 되지 않습니다.
빌드가 레시피와 잠금 파일 밖에서 다운로드하는 것까지 포함해 이미지에 들어가는 모든 구성 요소를 파악하고, 그 기록을 릴리스별로 보관하세요. 필요한 소스에만 접근할 수 있는 격리된 환경에서 빌드해, 악성 종속성이 시크릿을 어디로도 보낼 수 없게 하세요. 기기를 지원하는 동안 기록된 구성 요소와 공급업체의 SBOM을 새로운 취약점과 대조해 모니터링하세요.
예. Yocto 및 BitBake 빌드는 CRACI 러너에서 실행되며, CRACI는 빌드가 실행되는 동안 작업의 SBOM을 기록합니다. Yocto 자체의 SPDX 출력에는 적용된 패치나 레시피가 수정됨으로 표시한 CVE처럼 CRACI가 기록하지 않는 레시피 메타데이터가 여전히 담겨 있으므로, 이를 활용한다면 create-spdx를 계속 켜 두세요.
SDK에 대한 SBOM이 있다면 가능합니다. 공급업체 SBOM을 CRACI에 추가하면 해당 구성 요소가 자사에서 빌드하는 소프트웨어와 함께 모니터링됩니다. 빌드 중에 공급업체로부터 다운로드하는 것도 모두 작업의 SBOM에 기록됩니다.
동작이나 평판으로는 탐지하지 않습니다. xz 백도어처럼 CVE가 공개된 알려진 악성 릴리스는 다른 취약점과 마찬가지로 표시되며, 정책 게이트로 이를 포함한 빌드를 차단할 수 있습니다. 새로운 공격에 대해서는 빌드가 필요 없는 호스트에 접근하지 못하게 막는, 기본 거부로 설정한 이그레스 정책이 CRACI의 보호 수단입니다.
아니요. CRACI는 펌웨어, SBOM, 출처 증명에 서명하지 않습니다. 릴리스와 업데이트에는 기존 서명 프로세스와 하드웨어 기반 키 저장소를 계속 사용하세요.
Cyber Resilience Act는 EU 시장에 출시되는 디지털 요소를 포함한 제품을 대상으로 하며, 여기에는 대부분의 커넥티드 소비자 기기가 포함됩니다. 보고 의무는 2026년 9월 11일부터 적용되며, 규정은 2027년 12월 11일부터 전면 적용됩니다. CRACI는 CRA 프로세스에 필요한 공급망 가시성과 증거의 상당 부분을 자동화하며, 규정 충족은 제조업체의 프로세스로 남습니다.
CRACI는 x86-64 및 ARM64 Linux 러너에서 1~32 vCPU로 GitHub Actions 작업을 실행합니다. GitLab CI와 Jenkins 같은 다른 CI 시스템과 Windows 및 macOS 러너는 로드맵에 있습니다.