masahiro331 / go-ext4-filesystem

Apache License 2.0
7 stars 10 forks source link

Implement block addressing format #16

Closed aruneko closed 4 months ago

aruneko commented 5 months ago

overview

If an ext4 filesystem is transformed from ext3 or ext2, it uses block addressing format instead of extents. In this case, this library can't read files from the disk. Therefore, I implemented a method to get files on block addressing format.

others

概要

ext3 などから移行されたファイルシステムで Block Addressing 形式でファイルが書き込まれていて、extent を利用していない場合にファイルが取れなかったため、Block Addressing 方式のサポートを追加しました。

その他

masahiro331 commented 4 months ago

VMDKなどのイメージから透過的に読み取れることが確認できてますか?

aruneko commented 4 months ago

VMDKなどのイメージから透過的に読み取れることが確認できてますか?

Trivy側の依存関係を編集してこのパッチを組み込んだものをEBSスキャンで動かしています。既存のExt4/Xfs環境を含めてスキャン結果は取得できているところまでは確認しています。

masahiro331 commented 4 months ago

VMDKなどのイメージから透過的に読み取れることが確認できてますか?

Trivy側の依存関係を編集してこのパッチを組み込んだものをEBSスキャンで動かしています。既存のExt4/Xfs環境を含めてスキャン結果は取得できているところまでは確認しています。

VMDKにエクスポートしたものに対してスキャンできるか検証できますか?

aruneko commented 4 months ago

VMDKにエクスポートしたものに対してスキャンできるか検証できますか?

承知です、明日検証してみます。

aruneko commented 4 months ago

色々嵌まってしまって遅くなりました。

以下検証内容です。

既存スキャン機能への影響調査

AWS EC2 で Debian AMI から起動して root volume を VMDK としてエクスポートしたものをスキャンして、既存の Ext4 に対するスキャンが問題ないことを確認しました。

Ext3 への対応調査

上記の環境を流用して、以下の手順で Ext3 EBS ボリュームを作成し、VMDK に変換したイメージに対してスキャンが行われることを確認しました。

$ sudo parted /dev/xvdb
parted) mklabel gpt
parted) mkpart primary ext3 1MiB 100%
parted) quit
$ sudo mkfs.ext3 /dev/xvdb1
$ sudo mount /dev/xvdb1 /mnt/ext3/
$ sudo cp -a /etc/ /mnt/ext3/etc/
$ sudo cp -a /var/ /mnt/ext3/var/
$ sudo dd if=/dev/xvdb > ext3.img
$ vboxmanage convertfromraw --format VMDK --variant Stream ext3.img ext3.vmdk
$ ./trivy vm --scanners vuln ext3.vmdk
knqyf263 commented 4 months ago

全然見てないけど良いと思います!