Gambaran Umum Bagaimana Gambar Firmware Terstruktur

Gambar firmware adalah kumpulan file dan sistem file yang berisi perangkat lunak yang mengoperasikan perangkat keras. Seringkali, ini termasuk file terkompresi, file yang dapat dieksekusi, dan file sistem. Sistem file ini mungkin atau mungkin tidak menyertakan sistem file lain dalam setiap file. Misalnya, gambar firmware yang merupakan file .zip dapat mencakup file individual seperti yang dapat dieksekusi di dalamnya tetapi juga dapat menyertakan sistem file terkompresi lainnya, seperti file SquashFS. Anda dapat memvisualisasikannya seperti berikut ini:

Cuplikan layar bagaimana sistem file gambar firmware mungkin terlihat.

Setiap lingkaran mewakili file yang mungkin atau mungkin tidak memiliki lebih banyak sistem file di dalamnya. Ekstraktor berulang kali mengekstrak setiap lingkaran sampai tidak ada lagi lingkaran (file) di dalamnya yang akan diekstraksi.

Jika oval yang besar dan mencakup mewakili gambar firmware, tiga lingkaran dalam oval besar dapat mewakili sistem file individual dalam gambar firmware ini. Lingkaran bahkan dapat mewakili executable dengan sistem file yang disematkan di dalamnya.

Karena struktur kompleks citra firmware – setiap lapisan bisa menjadi file executable atau sistem file dengan file executable atau sistem file tertanam lainnya – kita memerlukan cara komprehensif untuk menyajikan hasil ekstraksi untuk secara akurat mencerminkan struktur citra firmware.

Cara Kerja Ekstraktor

Ekstraktor analisis firmware mengidentifikasi dan mendekompresi data yang ditemukan dalam gambar firmware. Ada beberapa jenis ekstraktor, satu untuk setiap jenis file. Untuk daftar lengkap format file yang didukung analisis firmware, periksa Analisis firmware Tanya Jawab Umum.

Misalnya, ZipArchive ekstraktor akan mengekstrak ZipArchive file. Ekstraktor mengekstrak gambar saat berada di disk di sistem Anda, dan Anda harus menghubungkan jalur file dengan struktur file di lingkungan build Anda. Saat Anda mengunggah gambar firmware ke layanan analisis firmware, ekstraktor secara rekursif mengekstrak gambar sampai tidak dapat mengekstrak lebih lanjut. Ini berarti bahwa gambar firmware asli didekompresi ke dalam file individual, dan setiap file individu dikirim lagi ke ekstraktor untuk melihat apakah mereka dapat didekompresi lebih lanjut. Ini berulang sampai ekstraktor tidak dapat mendekompresi lebih lanjut.

Terkadang, mungkin ada banyak file yang digabungkan menjadi satu. Extractor akan mengidentifikasi bahwa ada banyak file dalam satu file tersebut, dan menggunakan ekstraktor yang sesuai untuk mengekstrak setiap file, lalu memasukkan setiap file ke dalam direktorinya masing-masing. Ini berarti bahwa jika ada empat file yang dikompilasi dengan GZip, dan digabungkan menjadi satu file, ekstraktor akan mengidentifikasi bahwa ada empat GZip file pada tingkat ekstraksi tersebut. Ekstraktor akan memasukkan file pertama GZip ke dalam direktori bernama GZipExtractor/1, yang kedua ke dalam direktori bernama GZipExtractor/2, dan sebagainya.

Menginterpretasikan Jalur File yang Dibuat oleh Ekstraktor

Dalam layanan analisis firmware, tampilan SBOM dari hasil analisis berisi jalur file:

Cuplikan layar tampilan SBOM dalam hasil analisis firmware.

Berikut adalah contoh jalur file yang mungkin terlihat dalam hasil analisis, dan cara memvisualisasikan jalur dalam struktur sistem file:

Cuplikan layar jalur file sampel oleh ekstraktor.

Struktur sistem file berikut adalah representasi visual dari jalur file SBOM:

Cuplikan layar struktur sistem file sampel.

Dalam jalur file sampel ini, ZipArchiveExtractor yang diekstrak ZipArchive, dan menempatkan konten tersebut ke dalam direktori yang bernama ZipArchiveExtractor/1. Sekali lagi, '1' berarti bahwa ini adalah yang pertama - dan mungkin, satu-satunya – ZipArchive file pada tingkat ekstraksi ini. Ekstraktor menetapkan nama default yang dipanggil zip-root ke ZipArchive file.

Cuplikan layar zip-root dalam sistem file.

Catatan

Biasanya, Anda dapat berasumsi bahwa subdirektori dengan akhiran berdasarkan -root ini dibuat oleh Extractor dan sebenarnya tidak terdapat di lingkungan Anda. Ini hanya subdirektori yang dibuat oleh Extractor untuk menyimpan konten jenis file tersebut.

