LDAPインジェクション(CWE-90)の仕組みと対策。検索フィルタとDNでエスケープ規則が違う点まで整理する
LDAPインジェクション(CWE-90)を発生原理から対策まで整理します。利用者名に渡された*や括弧が検索フィルタの意味を変えて認証をすり抜ける仕組み、RFC 4515とRFC 4514でエスケープ規則が異なる理由、検索してからバインドする2段構えや最小権限のバインドアカウントまで開発者向けに解説します。
脆弱性を作り込まないための設計・実装プラクティスを、OWASPなどを参照しながら開発者向けに解説します。
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)を、発生原理から対策まで開発者目線で整理します。並行リクエストで残高が二重に引き出される、クーポンが多重適用される、ファイル検査の隙にシンボリックリンクが差し替わるといった不整合が、なぜ検査と使用の間で起きるのか。データベースの原子性や冪等性キー、安全なファイル操作で塞ぐ方法を解説します。
バッファオーバーフローの仕組みと対策を、境界を越えた書き込みがメモリを壊す原理から整理します。スタックとヒープの違い、戻りアドレスの上書きが制御を奪う経路、境界チェックやメモリ安全な言語まで、開発者向けに解説します。
キャッシュキーに含まれないunkeyed inputが応答に反映されると、汚染した応答がキャッシュに載り後続の正規利用者へ配信されます。キャッシュキー、cache buster、レスポンス反映をたどってWebキャッシュポイズニングの機構と、キャッシュ設計を軸にした防御を開発者向けに整理します。
利用者入力を検証せずにリダイレクト先へ使うことで生じるオープンリダイレクト(CWE-601)を、サーバ側とクライアント側それぞれの機構から解説します。フィッシングやOAuthの認可コード窃取に悪用される理由と、許可リストによる正しい防御設計を開発者向けに整理します。
プロキシとバックエンドがHTTPリクエストの境界を別々に解釈することで起きるリクエストスマグリングを、Content-LengthとTransfer-Encodingの矛盾、CL.TEやHTTP/2ダウングレードdesyncの機構、そして防御設計まで開発者向けに整理します。
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のインジェクション分類での位置づけ、そしてシェルを介さず引数を配列で渡す根本対策までを開発者向けに整理します。入力検証が補助にとどまる理由も扱います。
IDOR(BOLA)は、識別子で受け取った資源を要求元がアクセスしてよいか確かめずに直接参照することで成立します。OWASP A01 Broken Access Controlとの関係、サーバー側でのオブジェクト単位の認可、既定は拒否、推測困難なIDは認可の代替にならない点まで、Web/API開発者向けに整理します。
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レスポンスヘッダの役割と設定を、開発者向けに整理します。
コンテナ(Docker)が何を仮想化しVMとどう違うか、ホストのカーネルを共有するため隔離が完全でない理由を原理から解説します。NIST SP 800-190の構成要素別リスクに沿って、最小イメージや非root実行、権限の絞り込みなど実務で効く対策を整理します。
Webアプリでパスワードを安全に保存する仕組みを、平文保存や単純ハッシュの危険から順に整理します。ソルトがレインボーテーブルを無効化する理屈、ストレッチングの意味、Argon2idなど現行で推奨されるアルゴリズム、ペッパーの位置づけを、OWASPとNISTの一次情報で確認しながら説明します。
認証(本人確認)と認可(権限付与)は似た言葉ですが役割は別物です。両者の違い、混同が招くアクセス制御の不備、IDトークンとアクセストークンの使い分け、OAuth2.0とOpenIDConnectの関係までを入門者向けに具体例で整理します。
セキュリティを基礎から体系的に学びたい人に向けて、定番として評価の高い書籍を用途別に厳選して紹介します。Web脆弱性・暗号・ネットワーク・手を動かす実践まで、何をどの順で読むべきかも解説します。
Webアプリケーションの代表的なセキュリティリスクをまとめたOWASP Top 10について、その位置づけ、各カテゴリで何が問題になりどう防ぐか、そして開発プロセスへの組み込み方までを、開発者目線で具体例つきに解説します。
セキュリティをオンラインで学びたい人へ。IPAやJPCERT/CCの無料教材、TryHackMe・Hack The Boxなどの実践プラットフォーム、補強用の書籍を、用途とレベル別に整理して紹介します。
情報処理安全確保支援士(登録セキスペ)やCISSPなど、実在する主要なセキュリティ資格を整理し、対策書の定番を目的別に厳選して紹介します。試験制度の変更点や費用、自分に合う1冊の選び方まで解説します。
Web APIで起きやすい認証認可の不備、リソース枯渇、入力検証の漏れを、原理と再現条件から解説します。OWASP API Security Top 10(2023)を軸に、開発者がリクエストごとに何を検証すべきかを実務目線で整理します。
APIキーやDB認証情報などのシークレットを、ハードコード回避・集中管理・ローテーション・最小権限という4つの軸で守る方法を、Vaultやクラウドのマネージドサービス、動的シークレットまで実務目線で解説します。
セキュリティを開発の最後の検査にせず、CI/CDに自動チェックとして組み込む考え方を解説します。SAST・DAST・SCA・シークレットスキャンの役割の違いと、シフトレフトを現場で回す導入順序・判断基準を具体的にまとめます。
自作コードより外部ライブラリのほうが多い時代に、何を使っているかを台帳化するSBOMと、既知の脆弱性を突き合わせるSCAの基本を解説。SPDX/CycloneDXの違い、Dependabot/Renovateによる更新自動化、CI組み込みの判断基準まで実務目線でまとめます。
セキュアコーディングの土台である入力バリデーションと出力エスケープを、それぞれの役割の違いから整理します。入口の検証は防御の一段目、出口の文脈別エスケープがXSSやインジェクションの根本対策である理由を、原理と実務の判断基準まで掘り下げます。