セキュアコーティング・コードレビュー・セキュリティアーキテクチャ

セキュアコーティング

セキュアコーティングとは

  • 攻撃者の攻撃に耐えられる、プログラムを書くこと
  • アプリケーション自体の防御力を上げる直接的な方法
  • ソフトウェアの脆弱性の多くはコーティングエラーがが原因で作り込まれる

脆弱性有無の確認

  • すべてのインタプリタが信用できないデータをコマンドやクエリから区別してるか
    • 動的なクエリは避ける

インジェクションの防止方法

  • 動的なクエリ作成を避ける
  • パラメータ化するか

クエリのパラーメタ化

  • 構文とパラメータを分けて送信する
  • Javaで言うとPreparedStatement
  • SQLが制御とデータを区別しないのはまずい

コードレビュー

コードレビューとは

  • アプリケーションが安全にインタプリタを使用してるどうかを確認する方法
  • アップリケーションのインタプリタの部分を検出し検証する

    特徴

  • 目検のレビューには限界がある
    • ツールを使いましょう
  • ホワイトボックス制御

検出できる脆弱性

  • バッファオーバフロー
  • フォーマットストリング
  • 整数オーバフロー
  • SQLi
  • XSS

検出できない脆弱性

機能仕様は検出できない
* 認可制御 * アクセス制御

脆弱性検査

  • インジェクション欠陥の存在を明らかにする

    特徴

  • OWASP ZAP

セキュリティアーキテクチャ

実装・テストだけで十分?

  • フレームワークやライブラリを使おう
  • 開発初期段階からセキュリティを設計に組み込む
  • 標準的なセキュリティ制御セットで開発を簡単化する。

その他

セキュリティ要件定義

何をすべきか、どれくらいかかるのかを明確にする * どのような対応が対応 * アジャイルだと機能要求だけ考えたい

アプリケーションセキュリティ要件

  • 各アプリケーションにおいてセキュアを定義しなければいけない
    • ASVSを推奨

ASVS

  • アプリケーションのセキュリティ要件またはセキュリティテストの項目
  • セキュアなアプリの定義

WEB/システム/アプr家=ションセキュリティ要件書

安全なweb/アプリケーションの開発に必要なセキュリティ要件書

非機能要求としてのセキュリティ

システムの機能では無くシステムが持つべき特性(非機能要求) * 可用性 * 性能・拡張性 * 運用・保守性 * 移行性 * セキュリティ * システム環境・エコロジー

セキュリティ検討項目

  • 前提や制作
  • セキュリティリスク分析
  • セキュリティ診断
  • セキュリティリスク管理
  • アクセス・利用制限
  • データの秘匿
  • 不正追跡・監視
  • ネットワーク対策
  • マルウェア対策
  • WEB対策

非機能要求全体の中でトレードオフ含めて検討して何をどれだけ守るのか明確にしてセキュリティリスクを検討する

まとめ

必要なのはセキュリティ・セキュアな * スキル * アーキテクチャ * 要件定義が必要