펌웨어 이미지의 구조화 방법 개요

펌웨어 이미지는 하드웨어를 작동하는 소프트웨어를 포함하는 파일 및 파일 시스템의 컬렉션입니다. 압축된 파일, 실행 파일 및 시스템 파일이 포함된 경우가 많습니다. 이러한 파일 시스템은 각 파일 내에 다른 파일 시스템을 포함하거나 포함하지 않을 수 있습니다. 예를 들어 .zip 파일인 펌웨어 이미지에는 파일 내의 실행 파일과 같은 개별 파일이 포함될 수 있지만 SquashFS 파일과 같은 다른 압축 파일 시스템도 포함될 수 있습니다. 다음과 같이 시각화할 수 있습니다.

펌웨어 이미지의 파일 시스템이 어떻게 표시되는지 스크린샷.

각 원은 파일 내에 더 많은 파일 시스템이 있을 수도 있고 없을 수도 있는 파일을 나타냅니다. 추출기는 추출할 원(파일)이 더 이상 없을 때까지 각 원을 반복적으로 추출합니다.

포괄하는 큰 타원이 펌웨어 이미지를 나타내는 경우 큰 타원 내의 세 개의 원은 이 펌웨어 이미지 내의 개별 파일 시스템을 나타낼 수 있습니다. 원은 파일 시스템이 내장된 실행 파일을 나타낼 수도 있습니다.

펌웨어 이미지의 복잡한 구조 때문에 지정된 계층은 실행 파일 또는 다른 포함된 실행 파일 또는 파일 시스템을 사용하는 파일 시스템일 수 있으므로 추출 결과를 제시하여 펌웨어 이미지의 구조를 정확하게 반영할 수 있는 포괄적인 방법이 필요합니다.

추출기 작동 방식

펌웨어 분석 추출기는 펌웨어 이미지 내에 있는 데이터를 식별하고 압축을 풉니다. 각 파일 형식에 대해 하나씩 여러 형식의 추출기가 있습니다. 펌웨어 분석에서 지원하는 파일 형식의 전체 목록은 펌웨어 분석 질문과 대답을 확인하세요.

예를 들어 ZipArchive 추출기는 ZipArchive 파일을 추출합니다. 추출기는 시스템의 디스크에 있을 때 이미지를 추출하고 파일 경로를 빌드 환경의 파일 구조와 상호 연결해야 합니다. 펌웨어 이미지를 펌웨어 분석 서비스에 업로드하면 추출기는 더 이상 추출할 수 없을 때까지 이미지를 재귀적으로 추출합니다. 즉, 원래 펌웨어 이미지가 개별 파일로 압축 해제되고 각 개별 파일이 추출기로 다시 전송되어 압축을 더 푼지 확인합니다. 추출기가 더 이상 압축을 풀 수 없을 때까지 반복됩니다.

경우에 따라 여러 파일이 하나로 연결될 수 있습니다. 추출기는 해당 한 파일에 많은 파일이 있음을 식별하고 적절한 추출기를 사용하여 각 파일을 추출한 다음 각 파일을 자체 디렉터리에 넣습니다. 즉, 컴파일된 GZip파일이 4개이고 하나의 파일로 연결된 경우 추출기는 해당 추출 수준에 4개의 GZip 파일이 있음을 식별합니다. 추출기는 첫 번째 GZip 파일을 이름이 지정된 GZipExtractor/1디렉터리에, 두 번째 파일은 이름이 지정된 GZipExtractor/2디렉터리에 배치합니다.

추출기에서 만든 파일 경로 해석

펌웨어 분석 서비스에서 분석 결과의 SBOM 보기에는 파일 경로가 포함됩니다.

펌웨어 분석 결과의 SBOM 보기 스크린샷

다음은 분석 결과에서 볼 수 있는 파일 경로의 예와 파일 시스템 구조에서 경로를 시각화하는 방법입니다.

추출기별 샘플 파일 경로 스크린샷

다음 파일 시스템 구조는 SBOM 파일 경로의 시각적 표현입니다.

샘플 파일 시스템 구조의 스크린샷.

이 예시 파일 경로에서는 ZipArchiveExtractorZipArchive를 추출한 뒤, 그 내용을 ZipArchiveExtractor/1이라는 이름의 디렉터리에 저장합니다. 다시 말하지만, '1'은 이 추출 수준의 첫 번째 파일이자 유일한 ZipArchive 파일임을 의미합니다. 추출기는 zip-root 파일에 ZipArchive라는 기본 이름을 할당합니다.

파일 시스템의 zip-root 스크린샷

참고

일반적으로 접미사가 -root 있는 하위 디렉터리가 추출기에서 만들어지고 실제로 사용자 환경에 존재하지 않는다고 가정할 수 있습니다. 추출기에서 해당 파일 형식의 콘텐츠를 보관하기 위해 만든 하위 디렉터리일 뿐입니다.

