LDAPインジェクション(CWE-90)の仕組みと対策。検索フィルタとDNでエスケープ規則が違う点まで整理する
LDAPインジェクション(CWE-90)を発生原理から対策まで整理します。利用者名に渡された*や括弧が検索フィルタの意味を変えて認証をすり抜ける仕組み、RFC 4515とRFC 4514でエスケープ規則が異なる理由、検索してからバインドする2段構えや最小権限のバインドアカウントまで開発者向けに解説します。
LDAPインジェクション(CWE-90)を発生原理から対策まで整理します。利用者名に渡された*や括弧が検索フィルタの意味を変えて認証をすり抜ける仕組み、RFC 4515とRFC 4514でエスケープ規則が異なる理由、検索してからバインドする2段構えや最小権限のバインドアカウントまで開発者向けに解説します。
NoSQLインジェクション(CWE-943相当)を発生原理から対策まで整理します。信頼できない入力がクエリのオブジェクト構造や演算子として解釈され、認証回避やデータ抽出に至る仕組みと、型検証や演算子の拒否、安全なクエリAPI、$whereの不使用、最小権限による根本対策を開発者向けに解説します。
マスアサインメント(CWE-915)は、リクエストのパラメータをフレームワークがオブジェクトの属性へ自動で束縛する際、公開すべきでない属性まで書き換えられてしまう欠陥です。roleやis_adminの上書きによる権限昇格の機構、OWASP API Securityでの位置づけ、許可リストと入力専用DTOによる対策を、Web/API開発者向けに整理します。
プロトタイプ汚染(CWE-1321)を発生原理から対策まで開発者目線で整理します。信頼できない入力を安全でない再帰マージやプロパティ設定で扱うと、__proto__やconstructorを通じて共有されるObject.prototypeが汚染され、ほぼ全てのオブジェクトに影響します。Object.create(null)やMapの利用、危険キーの拒否で塞ぐ方法を解説します。
レースコンディション(CWE-362)とTOCTOU(CWE-367)を、発生原理から対策まで開発者目線で整理します。並行リクエストで残高が二重に引き出される、クーポンが多重適用される、ファイル検査の隙にシンボリックリンクが差し替わるといった不整合が、なぜ検査と使用の間で起きるのか。データベースの原子性や冪等性キー、安全なファイル操作で塞ぐ方法を解説します。
バッファオーバーフローの仕組みと対策を、境界を越えた書き込みがメモリを壊す原理から整理します。スタックとヒープの違い、戻りアドレスの上書きが制御を奪う経路、境界チェックやメモリ安全な言語まで、開発者向けに解説します。
WebアプリのセッションIDを安全に扱う設計を、生成のエントロピー、HttpOnlyやSecureなどのCookie属性、ログイン時の再生成、寿命管理まで、なぜその設定が効くのかという機構から実務目線で整理します。
セキュリティを後付けの検査ではなく設計に組み込むための脅威モデリングを、STRIDEを軸に解説します。データフロー図と信頼境界の描き方から、6分類での脅威の洗い出し、対策の紐付けと優先度付けまでを開発チーム向けに整理します。
ユーザー入力がデータではなくテンプレートそのものとして評価されると、多くのエンジンでリモートコード実行にまで至ります。SSTIの発生機構と、値として渡す実装やロジックレス化などの対策を開発者向けに整理します。
透明なiframeで標的サイトを重ねて意図しない操作をさせるクリックジャッキング(UIリドレッシング)の仕組みと、CSP frame-ancestorsやX-Frame-Optionsを使った実装レベルの対策を、開発者向けに整理します。
ファイルアップロード機能の脆弱性(CWE-434)を、Webシェルによるリモートコード実行や保存型XSSといった悪用の機構から整理します。拡張子の許可リストに内容の実体検証を重ね、Content-Typeとファイル名を信用せず、公開ディレクトリの外へ保存してスクリプト実行を無効化する、という検証と保存の設計をWebアプリ開発者向けに解説します。
APIキーや秘密鍵をgitに紛れ込ませる事故を、26のアンチパターンで集めた教育リポジトリleak-museum(printemps-tokyo公開)を題材に整理します。なぜ致命的になるのか、どう防ぐのか、万一コミットしたときの手順までを、秘密情報を安全に扱う視点でまとめます。
安全でないデシリアライゼーション(CWE-502)を、発生原理から対策まで開発者目線で整理します。オブジェクトの復元がなぜ任意コード実行やDoSにつながるのか、ガジェットチェーンの考え方、OWASP Top 10での位置づけの変遷、そしてネイティブ形式を避けJSONを使う根本対策と言語別の危険APIの避け方を解説します。
ブラウザの同一オリジンポリシーを前提に、CORS(オリジン間リソース共有)が何をどう緩める仕組みなのかを整理します。プリフライトや資格情報付きリクエストの扱い、Access-Control-Allow-Originのワイルドカードやオリジン反射といった典型的な設定ミス、許可リストで厳密に照合する安全な設計を開発者向けに解説します。
XMLパーサが外部実体を解決してしまうXXE(XML外部実体参照、CWE-611)を、なぜ成立するのかという機構から、ローカルファイル読み出しやSSRF、実体展開によるDoSといった影響、DTDと外部実体の解決を無効化する根本対策までWebアプリ開発者向けに整理します。
OSコマンドインジェクション(CWE-78)が外部入力をシェルコマンドとして解釈させて成立する機構、OWASPのインジェクション分類での位置づけ、そしてシェルを介さず引数を配列で渡す根本対策までを開発者向けに整理します。入力検証が補助にとどまる理由も扱います。
SNSログインや「〜で続ける」の裏側にあるOAuth 2.0とOpenID Connectを一次仕様から整理します。OAuthは認可、OIDCはその上に載る認証という役割の違い、登場人物、認可コードフローとPKCE、アクセストークンとリフレッシュトークンとIDトークンの違い、Implicitフローが非推奨になった理由と典型的な落とし穴まで、開発者と実務者向けに解説します。
ユーザー入力がファイルパスに連結され「../」で基準ディレクトリの外へ到達されるパストラバーサル(CWE-22)を、なぜ成立するのかという機構から、任意ファイル読取などの想定影響、正規化と許可リストによる根本対策までWebアプリ開発者向けに体系的に整理します。
JWT(JSON Web Token)の構造と署名の役割を基礎から整理します。header.payload.signatureの3パート、HS256とRS256の違い、alg:noneやアルゴリズム混同といった検証まわりの落とし穴、有効期限と失効の設計、保存場所によるXSS/CSRFの注意点まで、一次仕様に沿って実装者向けに解説します。
CSPを中心に、HSTSやX-Content-Type-Options、クリックジャッキング対策、Referrer-PolicyといったセキュリティHTTPレスポンスヘッダの役割と設定を、開発者向けに整理します。
Webアプリでパスワードを安全に保存する仕組みを、平文保存や単純ハッシュの危険から順に整理します。ソルトがレインボーテーブルを無効化する理屈、ストレッチングの意味、Argon2idなど現行で推奨されるアルゴリズム、ペッパーの位置づけを、OWASPとNISTの一次情報で確認しながら説明します。
セキュリティを基礎から体系的に学びたい人に向けて、定番として評価の高い書籍を用途別に厳選して紹介します。Web脆弱性・暗号・ネットワーク・手を動かす実践まで、何をどの順で読むべきかも解説します。
代表的なWeb脆弱性であるSQLインジェクションを、なぜ起きるのかという原理から、攻撃手法の分類、想定される影響、根本対策であるプレースホルダの使い方、多層防御、検出方法までを実務目線で網羅的に解説します。
Webアプリケーションの代表的なセキュリティリスクをまとめたOWASP Top 10について、その位置づけ、各カテゴリで何が問題になりどう防ぐか、そして開発プロセスへの組み込み方までを、開発者目線で具体例つきに解説します。
APIキーやDB認証情報などのシークレットを、ハードコード回避・集中管理・ローテーション・最小権限という4つの軸で守る方法を、Vaultやクラウドのマネージドサービス、動的シークレットまで実務目線で解説します。
セキュリティを開発の最後の検査にせず、CI/CDに自動チェックとして組み込む考え方を解説します。SAST・DAST・SCA・シークレットスキャンの役割の違いと、シフトレフトを現場で回す導入順序・判断基準を具体的にまとめます。
セキュアコーディングの土台である入力バリデーションと出力エスケープを、それぞれの役割の違いから整理します。入口の検証は防御の一段目、出口の文脈別エスケープがXSSやインジェクションの根本対策である理由を、原理と実務の判断基準まで掘り下げます。