サーバーレス インフラストラクチャに依存しているスタートアップ企業に打撃を与えたい場合、1,000 ノードの小規模なボットネットで毎月 4 万ドルの経済的損害を与えることができる可能性があります。
この推定は、アイルランド国立大学ゴールウェイ校のコンピューターサイエンスの専門家であるダニエル・ケリー、フランク・グラビン、エンダ・バレットが最近発表した論文「ウォレットの拒否 - サーバーレスコンピューティングへの迫り来る脅威の定義」で発表されたものです。
ウォレット拒否(DoW)攻撃は、実際には広く認識されている脅威ではありません。著者らが指摘しているように、「DoW攻撃は公に記録されていません」。しかし、低品質のコードが使用された結果としてDoW攻撃が報告されており、その可能性に対する懸念はここ数年にわたり議論されてきました。
そこで、私たち NUIG の 3 人の研究者は、このような攻撃がどのように機能するかをモデル化しようと試みました。
「Denial of Wallet」(サービス拒否)という言葉は、少なくともAmazonがサーバーレスLambdaサービスを開始する1年前の2013年にまで遡ります。この用語は、OWASPに採用された2017年頃にはより一般的に使用されるようになりました。しかし、クラウドコンピューティングにおける予期せぬ請求(いわゆる「ビルショック」)への懸念は、10年以上前から存在しています。
2008 年、DoW は経済的持続可能性の否定 (EDoS) と呼ばれました。
同様の方法、異なる結果
DoS 攻撃と DoW 攻撃の目的は異なります。前者はコンピューティング リソースを枯渇させることに重点を置いており、後者は金銭リソースを枯渇させることに重点を置いています。
DoS攻撃は、標的企業がネットワークリクエストの膨大な負荷を処理するためのITリソースに費用を投じることでDoS攻撃による損失を回避しようとする場合、DoW攻撃と同様の経済的影響を及ぼす可能性があります。しかし、DoW攻撃の場合はそうではありません。DoW攻撃の場合、防御策は支出を阻止、あるいは抑制することです。
Google Cloud (over)Run: 無料トライアル実験が一夜にして 72,000 ドルの請求で終了した経緯
続きを読む
3 人の学者は、効率的なサーバーレス関数の作成、時間とディスク使用量の制限の設定、API 呼び出しの調整の適用、アクセス制御の実施、ReDoS 攻撃や Billion-Laughs-Attack に基づくアプリケーション層攻撃に対する防御機能を提供するライブラリの利用など、DoW 攻撃のリスクを軽減するために実行できる多くの方法があることを認めています。
「しかし、これは長期間にわたる攻撃や大量の攻撃ノードによる潜在的な攻撃を軽減するものではなく、必然的に関数の実行時間を長くすることになる」と彼らは主張する。「タイムアウト、ディスク使用量、APIスロットリングなどの制限を設定することで、攻撃はDoW(資金の枯渇)からDoS(リソースの枯渇)へと移行する。」
アクセス制御の効果は、認証情報の取得の難しさによって決まります。管理者専用の機能は安全かもしれませんが、アプリケーションのアカウント所有者がアクセスできるAPIエンドポイントは、偽のユーザーによる悪用を受ける可能性があります。
ケリー氏、グラビン氏、バレット氏は、関数を呼び出すためにAPIエンドポイントを継続的に攻撃するように設計された、ゆっくりとしたリーチング攻撃が、レート制限ルールなどのDoS型フラッド攻撃向けの防御を回避する最も効果的な方法であると主張しています。さらに、効果的なDoW攻撃は、特定のサーバーレスサービスの運用方法だけでなく、攻撃対象となるクラウド関数の実装が適切かどうかも考慮する必要があると主張しています。
「DoW攻撃が及ぼす可能性のある被害を完全に理解するには、単にゆっくりと進行するDoS攻撃と捉えるべきではありません」と彼らは述べています。「開発者が犯した可能性のあるあらゆる見落としを徹底的に利用すべきです。ファイルを処理する関数に制限が課されていない場合、関数の実行時間は長くなります。」
そして現実世界では
たとえば、Microsoft Azure Functions では、他のサーバーレス プラットフォームのように開発者が関数のメモリ割り当てを構成することができないため、攻撃者が Azure Functions に、より大きな入力を処理するために、より大きなメモリ割り当てを強制的に拡張させることができる可能性があると指摘しています。
このような攻撃の可能性を実証するため、研究者たちはサーバーレス・プラットフォーム価格エミュレーターを構築しました。これは、OpenFaaSサーバーレスデプロイメント上にPrometheus監視コードと連携したPythonプログラムで、AWS Lambda、Google Cloud Functions、IBM Cloud Functions、Microsoft Azure Functionsにおける関数呼び出しのコストをテストします。
1,000ノードの小規模なボットネットは、1年間放置するとアプリケーション所有者に40万ドルから50万ドルの損害を与えることになる。
関数に GET リクエストを発行して IP アドレスを切り替える Python スクリプトを実行するマシンと、DoS ツールの Low-Orbit Ion Cannon を使用して、大学の 3 人は、一般的なサーバーレス関数のシナリオ (画像の再処理、つまりユーザーがアップロードした画像からサムネイルを作成する) に基づいた概念実証攻撃を考案しました。
Apple iPhone Xの4032×3024ピクセルの画像を用いて、512MBのメモリ割り当てを持つサーバーレス関数の実行時間は2950ミリ秒と研究者たちは計算しました。この関数のコストを長期的に見ると、Google Cloud Functionsが最も高く、次いでAWS Lambda、IBM Cloud Functions、そしてAzure Functionsの順でした。
「1,000ノードの小規模なボットネットでは、1時間あたり2,000リクエストの低速攻撃を受けると、アプリケーション所有者は1ヶ月で約4万ドル、1年間放置した場合は40万ドルから50万ドルの損害を被ることになる」と報告書は述べている。「攻撃ノードの数は経済的損害に比例する。10,000ノードのボットネットは、1ヶ月で1,000ノードが1年間で与えるのと同じ損害を与えることになる。」
今は、もし DoW 攻撃がまだ発生して検出されていないのであれば、誰かが実際に攻撃を試みることを待つしかありません。®