zip-root 파일은 다음과 같습니다.adhoc

파일 시스템의 zip-root 및 임시 파일 스크린샷

adhoc 파일 내에 lede-17.01.4-arc770-generic-nsim-initramfs.elf 파일이 있습니다.

파일 시스템에 있는 애드혹 및 lede 파일의 스크린샷

파일이 lede…으로 끝나므로 이는 .extracted 파일 내에 추가로 추출해야 하는 내용이 있음을 의미합니다. 다음으로 사용된 추출 도구는 CPIOArchiveExtractor이며, 이는 CPIOArchive 파일 내부에 .elf 파일 시스템이 포함되어 있음을 의미합니다. 파일의 CPIOArchive 내용이 cpio-root 하위 디렉터리에 위치되었습니다.

파일 시스템의 cpio-root 파일 스크린샷

파일 내에 CPIOArchive 파일이 있었고 bin 해당 bin 파일에는 다음과 같은 이름의 busybox 파일이 있습니다.

파일 시스템의 cpio-root, bin 및 busybox 파일의 스크린샷

사용자 환경에서 경로를 식별하십시오.

처음 사용한 추출기가 ZipArchiveExtractor이었기 때문에 모든 것이 Zip 파일에 존재합니다. Zip 파일을 찾습니다. 이 파일 내에서 환경의 전체 경로는 다음과 입니다/adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf.extracted/bin/busybox. 그러나 추출의 첫 번째 수준인 파일만 볼 수 있다고 가정합니다 .elf . 더 자세히 알아보려면 첫 번째 계층을 넘어 추출하려면 고유한 추출기가 필요합니다. 즉, 톡톡히 가야 할 파일 경로는 다음과 /adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf같습니다.

여러 추출기 경로

경우에 따라 파일 경로 옆에 (+1) 또는 (+2)가 있는 것을 확인할 수 있습니다.

여러 경로가 있는 SBOM의 스크린샷.

숫자 위로 마우스를 가져가면 다음과 같은 팝업이 표시됩니다.

SBOM의 여러 경로 스크린샷

즉, 이 두 실행 경로에서 SBOM을 찾을 수 있습니다.

UEFI 분석 기능이 추출기 경로에 미치는 영향

UEFI(통합 확장 가능 펌웨어 인터페이스) 펌웨어는 구조 및 콘텐츠의 다른 펌웨어 유형과 다릅니다. 단일 UEFI 펌웨어 이미지에는 다음이 포함될 수 있습니다.

  • UEFI 관련 모듈
  • 펌웨어 내에 포함된 기타 실행 파일 형식(예: Linux ELF 이진 파일)

따라서 펌웨어 분석 결과와 SBOM 보기에 표시된 추출기 경로에는 동일한 분석 내에서 실행 가능한 형식이 혼합되어 포함될 수 있습니다.

UEFI 펌웨어의 경우 추출기 경로 개선 사항이 현재 미리 보기 기능으로 제공됩니다. 사용 가능한 경우 추출기 경로에는 다음이 포함될 수 있습니다.

  • UEFI 모듈 이름
  • UEFI 펌웨어에서 내부적으로 사용되는 GUID 기반 식별자

이러한 향상된 기능은 SBOM 항목을 UEFI 모듈과 상호 연결할 때 명확성을 높이기 위한 것입니다. 그러나 모든 펌웨어 이미지 또는 모든 모듈에는 표시되지 않을 수 있습니다.

참고

UEFI 추출기 경로 개선 사항이 미리 보기로 제공되므로 적용 범위가 불완전할 수 있습니다. 누락된 모듈 이름 또는 경로는 구성 요소가 없다는 증거가 아니라 알 수 없는 것으로 해석되어야 합니다.

UEFI 분석 범위와 추출기 경로 간의 관계

UEFI 분석 기능은 기능 완성도에 따라 다릅니다.

  • UEFI 펌웨어에 내장된 암호화 인증서 및 키들의 탐지가 일반 가용성(GA) 상태입니다
  • UEFI 펌웨어에 대한 SBOM 추출, 약점 검색, 이진 강화 특성 및 추출기 경로 향상은 현재 미리 보기로 제공됩니다.

UEFI 펌웨어에 대한 SBOM 및 약점 데이터는 검색된 구성 요소에서 파생되기 때문입니다.

  • 버전을 자신 있게 식별할 수 있는 구성 요소에 대해서만 CVE가 표시될 수 있습니다.
  • 일부 SBOM 행에 데이터 누락 또는 부분 데이터가 있을 수 있습니다.
  • 일부 추출기 경로는 펌웨어 내에 포함된 비 UEFI 실행 파일에만 적용될 수 있습니다.

UEFI 관련 행에서 누락되거나 빈 값은 보안 기능이 없거나 취약성이 존재하지 않는다는 확인이 아니라 알 수 없는 것으로 해석되어야 합니다.