脆弱性の種類と事例 - セキュリティ
最終更新日: 2026-08-02
TOP(About this memo)) > 一覧(セキュリティ) > 脆弱性の種類と事例
代表的な脆弱性の種類
- SQLインジェクション
- OSコマンドインジェクション
- XSS(クロスサイトスクリプティング)
- CMSやアップロード機能の脆弱性を利用して、配信されるスクリプトを改ざんされるケースがある。
- CSRF(クロスサイトリクエストフォージェリ)
- ステートレスな通信(cookieによるセッション管理を使わない構成)であれば影響を受けにくい。
- アップロード機能の脆弱性
- 管理画面のID/PW漏洩
- DoS攻撃
- フィッシング(ID・パスワードの窃取)
フォームのスパムボット対策(honeypotフィールド)
- フォームに、通常のユーザーには見えない(CSSで画面外に配置する等)ダミーの入力フィールドを仕込んでおく手法。人間はそのフィールドの存在に気づかず空欄のまま送信するのに対し、多くの自動化されたボットはフォームの全フィールドを機械的に埋めて送信するため、そのフィールドに値が入っていた場合はボットによる送信とみなして弾く。
- CAPTCHAのようにユーザーに追加の操作を要求しないため、UXを損なわずに導入できる利点がある。
- 実装上の注意点
display: none や visibility: hidden ではなく、position: absolute で画面外へ配置するなどの方法が推奨されることがある。一部のボットはCSSで非表示にされたフィールドを検知してスキップする場合があるため(?)。
- フィールド名は
email や website など、ボットが好んで埋めそうな一般的な名前にしておくと検知率が上がる(IMO)。
- スクリーンリーダー等の支援技術に読み上げられて実際のユーザーが誤って入力してしまわないよう、
aria-hidden="true" や tabindex="-1"、autocomplete="off" も併せて設定しておくのが望ましい。
- あくまで簡易的なボット対策であり、標的型で作り込まれたボットには通用しない点に留意する。より強固な対策が必要な場合はCAPTCHAやレート制限などと併用する。
(参考) クレジットカード情報窃取インシデントの例
実際に報道された国内ECサイトでの被害事例をもとにした、手口の傾向の整理。
- 事例1: サイトの外部JSファイルが改ざんされ、入力されたクレジットカード情報を攻撃者のサーバーへ直接送信するよう仕込まれていた。
- 事例2: 画像アップロード機能を悪用してPHPファイルをアップロード → そのPHPファイル経由でJSファイルを改ざん → 改ざんされたJSがクレジットカード情報をPHPファイルへ送信 → PHPファイルから攻撃者のサーバーへ送信、という多段の手口だった。
- JSファイル(例: 外部の圧縮済みライブラリファイルなど)がどう改ざんされたかの推測
- アップロード機能の脆弱性: PHPで任意コマンドを実行できるファイルをアップロードし、そのファイル経由である程度の操作ができた可能性(権限次第ではJSファイルへの追記も可能と考えられる)。
- CMSの脆弱性: CMS側の脆弱性を突いて対象のJSファイルが直接編集された可能性。
- (参考)