カテゴリー: Computer

  • ネットワークから学ぶソフトウェアセキュリティの基礎

    Slideshareで「ネットワークから学ぶソフトウェアセキュリティの基礎」を公開しました。

    ネットワークの世界で”当たり前”のセキュリティアーキテクチャーですが、残念ながらソフトウェアの世界では”当たり前”ではありません。

    必要なセキュリティ対策やアーキテクチャーは状況やニーズによって変わります。セキュリティについて様々な考え方を持つことは構わないのですが、基礎中の基礎は”適用しないとしても”普遍です。

    https://www.slideshare.net/yohgaki/ss-79410254

     

  • セキュアコーディング/セキュアプログラミングが流行らない理由

    ISO 27000(ISMS)をはじめ、セキュアコーディング/セキュアプログラミングを行いなさい、と推奨するセキュリティガイドラインが多くあります。2014年改訂のISO 27000に至っては、セキュアプログラミングが広く普及したのでセキュアプログラミングを行うとする記述に簡素化しています。1

    しかし、広く使われているフレームワークでさえセキュアコーディング/セキュアプログラミングをサポートする機能が無かったり/不十分でだったり、現状は到底普及している、とは言えないです。辛うじて普及しているかも?と言えるのはセキュアコーディング/セキュアプログラミングでは枝葉末節にあたるコーディング技術(ああすべき/こうすべき)くらいではないでしょうか?

    なぜセキュアコーディング/セキュアプログラミングが普及していないのか?考えられる理由を挙げます。

    セキュアコーディング/セキュアプログラミングとは?という方は以下を参考にしてください。

    (さらに…)

  • 5分で解るセキュアコーディング

    セキュアコーディングで最も重要な部分を理解するのは簡単です。スライドを作ったので公開します。

    https://www.slideshare.net/yohgaki/5-77628242

    出力対策だけのセキュリティ対策は”誤り”です。

    https://blog.ohgaki.net/reason-why-output-only-security-is-design-mistake

    確証バイアスのせいか、”セキュリティ専門家”を含め、この基本原理が理解できないケースが多いです。

     

  • 2017年版OWASP TOP 10

    追記: 8月現在では、OWASP TOP 10 2017はWAFのプロモーションになっている、OWASP Proactive Controlsの”全ての入力をバリデーションする”と重複している、などの点が議論になりRCはリジェクトされ11月にリリースを目指して調整中になっています。

    追記2:正式版が2017年12月にリリースされました。ここで紹介している脆弱性はA10(10番目の脆弱性)「不十分なログとモニタリング」として登録されました。WAFが必要であるかのような記載が削減されましたが、脆弱性の本質(入力検証しない&対応しないアプリは脆弱なアプリ)は変わりありません。

     

    このテーマついては既にブログは書いています。このエントリでは追加でQ&Aを記載しています。

    https://blog.ohgaki.net/2017-owasp-top-10-changes-web-security-rule

    元々はこのスライドは非公開にするつもりでしたが、公開可能な内容で公開することにしました。

    https://www.slideshare.net/yohgaki/2017owasp-top-10

    開発会社としてはどうすれば良いのか?と質問を頂いたので追記します。

    (さらに…)

  • 出鱈目なシグニチャのhash_hkdf関数を安全に使う方法

    ユーザーが間違った使い方をしないよう、PHP 7.1に追加されたhash_hkdf関数のシグニチャが出鱈目である件について書いておきます。使い方を間違えると脆弱な実装になるので注意してください。

    (さらに…)

  • PHP:タイプヒントを使うと遅くなる

    PHPにはタイプヒントと呼ばれる引数/戻り値データ型指定機能があります。これは便利な機能ですが性能に影響を与えます。

    (さらに…)

  • 2017年度版 OWASP TOP 10 で変るWebセキュリティのルール

    追記: 8月現在では、OWASP TOP 10 2017はWAFのプロモーションになっている、OWASP Proactive Controlsの”全ての入力をバリデーションする”と重複している、などの点が議論になりRCはリジェクトされ11月にリリースを目指して調整中になっています。

    追記2:12月現在ではPDF版がリリースされています。現時点ではWebページの内容はドラフト版になっています。リリース版では「A7-Insufficient Attack Protection」は「A10-Insufficient Logging & Monitoring」になり、緩い要求事項に変更されていますが、基本的な要求事項は変わりません。マトモな入力バリデーションがないと要求されるログと監視機能を提供できません。

    OWASP(Open Web Application Security Project)とはWebシステムのセキュリティ向上を目指す団体です。クレジットカード/デビットカード利用に必要なPCI DSS(Payment Card Industory Data Security Standard)標準に強い影響力を持っています。PCI DSS標準ではOWASPなどのセキュリティガイドを参照/実装するように求めています。

    OWASP TOP 10はOWASPガイドプロジェクトの中で最も重要なプロジェクトです。今年はその新版が4年ぶりにこの夏公開予定です。この4月からRC版(PDF)が公開されています。

    2017年度版OWASP TOP 10の修正点で、アプリケーション開発者にとって最も影響が大きい変更は

    • A7 Insufficient Attack Protection(不十分な攻撃防御)

    が追加された点です。これがWebセキュリティのルールを変える指針になります。(とは言っても、個人的にはこれと同じこと10年以上前から実施すべき、と勧めていますが) (さらに…)

  • 入力値の種類は3種類しかない

    入力の種類には3種類以上の種類、名前、電話番号、住所など沢山の種類があります。しかし、見方によってはたった3種類しかありません。この区別ができる/できない、で大きな違いができてしまいます。

    (さらに…)

  • SQLインジェクション対策 総”習”編 – 第五回関西DB勉強会

    第五回 関西DB勉強会でお話しさせて頂いた SQLインジェクション対策 総”習”編 の公開用資料をSlideShareにアップロードしました。私のセッションを気に入って頂けた方が多かったようで何よりです。

    関西DB勉強会、面白かったです。久々にお会いできた方もいました。超満員でもう少しで入りきれないほどでした。また参加できれば、と思っています。

    PDFはこちらからダウンロードできます。

    https://www.slideshare.net/yohgaki/sql-76168380

     

    勉強会で使ったスライドは、面白おかしく柔らかい(?)スライドでした。あまり公開用には向いていません。実際に勉強会で使った資料が欲しい方はFacebookかメールで連絡してください。個別にお送りします。

  • アプリケーションのセキュリティと必要十分条件

    セキュリティと必要十分条件については他のエントリでも書きました。以前書いたエントリではミクロの視点から単純な加算関数で考えました。今回はもう少し大きなマクロの視点、アプリケーションのセキュリティの必要十分条件を考えてみます。

    論理的なセキュリティを考える為には必要なので書きました。ここに書いたことは読み物としては退屈かも知れませんが、重要な事だと考えています。

    (さらに…)

  • これから開発を始める場合のセキュリティ

    取り敢えず言語とプログラミングの基礎を学習し終えて、これから本格的にソフトウェア開発をしよう、という場合に困るのが「セキュリティ」です。今回は簡単に、これから本格的に開発を行う、という方向けに知っておくべき事を紹介します。

    初めてTeratailに回答した内容を多少まとめて加筆したモノになっています。

    https://teratail.com/questions/74317

    ブログにしたので、Tratailの回答は単純にこのエントリを参照するように修正するかも知れません。

    (さらに…)

  • 戸締りと金庫とセキュリティ

    ずっと感じてきたことですが、ブログにしていませんでした。具体的には

    戸締りする前に、金庫を買うセキュリティ対策

    です。

    IT技術者以外の方向けに書いています。最近問題だ、と話題のStruts2というソフトウェアを引き合いに書いていますが、技術的なことはほとんど書いてありません。

    (さらに…)

  • 暗号を積極的に使う理由

    Googleは暗号を積極的に使っていることが知られています。暗号を積極的に使う理由を紹介します。

    信頼境界線の中で暗号を使っても、内部に侵入を許した時点で終わり」なので、「暗号を使っても意味がない」と考えているかも知れません。「リスクの廃除」だけが、セキュリティ対策ではありません。「リスクの緩和」もセキュリティ対策です。暗号は侵入を許してしまった場合のリスク緩和に効果的です。

    (さらに…)

  • 簡単にインターネットから内部ネットワークを守る方法

    前のエントリでFirefox + NoScriptによる内部ネットワークを守る方法を簡単に紹介しました。本当はネットワークを分離(物理的またはVLAN)し、それぞれに安全に利用できるプロキシーサーバー(ローカルネットワークのリソースにアクセスさせない、など)を用意して利用する方が良い、のですがこれには”それなりのモノと手間”が必要です。

    Firefox + NoScriptだけでもかなり効果があるので改めて紹介します。前回紹介したのは10年も前ですね :D

    (さらに…)

  • 信頼境界線の引き方と防り方 – セキュリティの構造と設計

    信頼境界線Trust Boundary)と境界防御はITセキュリティに限らず、セキュリティ対策の基礎中の基礎です。基礎中の基礎かつ最も重要な概念ですが習わないことが多いです。これが原因で「正しいセキュリティ対策」(≒効率的なセキュリティ対策)ができていないケースが多数あります。残念ながら”セキュリティに詳しい”とされている人でも全く理解していないケースが散見されます。

    このエントリでは主に、ソフトウェアセキュリティに於ける信頼境界線の概念と引き方(≒セキュリティ構造/設計)、ついて紹介します。かなり長いエントリになりましたがお付き合いください。

    (さらに…)