CyberFix Note

#セキュアコーディング の記事

セキュアコーディング

LDAPインジェクション(CWE-90)の仕組みと対策。検索フィルタとDNでエスケープ規則が違う点まで整理する

LDAPインジェクション(CWE-90)を発生原理から対策まで整理します。利用者名に渡された*や括弧が検索フィルタの意味を変えて認証をすり抜ける仕組み、RFC 4515とRFC 4514でエスケープ規則が異なる理由、検索してからバインドする2段構えや最小権限のバインドアカウントまで開発者向けに解説します。

セキュアコーディング

NoSQLインジェクションの仕組みと対策。クエリ演算子の注入で認証回避やデータ抽出に至る欠陥を塞ぐ

NoSQLインジェクション(CWE-943相当)を発生原理から対策まで整理します。信頼できない入力がクエリのオブジェクト構造や演算子として解釈され、認証回避やデータ抽出に至る仕組みと、型検証や演算子の拒否、安全なクエリAPI、$whereの不使用、最小権限による根本対策を開発者向けに解説します。

セキュアコーディング

マスアサインメント(Mass Assignment)の仕組みと対策、自動バインドの副作用を許可リストで塞ぐ

マスアサインメント(CWE-915)は、リクエストのパラメータをフレームワークがオブジェクトの属性へ自動で束縛する際、公開すべきでない属性まで書き換えられてしまう欠陥です。roleやis_adminの上書きによる権限昇格の機構、OWASP API Securityでの位置づけ、許可リストと入力専用DTOによる対策を、Web/API開発者向けに整理します。

セキュアコーディング

プロトタイプ汚染(Prototype Pollution)の仕組みと対策。継承を断ちObject.prototypeを守る

プロトタイプ汚染(CWE-1321)を発生原理から対策まで開発者目線で整理します。信頼できない入力を安全でない再帰マージやプロパティ設定で扱うと、__proto__やconstructorを通じて共有されるObject.prototypeが汚染され、ほぼ全てのオブジェクトに影響します。Object.create(null)やMapの利用、危険キーの拒否で塞ぐ方法を解説します。

セキュアコーディング

レースコンディション(競合状態)の仕組みと対策。チェックと使用の隙を原子性で塞ぐ

レースコンディション(CWE-362)とTOCTOU(CWE-367)を、発生原理から対策まで開発者目線で整理します。並行リクエストで残高が二重に引き出される、クーポンが多重適用される、ファイル検査の隙にシンボリックリンクが差し替わるといった不整合が、なぜ検査と使用の間で起きるのか。データベースの原子性や冪等性キー、安全なファイル操作で塞ぐ方法を解説します。

セキュアコーディング

ファイルアップロード機能の脆弱性と対策。Webシェルを置かせないための検証と保存の設計

ファイルアップロード機能の脆弱性(CWE-434)を、Webシェルによるリモートコード実行や保存型XSSといった悪用の機構から整理します。拡張子の許可リストに内容の実体検証を重ね、Content-Typeとファイル名を信用せず、公開ディレクトリの外へ保存してスクリプト実行を無効化する、という検証と保存の設計をWebアプリ開発者向けに解説します。

セキュアコーディング

安全でないデシリアライゼーションの対策。信頼できないデータの復元が任意コード実行につながる仕組み

安全でないデシリアライゼーション(CWE-502)を、発生原理から対策まで開発者目線で整理します。オブジェクトの復元がなぜ任意コード実行やDoSにつながるのか、ガジェットチェーンの考え方、OWASP Top 10での位置づけの変遷、そしてネイティブ形式を避けJSONを使う根本対策と言語別の危険APIの避け方を解説します。

セキュアコーディング

CORSの仕組みと設定ミスを避ける勘所。オリジン間リソース共有を安全に緩める

ブラウザの同一オリジンポリシーを前提に、CORS(オリジン間リソース共有)が何をどう緩める仕組みなのかを整理します。プリフライトや資格情報付きリクエストの扱い、Access-Control-Allow-Originのワイルドカードやオリジン反射といった典型的な設定ミス、許可リストで厳密に照合する安全な設計を開発者向けに解説します。

セキュアコーディング

XXEとは何か。XML外部実体参照で起きる情報漏えいの仕組みとDTD無効化による根本対策

XMLパーサが外部実体を解決してしまうXXE(XML外部実体参照、CWE-611)を、なぜ成立するのかという機構から、ローカルファイル読み出しやSSRF、実体展開によるDoSといった影響、DTDと外部実体の解決を無効化する根本対策までWebアプリ開発者向けに整理します。

セキュアコーディング

OSコマンドインジェクションの仕組みと根本対策。シェルに渡さず引数を分離する

OSコマンドインジェクション(CWE-78)が外部入力をシェルコマンドとして解釈させて成立する機構、OWASPのインジェクション分類での位置づけ、そしてシェルを介さず引数を配列で渡す根本対策までを開発者向けに整理します。入力検証が補助にとどまる理由も扱います。

セキュアコーディング

OAuth 2.0とOpenID Connectの基礎。認可と認証の違いを仕組みから整理する

SNSログインや「〜で続ける」の裏側にあるOAuth 2.0とOpenID Connectを一次仕様から整理します。OAuthは認可、OIDCはその上に載る認証という役割の違い、登場人物、認可コードフローとPKCE、アクセストークンとリフレッシュトークンとIDトークンの違い、Implicitフローが非推奨になった理由と典型的な落とし穴まで、開発者と実務者向けに解説します。

セキュアコーディング

パストラバーサルとは何か。基準ディレクトリの外へ解決されるパスの脆弱性と根本対策を解説

ユーザー入力がファイルパスに連結され「../」で基準ディレクトリの外へ到達されるパストラバーサル(CWE-22)を、なぜ成立するのかという機構から、任意ファイル読取などの想定影響、正規化と許可リストによる根本対策までWebアプリ開発者向けに体系的に整理します。

セキュアコーディング

JWTの仕組みと実装の落とし穴。署名検証とアルゴリズム混同を基礎から

JWT(JSON Web Token)の構造と署名の役割を基礎から整理します。header.payload.signatureの3パート、HS256とRS256の違い、alg:noneやアルゴリズム混同といった検証まわりの落とし穴、有効期限と失効の設計、保存場所によるXSS/CSRFの注意点まで、一次仕様に沿って実装者向けに解説します。

セキュアコーディング

パスワードはどう保存すべきか。ハッシュ化とソルトとストレッチングの基礎

Webアプリでパスワードを安全に保存する仕組みを、平文保存や単純ハッシュの危険から順に整理します。ソルトがレインボーテーブルを無効化する理屈、ストレッチングの意味、Argon2idなど現行で推奨されるアルゴリズム、ペッパーの位置づけを、OWASPとNISTの一次情報で確認しながら説明します。

セキュアコーディング

入力バリデーションと出力エスケープの原則。入口で検証し、出口で文脈別にエスケープする

セキュアコーディングの土台である入力バリデーションと出力エスケープを、それぞれの役割の違いから整理します。入口の検証は防御の一段目、出口の文脈別エスケープがXSSやインジェクションの根本対策である理由を、原理と実務の判断基準まで掘り下げます。