タグ

ブックマーク / blog.ohgaki.net (28)

  • ホスト名バリデーションのやり方

    (Last Updated On: 2018年8月13日)徳丸さんのブログで私のブログ「GHOSTを使って攻撃できるケース」にコメントがあったようなので、好ましいホスト名バリデーションの方法を書いておきます。 特定の低レベルAPIのバグが10年ほど前に書いたのコードで対応できていない、と議論するのもどうかと思いますがしっかりチェックする場合の例を書いておきます。 そもそもホスト名の仕様はどうなっているのか? 入力バリデーションを行うには仕様を理解する必要があります。ホスト名の仕様は幾つかのRFCで言及されています。例えば、RFC 2181の11. Name syntaxには That one restriction relates to the length of the label and the full name. The length of any one label is li

    ホスト名バリデーションのやり方
    pmakino
    pmakino 2015/02/04
    /^([0-9a-z-]{1,63}\.)*[0-9a-z-]{1,63}$/i で済む内容をなぜそんなに七面倒くさい手順にするのか理解に苦しむ
  • GHOSTを使って攻撃できるケース

    (Last Updated On: 2018年8月4日)「glibcのGHOST脆弱性の内容と検出」はしっかり調べた上で書いていなかったので別エントリとしてまとめておきます。 追記:簡単だったので書かなかったのですが、バリデーション方法がない、とのご意見があったので「ホスト名バリデーションのやり方」を書きました。こちらもどうぞ。 追記:新しいgetaddrinfo問題の方はこちら 攻撃方法 日語のまとめとしては「GHOST 脆弱性は如何様に使うのか」が良いと思います。詳しくはOpenWall MLのメールが参考になります。 http://www.openwall.com/lists/oss-security/2015/01/27/9 GHOSTでオーバーフローするの4バイトまたは8バイトのようです。基的なEximの攻撃手順は ユーザー入力のホスト部分に不正なIPアドレス形式を用い不正に

    GHOSTを使って攻撃できるケース
  • ジョブセキュリティ:セキュリティ業界の為のセキュリティ対策ではありませんか?

    (Last Updated On: 2018年8月4日)追記:このエントリの背景となる根拠の一部となる開発者は必修、SANS TOP 25の怪物的なセキュリティ対策に書きました。こちらも合わせてご覧ください。 今日のエントリは「セキュリティ業界ジョブセキュリの為のセキュリティー対策になっていないか?」という話です。 ジョブセキュリティ 知らないと仕事にならないような、雇用を守る作用を持つ手法や知識のこと。 セキュリティ対策は様々な対象を守る為に行いますが、このエントリではアプリケーションセキュリティを維持することだけを考えます。 セキュリティで飯をべるには脆弱性が量産されればされるほど困る事はありません。脆弱性を量産するには基的なセキュリティ対策を教えないことが最も効果的です。 SANS/CWE TOP 25では、ソフトウェアの脆弱性を無くす為に最も効果的なセキュリティ対策は「確実な入

    ジョブセキュリティ:セキュリティ業界の為のセキュリティ対策ではありませんか?
    pmakino
    pmakino 2013/12/08
    なんというブーメラン
  • IPAの「安全なSQLの呼び出し方」が安全になっていた

    (Last Updated On: 2018年8月4日)IPAは「安全なSQLの呼び出し方」(PDF)を以下のURLから公開しています。 http://www.ipa.go.jp/security/vuln/websecurity.html 「安全なSQLの呼び出し方」は危険である、とするエントリを書こうかと思い、内容を確認するとそうでもありませんでした。 訂正:ツイッターで徳丸氏に確認したところ、徳丸氏もエスケープを含めたSQLインジェクション対策が必要であると考えられていた、ことを確認しました。徳丸氏にはセキュリティ専門家として大変不名誉な記述であった事を訂正し、深くお詫びいたします。内容についての修正は、識別子エスケープについてブログに書くとの事でしたのでブログの内容を確認してから修正します。 別冊の「安全なSQLの呼び出し方」は基中の基である「正確なテキストの組み立て」によるセ

    IPAの「安全なSQLの呼び出し方」が安全になっていた
    pmakino
    pmakino 2013/12/05
    https://twitter.com/hasegawayosuke/status/408388988865507328 とあわせて読むとじわじわくる>「古い…は…はっきり言うと有害でした」「しかし、今の…は…安全な解説書になっています」
  • Rails4セキュリティ リローデッド(仮)

    (Last Updated On: 2018年8月8日)前回公開したRails4セキュリティのスライドは誤解をされる可能性があるのでは?と指摘される方も居たので「Rails4セキュリティ リローデッド」として追加情報を加えたスライドを作ろうかと思っていました。確かに、今見直したら肝心な所で追加し忘れてる部分があって誤解しやすい、というか言いたい事が分からないかも知れません。 入力パラメータをバリデーションするとは、バリデーションするメソッドを作ってバリデーションする、ことです。必須・許可設定だけだとモデルに渡すデータがどれかしか分かりません。許可設定と同時にバリデーションする事が良い、という事です。少なくともここだけは直した方が良さそうです。 あまり時間が取れなかったのでスライドを作るために作ったメモを取り敢えず公開します。スライドにして欲しいという方が多ければスライドにするかも知れません

    Rails4セキュリティ リローデッド(仮)
    pmakino
    pmakino 2013/07/16
    「入力パラメータをバリデーションするとは、バリデーションするメソッドを作ってバリデーションする、ことです」まで読んだ。
  • Sessionアダプション脆弱性の修正

    (Last Updated On: 2018年8月13日)やっとPHPのセッションアダプション脆弱性を修正するパッチとプルリクエストを作りました。議論は済んでいるのでパッチを検証、調整してマージするだけです。 PHPに限らず、未初期化のセッションIDを正規のセッションIDとして受け入れてしまうセッション管理機構があります。(Javaとか) サイトで稼働している全てのアプリが正しいセッション管理(ログイン後にセッションID作り直す。ログオフで廃棄。一定時間経過後、セッションIDを再生成)を実行していれば良いのですが、共有環境や複数のアプリが使われる事が多いPHPでは特にリスクが高くなっています。 未初期化のセッションIDを受け入れてしまうセッション管理機構は脆弱だと言って良いと考えています。セキュリティのベストプラクティスには確立されたセキュリティ手法(ベストプラクティス)はそのまま使うべき

    Sessionアダプション脆弱性の修正
    pmakino
    pmakino 2013/07/07
    「セキュリティのベストプラクティスには確立されたセキュリティ手法(ベストプラクティス)はそのまま使うべき、というプラクティスがあります」
  • PHPのセッションアダプション脆弱性克服への道のり

    (Last Updated On: 2018年8月13日)PHP Advent Calender用のエントリです。 PHPのセッション管理は非常に簡単です。セッションをsession_start()で開始して$_SESSION配列を使うだけです。便利で簡単なセッションモジュールですがセッションアダプションに脆弱であるため、一般に言われてる「ログインする時にはsession_regenerate_id()を呼ぶ」コーディングではセッションアダプションに脆弱になってしまいます。 まずは危険性と対策を紹介します。 セッションアダプションの危険性 セッションアダプションとは外部などから設定されたセッションIDを受け入れ初期化する脆弱性です。一番分かりやすい例はTrans SIDを有効にして http://example.com/index.php?PHPSESSID=1234567890 とアクセ

    PHPのセッションアダプション脆弱性克服への道のり
    pmakino
    pmakino 2011/12/06
    「しかし、IPアドレスが帰ってくればco.jpにもクッキーが設定できてしまいます」???
  • gihyo.jp セキュリティ対策が確実に実施されない2つの理由

    (Last Updated On: 2018年8月13日)gihyo.jpで新しい記事が公開されました。 なぜ簡単な対策で防げる脆弱性でもセキュリティ対策が確実に実施されないのか?それには理由があります。 その理由とはこの2つではないでしょうか。 セキュリティ対策とコーディングのベストプラクティスは相反することを理解していない セキュリティ対策の基中の基を理解していない 続きは http://gihyo.jp/dev/serial/01/php-security/0044 でご覧ください。 こちらはその記事のはてなブックマークです。 http://b.hatena.ne.jp/entry/gihyo.jp/dev/serial/01/php-security/0044 コメント一つ一つにコメントを付けるつもりはありませんが、モノリシックなコードと処理が重複しているかいないかは関係ありま

    gihyo.jp セキュリティ対策が確実に実施されない2つの理由
    pmakino
    pmakino 2011/12/01
    「理解できません」<元コメは入力値の話をされてるのに自分で出力時の話に都合良くすり替えているのだから噛み合わなくて当然だよね
  • #PHP でもutf8_decodeは使ってはならない

    (Last Updated On: 2009年9月22日)Twitterで書いた方が良いようなエントリですが、たまには良いでしょう。 #perl – utf8::decode()ではなくEncode::decode_utf8()を使うべき理由 という記事がありました。PHPにも似た関数、utf8_decodeがあります。PHPでも使ってはなりません。日人というよりマルチバイト圏で使っている人はほとんどいないはずです。理由はコードを見れば一目瞭然です。 /* All the encoding functions are set to NULL right now, since all * the encoding is currently done internally by expat/xmltok. */ xml_encoding xml_encodings[] = { { "ISO-

    #PHP でもutf8_decodeは使ってはならない
  • セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?

    (Last Updated On: 2018年8月13日)一見徳丸さんのブログは分かりやすいように思えますが、それは単純な実験により分かりやすいように見えるだけで複数の間違いがあります。 その間違いとは 意図の取り違い – 誤読 言語の仕様と実装の理解不足 HTTPやPHP仕様の理解不足 セキュリティ対策をすべき場所の理解不足 です。(※0) 徳丸さんは非常勤とは言え、国の出先機関の研究員であるし、その出先機関は職務放棄とも言える文書(「例えば、PHPを使用しない」と勧める文書)を公開している(いた?)のでしっかり反論しておく必用がありますね。IPAのあの文書は職務放棄と言える文書だと思っています。これについても後で意見を述べます。 意図の取り違い – 誤読 最初の間違いは私のブログのエントリ「何故かあたり前にならない文字エンコーディングバリデーション」に対する理解です。特にPHPユーザに

    セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?
  • 何故かあたり前にならない文字エンコーディングバリデーション

    (Last Updated On: 2018年8月8日)私が4年前(2005年)に「Webアプリセキュリティ対策入門」を執筆していた時には、既に壊れた文字エンコーディングなどの不正な文字エンコーディングを利用したJavaScriptインジェクションやSQLインジェクション攻撃は比較的広く知られていました。この問題は当時のスラッシュドットジャパンでも取り上げられていました。/.で取り上げられたので、そこら中のWebサイトとユーザが被害に合うのでは?とヒヤヒヤしたので良く覚えています。 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい加減に文字エンコーディングを取り扱うと安全なシステムは作れないのです。 参考:エンジニア向けに

    何故かあたり前にならない文字エンコーディングバリデーション
  • Flashのセキュリティ設定 – Flash Cookie

    (Last Updated On: 2009年2月10日)Flash Playerの設定はAdobe(Macromedia)のページで行う事は、Web開発者には常識だと思います。このブログをあまり一般的なユーザが見ている、とは思えませんが一般ユーザ向けに書いています。 Flashの設定は以下のWebページから行います。 Flashセキュリティ設定のページ(MomongaLinux x86_64+Flash10 Alpha) http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html デフォルトで「サードパーティ製のFlashコンテンツにコンピュータ上のデータを格納する事を許可します」にはチェックが入っています。 これはFlash Cookie(ローカル共有オブジェクト

    Flashのセキュリティ設定 – Flash Cookie
  • https://blog.ohgaki.net/media/users/yohgaki/PostgreSQL-Performance.pdf

  • LAMPのPをPHPからPerl/Python/Rubyに替えるだけではセキュリティは向上しない証拠

    (Last Updated On: 2008年4月3日)誤解を招く記事 – LAMPセキュリティを強化する4つの方法で紹介した記事ように、最近「言語を替えるとセキュリティが向上する」といった間違った認識が広まりつつあるように思えます。 結論からいうと、セキュリティに関連する機能が同等な言語であれば「言語を替えるとセキュリティが向上するいう考え」は妄想です。言語を替えても、正しいセキュリティ知識を持ち合わせた開発者が開発しないと、危ないアプリケーションが簡単に作れます。 ちょうど良い証拠となるPloneのCVEエントリが公開されています。PloneはPythonで記述されたCMSです。私も利用したことがありますが、なかなかよくできているCMSです。出来立てのCMSではなく何年も前から実用されています。フレームワークとしてPythonのWebシステムよく利用されているZopeを利用しています。

    LAMPのPをPHPからPerl/Python/Rubyに替えるだけではセキュリティは向上しない証拠
  • 誤解を招く記事 – LAMPセキュリティを強化する4つの方法

    (Last Updated On: 2014年12月5日)LAMPセキュリティを強化する4つの方法 http://enterprisezine.jp/article/detail/311 書いてある情報は有用な事も記載されていますが、偏狭な視点からの記述により誤解を招く記事になっていると考えられます。著者はセキュリティの専門家ではないようなので仕方ないかも知れませんが、間違った認識は有害です。 # 原は読んでいません。もしかすると日語訳にも問題があるのかも知れません。 実行できる最も重要な対策は、PHPを使わないことです。腐った果物を導入する前に、以下に目を通してください。 後にPerl/Ruby/Pythonの方がかなり安全である旨の記述があります。メモリ管理が必要ない同じスクリプティング言語のレベルで「Perl/Ruby/Pythonを使えばセキュアなアプリケーションができる」と考

    誤解を招く記事 – LAMPセキュリティを強化する4つの方法
  • ext3の最大ファイルサイズは2TBでなく16GB?!

    (Last Updated On: 2016年2月24日)24GBのファイルをコピーしようとしてエラーになり??な話です。大きなファイルを使いそうなファイルシステムにはXFSを利用していたので気が付きませんでした。 sshfsでマウント先のファイルシステムにコピーしようとしたら16GBでエラー、クラッシュした為と思いますが勝手にumountされました。sshfsの制限かな?とscpにしても同じ、4GBにsplitしてコピー後にcatしても16GBちょうどでエラーなのでググるとKernel 2.4の制限が出てきました。 http://www.ussg.iu.edu/hypermail/linux/kernel/0403.3/1673.html Depends upon the block size. Block size file size 1 kb 16 GB 2 kb 256 GB 4

    ext3の最大ファイルサイズは2TBでなく16GB?!
  • サーバシグニチャは隠さないのが当たり前?

    (Last Updated On: 2013年11月6日)yohgaki’s blog – サーバシグニチャは隠すのが当たり前 http://blog.ohgaki.net/index.php/yohgaki/2007/09/04/a_ma_fa_a_ma_da_a_a_pa_me_na_a_ra_af_a_a に対するコメントを見つけました。このブログに対するご意見は探したことがないので、たまたま見つけたこのブログが初めてくらいだと思います。「サーバシグニチャは隠さないのが当たり前」とするご意見です。 なぜサーバのバージョン情報を公開する必要があるのか。それは、クライアント側で、サーバのバグや規格解釈の相違に起因する問題を回避するためです。 「当たり前」とするには理由が弱いと思います。サーバ側はサービス提供者が自由にコントロールできる要素です。サーバがオプションとして送信する特定のヘッダ

    サーバシグニチャは隠さないのが当たり前?
  • サーバシグニチャは隠すのが当たり前

    (Last Updated On: 2007年9月4日)私も何年も前からセミナーではサーバ、モジュールバージョンは隠すようにと言っています。何故こんな事で賛否両論になるのか全く理解できません。犯罪者がどのように攻撃するか?を考えればなぜ隠す必要があるのか理由は明白です。サーバのバージョン情報が詳しく公開されていれば、その情報を使うに決まっています。攻撃に使える情報は全て使わない訳がありません。 最新版を使っているから安全ではない事も明白です。サーバに0day攻撃の脆弱性が発見された場合どの情報を使います?公開または推測できるバージョン情報に決まっています。 フィンガープリンティングでかなりの確率で推測可能、という議論もあるとは思います。しかし、適切に運用/設定されているシステムなら細かいバージョン番号までは推測できない場合が多いと考えられます。 犯罪者が攻撃に利用している、利用する可能性が

    サーバシグニチャは隠すのが当たり前
  • VMWare上のUbuntu 7.0、CentOS5

    (Last Updated On: 2018年8月14日)VMWare上にUbuntu 7.0をインストール(正確には6.xから7.04にアップグレード)してみました。6.xのときからvmwareのマウスドライバがインストールされないため、ホスト・ゲストOS上でマウスカーソールが移動できませんでした。 あまり気にしていなかったのですがCentOS5をゲストOSとしてインストールしても同じようにマウスポインタが移動できません。さすがに2つのゲストOSでマウスポインタが思ったように動作しないのは面倒なので調べてみることにしました。 CentOS5の/etc/X11/xorg.confをvmwareのマウスドライバを使用するようにすると動作するようになりました。 Section "InputDevice" Identifier "Mouse0" Driver "vmmouse" Option "

    VMWare上のUbuntu 7.0、CentOS5
  • JavaScriptのソースに重要なデータを埋め込むなんて….

    (Last Updated On: 2007年1月3日)GmailでJavaScriptのソースとしてコンタクトリストデータを埋め込んでいたため、第三者がコンタクトリストを盗めてしまう、という問題が話題になっています。 まだ詳しく調べていませんがsrc属性に指定されたソースは誰でも(どのサイトからでも)取得できるブラウザの仕様を利用したものだと思います。 比較的早くからsrc属性で他のサイトのJavaScritpが指定できる仕様のリスクは指摘されていました。Gmailでさえ重要なデータをJavaScriptのソースに埋め込んでいるのですからAjaxアプリケーションの多くに同じ脆弱性があるような気がします… 手っ取り早く不完全な方法で修正するにはリファラチェック、きちんと修正するならJavaScriptのリクエストに鍵を付けてチェックする、といった方法で対策可能です。 http://exam

    JavaScriptのソースに重要なデータを埋め込むなんて….