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

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

2020年9月3日

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

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

概要

729日の午前0:00 (UTC)、Fastly はあるお客様 (「Xとします) から別の客様 (「Yとします) 向けの1行のログがお客様 X ログシステムに届いたとの通知を受けました。Fastly では速やかに調査を開始し、複雑な一連の条件が発生した場合に、1行のログが誤って正しくなログサービスにルーティングされる可能性があることを特定しました。エラーの根本原因は、20124月にパフォーマンスの改善を目的に 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 送信され、当社のプライバシーポリシー従って処理されます。内容を確認いただき、同意の「購読を申し込む」をクリックしてください。