本文へスキップ
MameTechNews
バックエンド

Firecracker、復元したVMからプロセスメモリに届く欠陥を修正

## POINTS

  • LambdaなどAWSのマネージドサービスは対象外。確認が要るのは、自前のFirecracker運用だけである。
  • 条件は、Fileバックエンドでのスナップショット復元に、balloonまたはvirtio-memが付いている場合。
  • 修正版は1.16.2と1.17.0。Uffdへ切り替えるときは、破棄ページの要件を満たしてからにする。

Firecrackerは、AWS Lambdaなどのサーバレスを支えるオープンソースのVMMである。条件は狭いが、破られるのはゲストとホストプロセスの分離だ。スナップショット復元、Fileバックエンド、balloonまたはvirtio-memの三つがそろう必要がある。現行のサポートラインではv1.16.0とv1.16.1が該当し、修正はv1.16.2とv1.17.0に入っている。フォークや改変版は、同じ修正を取り込む。

すぐ上げられない場合は、破棄されたページの要件を満たすUffdメモリバックエンドで復元する。Linux 6.12のovercommit変更がないカーネルでは、vm.overcommit_memory=0にし、最大の破棄サイズをホストのRAMとスワップ以下に抑える。メモリcgroupのOOMキラーは有効のままにする。AWSは、これでも置き換えマッピングの失敗をすべて防げるわけではないと書いている。

Lambdaを使うだけなら作業はない。Firecrackerを自分で動かしているチームは、スナップショットとメモリデバイスの組み合わせを棚卸しする。