[Prisma Cloud Compute Edition] 大規模なトラフィックを処理すると、ECS Fargate タスクが終了コード 255 で終了する
725
Created On 07/31/24 08:21 AM - Last Modified 02/19/26 16:54 PM
Symptom
- ECS Fargateタスクにディフェンダーがインストールされています
- 防御されたタスクは、より大きなトラフィックを処理するときに、コード255で終了します。
- 同じデプロイメントタイプですが、トラフィックが少ない場合は同じエラーが報告されないようです
- ディフェンダーがなければ、トラフィック量が多くてもタスクは正常に動作します
Environment
- Prisma クラウド コンピューティング エディション
- AWS ECS ファーゲート
Cause
- ほとんどの Linux システムでは、コマンドライン引数の最大サイズは 128kb のデータです (メモリ ページ サイズによって異なります)。こちらを参照してください - https://elixir.bootlin.com/linux/v4.15/source/include/uapi/linux/binfmts.h
- 引数がこのサイズより大きい場合、防御側は引数文字列の読み取りに失敗し、実行を中止します (サイズ制限内で NULL 文字を見つけることができません)。
failed to fetch execve arguments: failed to read argument: failed to find string in <ArgString>
- ここでの問題は、引数のコマンドラインが長すぎて128kbの制限に達し、防御側が設計どおりに実行を処理できないことです。
- ディフェンダーは128kbに制限されており、ディフェンダー内で制限を変更することはできないため、タスクは失敗します。
Resolution
- ここでの 1 つの回避策は、エンコードされた JSON を別のファイルで渡すことです。これにより、引数文字列をその JSON へのファイル パスにすることができ、大幅に短くなります。
- または、より短い引数のための別の解決策を探してください。
- 最近の Linux システムは 2MB を超える引数サイズをサポートできるため、Defender は引数サイズの 128kb 制限を削除するように修正されます。詳細は、https://man7.org/linux/man-pages/man2/execve.2.html を参照してください。