バリデーションコードを書いていると文字にマッチするパターンは結構多いです。簡単なベンチマークコードで性能を比較してみました。
カテゴリー: Computer
-
出力対策”のみ”のセキュリティはアンチプラクティス
-
まだ誰も知らない脆弱性/攻撃に備える方法
セキュリティを考えると全ての入力データはアプリケーションがバリデーションすべきで、長さ/形式は厳格にバリデーションすべきです。1
厳格なバリデーションは開発者が意識/把握していない各種インジェクション脆弱性にも対応できること、インジェクション攻撃が持たらす被害が致命的であることが、その理由です。
適切なバリデーションは最強のセキュリティ対策の1つ2です。強いデータ型は弱いバリデーションの一種ですが、それでもセキュリティ対策として高い評価を得ています。にも関わらず強いバリデーションである厳格なデータバリデーションはコンピューターサイエンティストのセキュリティ専門家3以外にはあまり評価されていないように感じます。
今回は低レベルのライブラリにもコードインジェクション脆弱性のリスクがあること、その対策としてバリデーションが如何に効果的であるか紹介します。
-
HKDF, HMACなどのハッシュ関数を使う場合に知っておくべきFS/PFS
PHPにHKDF関数、hash_hkdf()が追加されましたが、そのシグニチャは褒められるモノではありません。
https://blog.ohgaki.net/php-hash_hkdf-insane-function-signature
hash_hkdf()が脆弱なAPI仕様になってしまった主な原因は、開発者がハッシュ関数を利用して鍵を導出する場合に知っておくべきFS/PFSの概念を知らなかったことにあります。(秘密鍵のセキュリティ維持にSaltが必須であるとの理解が足りなかったことも原因)
FS/PFSはハッシュ関数を利用した安全な鍵導出に必須の知識です。簡単な概念なので直ぐに理解できると思います。
-
PostgreSQLを使うならZFS
PostgreSQLを使うならZFSで決まりです。数値で明らかです。ZFS以外を使うのは論外なくらいの性能差があります。
-
Fedora/LinuxでZFS on Linuxを使う
Fedora用に記載していますが、UbuntuやCentOSなど、他のLinuxでZFSを使う場合も基本は同じです。
(さらに…) -
第一のソフトウェアセキュリティ原則さえ普及しない最大の理由とは?
追記:書き直しました。新しい方をご覧ください。
セキュアコーディングの原則1は「入力バリデーション」です。セキュアコーディングの原則1はソフトウェアセキュリティの一丁目一番地と言えるセキュリティ対策です。
入力バリデーションを第一のセキュリティ対策としているガイドライン:
- CERT Top 10 Secure Coding Practices
- OWASP Secure Coding ‐ Quick Reference Guide
- CWE/SANS Top 25 Monster Mitigations
- IPA セキュアプログラミング講座(NEW 2017年~)
90年代初めからコンピューターサイエンティストのセキュリティ専門家は「入力バリデーション」を重要であるとしてきました。「入力バリデーション」は論理的にセキュアな構造のソフトウェアを作る為に欠かせない必須の要素だからです。防御的プログラミングから数えると四半世紀を越える月日が経っています。
-
ホワイトリスト派とブラックリスト派 〜 セキュアコーディングが行われない理由
セキュアコーディングの原則1は「信頼できない入力を全てバリデーションする」です。この原則は国際情報セキュリティ標準でも当たり前の要求事項となっています。しかし、残念ながら「信頼できない入力を全てバリデーションする」が正しく実装されているアプリケーションはほとんどありません。
独自の定義や自分勝手なセキュアコーディング解釈をしているケースが散見されます。ここでいう「セキュアコーディング」とはCERTのセキュアコーディング、ISO 27000が要求しているセキュアプログラミングを指します。
-
PHPとXML eXternal Entity(XXE)対策
2017年版OWASP TOP 10がリリースされました。新しくA4としてXXE、A10としてInsufficient Logging & Monitoringが入りました。今回はXXE対策を紹介ます。XXE対策は簡単です。
XXEは「リクエストのインジェクション」と考えると解りやすく、「リクエストのインジェクション」と理解すれば他の類似攻撃パターンにも応用できます。
自分で直接XMLモジュールのクラス/関数を使ってXML処理している場合は問題箇所は判り易いですが、ライブラリなどを使う場合は知らずにXXEに脆弱になりえます。外部XML文書を処理する場合、XML処理ライブラリは盲信するのではなく、XXEに脆弱でないか検証してから使わないとなりません。
-
PostgreSQL 10のICUコレーションとJIS X 4061
PostgreSQL Advent Calendar 9日目用のエントリです。
PostgreSQL 10のICUコレーション(照合順序)サポートの概要と基本的な使い方は以下のエントリに記載しています。ICUコレーションの使い方は以下を参照してください。
https://blog.ohgaki.net/postgresql-10-icu-locale-collation-enables-natural-japanese-sorting
今回は日本語ソート順のJIS規格である JIS X 4061-1996にどの程度対応しているのか確かめてみます。
-
実は守れていないローカルネットワーク
ファイアーウォールで守っている、プロキシも使っている、だからインターネットからローカルネットワークは守られている!
半分あたりですが、半分はずれです。よくあるネットワークシステムではローカルネットワークはインターネットから半分くらいしか守っていません。
まだ対策をしていない場合は実施することを強くお勧めします。
クロスサイト攻撃からローカルネットワークを守ることは簡単です。簡単なので会社、特にシステム開発/運用部門は必ずローカルネットワークへのクロスサイトアクセスを禁止&検出すべきです。クロスサイト攻撃とはクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)の事です。基本的な対策ですが、意外に実施されていることが少ないようです。
クロスサイト攻撃はWebシステムに対するよくある攻撃手法です。少しの手間でインターネットからローカルネットワークに対するクロスサイト攻撃を完全に防止することが可能です。
-
PostgreSQL 10のICUコレーションを使うと日本語を普通にソートでき、更に文字順序までカスタマイズできる
PostgreSQL 10からICU(International Components for Unicode)のロケール/コレーションがサポートされました。
これまでサポートされてきた、libcのja_JPロケールの貧弱な日本語ソート機能とは比べ物にならないくらい高機能な文字比較をサポートしています。日本語や他の言語での照合順序を柔軟に変更できます。
- マトモな日本語ソート順でソートする(かなり重要)
- 数字を後にソートする
- 大文字を先にソートする
- 仮名を先にソートする
- 自然ソートする
- これらをまとめて特別なソート順にする
といったことがPostgreSQL 10から行えます。
-
実は知られていない?リスク対策の原則?
ISO 31000(リスクマネジメント標準規格)はa)からk)まで、11のリスク管理の原則を定めています。
ITエンジニアであればISO 27000(情報セキュリティマネジメント標準規格)を一度は読んだことがあると思います。少なくとも名前くらいは知っていると思います。リスク管理の基礎/基本を理解していればISO 27000だけでも十分ですが、ちょっと自信がない、体系的には学んだ事がない方はISO 31000も参考にすると良いです。
情報セキュリティマネジメントはリスクマネジメントの一分野です。一般論としてのリスク管理の基礎知識は役立ちます。
リスク対策の原則が知られていない?ことも、間違ったセキュアコーディング理解の原因かもしれません。間違いだらけのセキュアコーディング解説も紹介します。
-
壊れたWindowsを修復する方法
事務作業用のWindows 10のOfficeアプリケーションが動かなくなったので、修復を試みました。ツールは用意されています。しかし、結局VMのスナップショットで直しましたがメモとして。
-
H29年度 岡山大学ビジネスマインドセミナー ~ 知られざる情報セキュリティの危機的状況とその対策 ~
H29年度 岡山大学ビジネスマインドセミナー 「経営者/マネージャーが知るべきセキュリティ」
ここ5年ほど(?)行っている岡山大学ビジネスマインドセミナーの講師を本年も担当しています。今年は内容を大幅に更新しています。
席数は十分にあるはずなのでconnpassでも登録できるようにしました。今週末(11月11日土曜)13:00~です。お気軽に受講ください!
セミナー内容の一部紹介
本年度のセミナー内容を少しだけ紹介します。
- 「セキュリティ設計」を考えてみたい方
- 現状で「安心している」方
- 現状で「安心できない」方
- ITシステムを提供している方
- ITシステムを利用している方
- エンジニア/プログラマ/マネージャーの方
お待ちしています!
私のブログを読んでいる方は技術者が多いと思うので、少し技術よりの部分を紹介します。セミナーはプログラミング知識なしで理解できる内容になっています。
一枚一枚のスライドに紹介・説明すべき内容が多すぎて書ききれません。詳しくは受講をお願いします!








