セキュリティアドバイザリー

部のログが正しく配信されない問題について

2020年9月3日

まれな一連の条件が揃ったために発生したログの誤ったルーティングに関する調査の概要を示す Fastly のセキュリティアドバイザリー (FSecA) については、以下を参照してください。


この FSecA は、この調査の対象範囲と影響を明確に理解し、これまでに実施された対策について説明することを目的にしています。


概要


7月29日の午前0:00 (UTC)、Fastly はあるお客様 (「X」とします) から、別のお客様 (「Y」とします) 向けの1行のログがお客様 X のログシステムに届いたとの通知を受けました。Fastly では速やかに調査を開始し、複雑な一連の条件が発生した場合に、1行のログが誤って正しくないログサービスにルーティングされる可能性があることを特定しました。エラーの根本原因は、2012年4月にパフォーマンスの改善を目的に Fastly が導入したロジックにあることが判明しました。このお客様からのレポート以外にこの問題に関する連絡を Fastly は受けていません。つまり、過去8年間でこの問題が発生する条件が同時に揃ったのは1度のみということになります。


対象範囲


Fastly ではこのインシデントについて詳しく調査し、以下の条件が重なった (以下のすべての条件に該当する) 場合に問題が発生することを確認しました。



  1. Varnish デーモンのサブシステムが遷移状態になり、メモリ不足またはメモリをほぼ使い果たした状態にある (予期しない読み込みまたはプログラミングのエラーが原因でこのような状態が発生する可能性があります)。

  2. Varnish デーモンが (お客様 X の) ログバッファーにログを書き込んでいるが、メモリ不足状態のためログが不完全である (ログ X1)。

  3. 他の場所でリソースが解放されたために部のメモリが動的に回復され、別の客様からの完全なログ (ログ Y1)書き込まれる。

  4. ログ X1不完全であったため、2つのログが結合される (これにより、ログ X1Y1形成される)。

  5. ログサーバーがログ (X1Y1)取得し、連結されたログ (X1Y1)先頭からお客様の宛先情報を読み込み、連結されたログ (X1Y1) 全体をお客様 X配信する。


対策


過去8年間でこれらの条件がすべて揃うことが以前にあった場合、Fastly はすでに通知を受けていたと確信しています。Fastly では、いかなるデータ破損の可能性もきわめて深刻に受け止めています (「HTTP/2 クライアント接続を行うサービスのルーティングが正しく行われない問題について」および「他の Fastly サービスへのリクエストボディの開示について」をご参照ください)。今回のケースのように、誤って記録されたログが1行だけであったとしても、Fastly は根本原因の分析を怠りません。今後同様の問題が発生することを回避するため、保護機能を導入しました。


ログの書き込みの際のメモリ不足 (上記の条件2) に Varnish が対処するためのソリューションをフリート全体にデプロイし、これらの条件が重なった場合にログデータが誤ってルーティングされることがないようにしました。この修正の適用以降は、ログイベントの構築の際にエラーが発生するとプロセスが失敗し、ログが書き込まずに破棄されます。フリート全体への修正のデプロイは、7月31日の午前10:51 (UTC) に段階的に開始され、8月9日の午後2:49 (UTC) に完了しました。


Fastly では、修正デプロイ後の8月13日から9月2日の期間に、このエラーを引き起こす条件に関する大規模な調査を実施し、ログの誤ったルーティングの潜在的な発生率を確認しました。
調査の結果、お客様によるアクションは必要ありません。万が一予期しないログを受信した場合はご連絡ください。この問題に関連するものであるかを調査します。


イベントの経過


2020年7月29日のイベント



  • (午前0:00 UTC) - お客様が、Fastly別の客様からのログをログストリームで検出し、Fastly報告

  • (午前0:35 UTC) - Fastly インシデント管理プロセスを開始

  • (午前0:57 UTC) - Fastly漏えいしたログデータのコピーを入手して評価を開始

  • (午前1:03 UTC) - Varnishおけるログデータ破損の原因を特定し、考えられる解決方法に関する調査を開始


2020年7月31日のイベント



  • (午前7:44 UTC) - バグを修正するため Varnishパッチを作成

  • (午前8:15 UTC) - Varnishパッチのデプロイをテストおよび承認

  • (午前10:51 UTC) - Varnishパッチのデプロイを開始


2020年8月9日のイベント



  • (午後2:49 UTC) - Varnishパッチのデプロイと修正プロセスが完了


2020年8月13日から2020年9月2日までのイベント



  • エラーが発生する条件に関する調査がすべて完了


問い合わせ


ご質問がある場合は、Fastly のカスタマー・エンジニアリング・チーム (support@fastly.com) またはセキュリティチーム (security@fastly.com) までお問い合わせください。

セキュリティアドバイザリーの購読お申し込み

入力いただいた情報は米国 Fastly に送信され、当社のプライバシーポリシーに従って処理されます。内容をご確認いただき、同意の上「購読を申し込む」をクリックしてください。