ファイナンス、情報通信技術のスキル・アグリゲーション・サイト

' . iseeit.jp 情報通信技術 . '
 

情報セキュリティ・キーワード 2025 ④ システム・アプリケーションセキュリティ

SQLインジェクションやXSSなどのWebアプリケーションの脆弱性の種類と対策、セキュアプログラミングの原則、そして開発ライフサイクルにおけるセキュリティ組み込みに関わるキーワードを取り上げます。

4.1 セキュアプログラミングの基礎

セキュアプログラミング (Secure Programming)
ソフトウェア開発の設計・実装段階からセキュリティを考慮し、脆弱性を作り込まないようにする開発手法や考え方。

入力値検証 (Input Validation)
ユーザーからの入力データが、システムで想定される形式や範囲に合致しているかを確認すること。不正な入力による脆弱性(SQLインジェクション、XSSなど)を防ぐ基本的な対策。

出力エンコーディング (Output Encoding)
動的に生成されたデータをWebページに出力する際に、特殊文字などを適切な形式(エンティティ参照など)に変換すること。XSSなどの脆弱性を防ぐ。

セキュアコーディング規約 (Secure Coding Guidelines)
脆弱性を作り込まないための、コーディング時のルールやガイドライン。

OWASP (Open Web Application Security Project)
Webアプリケーションセキュリティに関するオープンなコミュニティ。Webアプリケーションの主要な脆弱性をまとめた「OWASP Top 10」などが有名。

4.2 Webアプリケーションの脆弱性

SQLインジェクション (SQL Injection)
ユーザーからの入力値に不正なSQL文を挿入し、データベースを不正に操作する攻撃手法。機密情報の窃取、データの改ざん・削除などが可能になる。

XSS (Cross-Site Scripting: クロスサイトスクリプティング)
Webアプリケーションの脆弱性を悪用し、悪意のあるスクリプトをWebページに埋め込み、それを閲覧したユーザーのブラウザ上で実行させる攻撃手法。セッションハイジャック、Cookieの窃取などが可能。

CSRF (Cross-Site Request Forgery: クロスサイトリクエストフォージェリ)
ユーザーが意図しないリクエストを強制的に実行させる攻撃手法。ログイン済みユーザーの認証情報(Cookieなど)を悪用し、不正な送金や情報の削除などを行う。

ディレクトリトラバーサル (Directory Traversal)
不適切な入力値検証を利用して、Webサーバーのファイルシステム上の任意のファイルやディレクトリにアクセスする攻撃手法。

OSコマンドインジェクション (OS Command Injection)
ユーザーからの入力値にOSコマンドを挿入し、サーバー上で任意のコマンドを実行させる攻撃手法。

認証の不備 (Broken Authentication)
認証機能(パスワード、セッション管理など)の設計や実装に不備があり、攻撃者がユーザーアカウントを乗っ取ったり、認証を回避したりできる脆弱性。

アクセス制御の不備 (Broken Access Control)
ユーザーが本来アクセス権限を持たない情報や機能にアクセスできてしまう脆弱性。

情報漏洩 (Information Leakage)
エラーメッセージやデバッグ情報、不要なファイルなどから、システムの内部構造や機密情報が外部に漏洩してしまう脆弱性。

XXE (XML External Entities)
XMLパーサーの処理に関する脆弱性。外部エンティティを悪用し、ローカルファイルの読み取りやDDoS攻撃などが可能になる。

SSRF (Server-Side Request Forgery)
攻撃者がサーバーサイドから任意のURLへリクエストを強制的に送信させる脆弱性。内部ネットワークのスキャンや、外部サービスへの攻撃の踏み台に利用される。

インセキュアなデシリアライゼーション (Insecure Deserialization)
不正なシリアライズされたデータがアプリケーションに渡され、そのデシリアライズ処理中に悪意のあるコードが実行されてしまう脆弱性。

4.3 データベースセキュリティ

データベース暗号化 (Database Encryption)
データベースに保存されるデータを暗号化し、情報漏洩時の被害を最小限に抑える対策。透過的データ暗号化 (TDE) などがある。

データベース監査 (Database Auditing)
データベースに対する操作(アクセス、更新、削除など)のログを記録し、不正行為の検知や追跡に利用する機能。

データマスキング / 匿名化 (Data Masking / Anonymization)
個人情報や機密性の高いデータを、開発やテスト環境などで利用する際に、識別できない形に変換すること。

データベース脆弱性スキャン (Database Vulnerability Scan)
データベースの脆弱性(設定ミス、パッチ未適用など)を自動的に検査するツールやプロセス。

4.4 ソフトウェア開発ライフサイクル (SDLC) におけるセキュリティ

セキュアSDLC (Secure Software Development Life Cycle)
ソフトウェア開発の各フェーズ(要件定義、設計、実装、テスト、運用)において、セキュリティ活動を組み込むこと。

要件定義 (Requirements Definition)
セキュリティ要件(機密性、完全性、可用性など)を明確に定義するフェーズ。

設計 (Design)
セキュリティ要件を満たすためのアーキテクチャ設計、脅威モデリング、セキュアな設計原則の適用などを行うフェーズ。

脅威モデリング (Threat Modeling)
システムの脅威を識別し、その影響を評価し、適切な対策を講じるための体系的なアプローチ。設計段階で実施されることが多い。

実装 (Implementation)
セキュアコーディング規約に従ってプログラムを実装するフェーズ。

テスト (Testing)
脆弱性スキャン、ペネトレーションテスト、コードレビューなどにより、実装されたソフトウェアのセキュリティ脆弱性を検証するフェーズ。

運用 (Operation)
リリース後のシステム監視、パッチ適用、脆弱性管理、インシデント対応などを行うフェーズ。

DevSecOps
開発 (Development)、セキュリティ (Security)、運用 (Operations) を統合し、ソフトウェア開発から運用までのライフサイクル全体にわたってセキュリティを組み込むアプローチ。

4.5 脆弱性スキャンとペネトレーションテスト

脆弱性スキャナー (Vulnerability Scanner)
システムやネットワーク、Webアプリケーションに既知の脆弱性がないかを自動的に診断するツール。

ペネトレーションテスト (Penetration Testing / 侵入テスト)
専門家(ペネトレーションテスター)が攻撃者の視点に立ち、実際にシステムへの侵入を試みることで、現実的な脆弱性やセキュリティ上の弱点を洗い出すテスト。

静的解析 (Static Application Security Testing: SAST)
プログラムのソースコードやバイナリコードを実行せずに分析し、脆弱性やセキュリティ上の問題点を検出する手法。

動的解析 (Dynamic Application Security Testing: DAST)
実行中のWebアプリケーションに対して外部から攻撃を模倣したリクエストを送信し、その応答を分析することで脆弱性を検出する手法。

コードレビュー (Code Review)
複数人でソースコードを読み合わせ、脆弱性やバグ、品質の問題点などを発見するプロセス。