現在 US で開催されている re:Inforce 2024 にて、Amazon GuardDuty Malware Protection for Amazon S3(以下、GuardDuty Malware Protection for S3) が発表されました!
Amazon S3(以下、S3) のマルウェア検知を早速試してみたいと思います!
​​

Amazon GuardDuty とは

Amazon GuardDuty (以下、GuardDuty) は、AWS アカウントやワークロードに対する様々な脅威を検知するサービスです。

CloudTrail や VPC フローログからの情報をもとにした脅威検知機能に加え、EC2 や ECS、EKS に導入したエージェントによる検知機能を備えています。
マルウェア検知の機能としては、これまでも EC2 (EBS ボリューム) を対象としたスキャン機能はありました。

ただ、EC2 を使わずにファイルを S3 に保存するケースは多々あります。
そのような環境で、S3 内のファイルのスキャンを行いたいという場合には、サードパーティ製品や OSS を使い、スキャンする仕組みを整える必要がありました。

今回のアップデートにより、マネージドサービスで直接 S3 のオブジェクトをスキャンすることが可能となります。

新機能の GuardDuty Malware Protection for S3 の概要

今回発表された機能である、 GuardDuty Malware Protection for S3 では、アップロードされたファイルをスキャンし、スキャンしたファイルにタグ付けを行います。
このタグを使って、マルウェアを検知したオブジェクトに対してアクセス制限(ブロック)を行うことができます。

また、Malware Protection for S3 は今までの GuardDuty 本体とは別で独立して使用することができ、GuardDuty 本体を有効化しなくても、この機能だけ利用することが可能です。

制限事項

​​GuardDuty Malware Protection for S3 には、現状下記のような機能は含まれていません。

・フルスキャン
バケット内をフルスキャンするような機能は現状提供されていません。

・隔離や通知
機能単体では検知されたファイルの隔離や通知の機能はなく、別途実装する必要があります。

・Security Hub への統合
他の GuardDuty 機能とは違い、現状 Security Hub への統合は提供されていません。

これらのことから、定期的なフルスキャンが必要であったり、隔離までまとめて対応したいというようなケースでは、サードパーティ製品の利用も候補になってきそうです。

料金体系

スキャン料金 + S3 へのタグ付け料金(オプション) の料金が発生します。

スキャン料金
https://aws.amazon.com/guardduty/pricing/#GuardDuty_protection_plan

タグ付け料金
https://aws.amazon.com/s3/pricing/

使ってみた

有効化

新しいメニューが追加になっています。
ここから有効化していきます。

スキャン対象とするバケット等を指定して、有効化します。
アクセス許可欄の IAM ロールには、スキャンに必要なポリシーをアタッチする必要があります。

有効になりました。

検知テスト

eicar テストファイルを対象バケットにアップロードして検知テストをしていきます。

eicar テストファイルをアップロードすると、マルウェアとして検出されました。

対象のオブジェクトに THREATS_FOUND のタグが付与されています。

通常のファイルだと、NO_THREATS_FOUND のタグが付与されます。

アクセス拒否のテスト

公式ドキュメント を参考に、対象バケットにバケットポリシーを設定します。

対象バケットへのアクセス権を持った EC2 からアクセスできるか確認します。
通常のファイルへのアクセスはアクセスできます。

aws s3 cp s3://saeki-test-bucketxxxxxxxxxxxxx/test.txt ./
download: s3://saeki-test-bucketxxxxxxxxxxxxx/test.txt to ./test.txt

THREATS_FOUND のタグが付与されたファイルへのアクセスは拒否されました。

aws s3 cp s3://saeki-test-bucketxxxxxxxxxxxxx/eicar.txt ./
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

おわりに

ついに、AWS のマネージドサービスで S3 バケットの保護機能が追加されました。
比較的安価に始められ、マッチするような環境も多いと思います。

続々と新機能が追加される GuardDuty、今後のアップデートにも期待です。