Skip to content

Latest commit

 

History

History
29 lines (25 loc) · 4.46 KB

C10.エラー処理と例外処理.md

File metadata and controls

29 lines (25 loc) · 4.46 KB

C10:エラー処理と例外処理

説明

例外処理は、さまざまな方法でさまざまなエラー状態(ネットワークダウンやデータベース接続の失敗など)にアプリケーションが応答できるようにするプログラミング概念です。 例外やエラーを正しく処理することは、コードの信頼性と安全性を高める上で非常に重要です。 エラー処理と例外処理は、重要なビジネスロジックやセキュリティ機能、フレームワークコードなど、アプリケーションのすべての領域で発生します。 エラー処理は、侵入検知の観点からも重要です。 アプリケーションに対する特定の攻撃は、進行中の攻撃を検知するのに役立つエラーを引き起こす可能性があります。

エラー処理の誤り

トロント大学の研究者は、エラー処理の誤りやエラー処理の忘れが、分散システムの致命的な障害につながる可能性があることを発見しました。 エラー処理の誤りは、さまざまな種類のセキュリティ脆弱性につながる可能性があります。

  • 情報漏洩:機微情報をエラーメッセージに出力することは、意図せずに攻撃者を助ける可能性があります。例えば、スタックトレースやその他の内部エラーの詳細を返すエラーによって、攻撃者はシステムの環境に関する情報を得ることができます。さまざまなエラー条件(例えば、認証エラーで「無効なユーザ」または「無効なパスワード」を返すなど)を処理する際のわずかな違いでも、攻撃者に貴重な手がかりを与えます。上記のとおり、フォレンジックやデバッグの目的でエラーの詳細を記録してください。ただし、この情報を特に外部のクライアントには公開しないでください。
  • TLSバイパス:アップルの「goto fail bug」は、アップルシステム上のTLS接続の侵害につながるエラー処理コードの制御フローエラーです。
  • DOS: 基本的なエラー処理の欠如は、システムのシャットダウンにつながる可能性があります。これは、攻撃者が容易に悪用可能な脆弱性です。他のエラー処理の問題として、システムを劣化させるような方法でCPUまたはディスクの使用量を増加させる可能性があります。

ポジティブな助言

  • コード内のtry / catchブロックの重複を避けるため、例外処理を中央集約管理します。すべての予期しない動作がアプリケーション内部で正しく処理されていることを確認してください。
  • ユーザに表示されるエラーメッセージが重要なデータを漏らさず、かつユーザの適切な対応を促すには十分であることを確認してください。
  • サポート、QA、フォレンジック、またはインシデント対応チームが問題を理解するのに十分な情報を提供できるように、例外が記録されていることを確認してください。
  • エラー処理コードを慎重にテストし、検証してください。

参考資料

ツール

  • Error Prone - Googleの静的解析ツールで、Java開発者のエラー処理におけるよくある間違いを捕捉します。
  • 実行時にエラーを検出するための最も有名な自動ツールの1つがNetflixのChaos Monkeyです。これは、システムインスタンスを意図的に無効にして、サービス全体が正しく復元することを保証します。