file zip-root ada di dalam adhoc.

Cuplikan layar file zip-root dan adhoc dalam sistem file.

Di dalam file adhoc terdapat file lede-17.01.4-arc770-generic-nsim-initramfs.elf.

Cuplikan layar file adhoc dan lede dalam sistem file.

lede… Karena file berakhir dengan .extracted, ini berarti bahwa ada sesuatu dalam file ini .elf yang perlu diekstraksi lebih lanjut. Ekstraktor berikutnya yang digunakan adalah CPIOArchiveExtractor, yang berarti bahwa ada sistem file CPIOArchive yang disematkan dalam file .elf. Isi CPIOArchive file ditempatkan dalam cpio-root subdirektori:

Cuplikan layar file cpio-root dalam sistem file.

dan dalam CPIOArchive file, ada bin file, dan file tersebut bin memiliki file bernama busybox di dalamnya:

Cuplikan layar file cpio-root, bin, dan busybox dalam sistem file.

Temukan Jalur di Lingkungan Anda

Karena ekstraktor pertama yang digunakan adalah ZipArchiveExtractor, ini berarti bahwa semuanya ada dalam Zip file. Temukan file Zip, dan di dalamnya, jalur lengkap di lingkungan Anda adalah /adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf.extracted/bin/busybox. Namun, asumsikan bahwa Anda hanya dapat melihat ke tingkat ekstraksi pertama - .elf file . Untuk melihat lebih lanjut, Anda akan membutuhkan ekstraktor Anda sendiri untuk mengekstrak di luar lapisan pertama. Ini berarti bahwa, secara nyata, jalur file yang akan dialihkan adalah: /adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf.

Beberapa Jalur Ekstraksi

Dalam beberapa kasus, Anda mungkin melihat (+1) atau (+2) di samping jalur file.

Cuplikan layar SBOM dengan beberapa jalur.

Saat mengarahkan mouse ke atas angka, Anda akan melihat pop-up yang terlihat seperti ini:

Cuplikan layar beberapa jalur SBOM.

Ini berarti bahwa SBOM dapat ditemukan di dua jalur yang dapat dieksekusi ini.

Bagaimana kemampuan analisis UEFI memengaruhi jalur ekstraktor

Firmware UEFI (Unified Extensible Firmware Interface) berbeda dari jenis firmware lain dalam struktur dan konten. Satu gambar firmware UEFI dapat berisi:

  • Modul khusus UEFI
  • Format lain yang dapat dieksekusi yang disematkan dalam firmware (misalnya, biner LINUX ELF)

Akibatnya, hasil analisis firmware—dan jalur ekstraktor yang ditunjukkan dalam tampilan SBOM—dapat mencakup campuran jenis yang dapat dieksekusi dalam analisis yang sama.

Untuk firmware UEFI, pengoptimalan jalur ekstraksi saat ini disediakan sebagai kapabilitas Pratinjau. Jika tersedia, jalur ekstraktor dapat mencakup:

  • Nama modul UEFI
  • Pengidentifikasi berbasis GUID yang digunakan secara internal oleh firmware UEFI

Peningkatan ini dimaksudkan untuk meningkatkan kejelasan saat menghubungkan entri SBOM dengan modul UEFI. Namun, mereka mungkin tidak muncul untuk semua gambar firmware atau semua modul.

Catatan

Karena penyempurnaan jalur ekstraktor UEFI sedang dalam Pratinjau, cakupan mungkin tidak lengkap. Nama atau jalur modul yang hilang harus ditafsirkan sebagai tidak diketahui, bukan sebagai bukti bahwa komponen tidak ada.

Hubungan antara cakupan analisis UEFI dan jalur ekstraktor

Kemampuan analisis UEFI bervariasi menurut kematangan fitur:

  • Deteksi sertifikat kriptografi dan kunci yang disematkan dalam firmware UEFI Tersedia Secara Umum (GA)
  • Ekstraksi SBOM, deteksi kelemahan, atribut penguatan biner, dan peningkatan jalur ekstraktor untuk firmware UEFI saat ini dalam Pratinjau

Karena data SBOM dan kelemahan untuk firmware UEFI berasal dari komponen yang terdeteksi:

  • CVE mungkin hanya muncul untuk komponen yang versinya dapat diidentifikasi dengan percaya diri
  • Beberapa baris SBOM mungkin memiliki data yang hilang atau sebagian.
  • Beberapa jalur ekstraktor mungkin hanya berlaku untuk executable non-UEFI yang disematkan dalam firmware

Nilai yang hilang atau kosong dalam baris terkait UEFI harus ditafsirkan sebagai tidak diketahui, bukan sebagai konfirmasi bahwa fitur keamanan tidak ada atau kerentanan tidak ada.