Programming
NHKのスマホセキュリティ対策と今のWebアプリセキュリティ対策は基本構造が同じ
NHKが紹介したスマホのセキュリティ対策には問題があると指摘がある、と少し話題になっていました。 ブログで指摘されているNHKが紹介した対策ページの問題点の概要は以下の通りです。 Androidの設定から「提供元不明のアプリ」のチェックボックスをオンにしてはならない、必ずオフにする、の説明が無かった。 セキュリティベンダー広報担当者の説明を長々と回りく引用し…
何故こうなった?プログラムの動作原理を無視したセキュリティ対策
正しく動作するプログラムには 正しい/妥当なデータ 正しいコード の両方が必要です。 仕様から間違っている場合を除けば、セキュリティ問題はプログラムの誤作動によって起こります。データかコード、どちらかの問題によって発生します。 当たり前の常識ですが、これを無視したセキュリティ対策がまかり通っている、それが現在の状況です。何故こうなってしまったのでしょう? 参…
PHPのserialize()/unserialize()を安全に利用する方法
serialize()でシリアライズしたデータを外部に送信/保存1し、それをunserialize()すると危険です。 アンシリアライズは複雑なメモリ操作が必要で、PHPに限らず、何度もメモリ破壊攻撃の脆弱性が見つかっています。このため、外部入力データのアンシリアライズは行うべきではありません。現在のPHPプロジェクトでは、RubyやPythonと同じく、ア…
PHPセッションとSameSiteサポート – CSRF, XSS対策
PHPのセッションID用クッキーと他のクッキー関数にSameSiteサポートが追加されます。 https://wiki.php.net/rfc/same-site-cookie これによりクロスサイト・リクエスト・フォージェリ攻撃(CSRFやXSS)などを緩和できます。 (さらに…)
APIを過信するとおかしな事になる例 – SAML認証成り済まし
今年の2月にSAMLライブラリの脆弱性が報告されていたことを覚えている人も居ると思います。 この脆弱性はXMLコメント(<!-- -->)の取り扱いの違いによって、本来のユーザーではない攻撃者を認証してしまう事が問題であったとしています。 攻撃用の文字列サンプルは以下のような物です。 <NameID>user@example.com&…
とあるネットワーク技術者の防御法
今回は「とあるネットワーク技術者がいかにしてネットワークシステムのセキュリティを守っているのか?」という話です。 「え?!」と思うハズですが、最後までお読みください。 (さらに…)
忘れられた入力処理と出力処理の責任
入力処理と出力処理はプログラムの基本処理です。当たり前の処理ですが、Webアプリケーションでは基本的な事が知られているようで知られてないと思います。 入力処理と出力処理の両方ともがデータに対する責任を持っています。データに対する責任といっても、その責任は異なります。このエントリはプログラムの基本機能、入力処理/ロジック処理/出力処理が持っている責任を紹介しま…
入力バリデーションで許可した文字で発生するリスク
入力バリデーションでほぼ全てのインジェクションリスクを回避/防止できるケースは以前書いたブログで紹介しています。 今回は趣向を変えて、入力バリデーションで許可してしまった文字で発生するリスクをざっと紹介します。 ※ ここで紹介する考え方は脆弱なブラックリスト型です。より安全な方法はホワイトリスト型の考え方です。参考: ほぼ全てのインジェクション攻撃を無効化/…