• GoogleのPython採用と脆弱性情報の関係

    GoogleがカスタムアプリケーションのホスティングにPythonを採用しました。これにより多くのセキュリティ研究者の研究対象がPythonに向けられ、PHPで報告されていたような問題がセキュリティ脆弱性して多数レポートされるようになるのではないか、と予想していました。

    さっそくセキュリティ脆弱性が多く発見されるライブラリの一つであるzlibライブラリにお馴染みの脆弱性が報告されています。

    CVE-2008-1721

    Integer signedness error in the zlib extension module in Python 2.5.2 and earlier allows remote attackers to execute arbitrary code via a negative signed integer, which triggers insufficient memory allocation and a buffer overflow.

    Impact

    CVSS Severity (version 2.0):
    CVSS v2 Base score: 7.5 (High) (AV:N/AC:L/Au:N/C:P/I:P/A:P) (legend)
    Impact Subscore: 6.4
    Exploitability Subscore: 10.0

    負の整数が指定された場合が考慮されていないので攻略コードを埋め込まれた圧縮ファイルで任意コードが実行できるようです。よくあるタイプの脆弱性です。

    しばらくは色々レポートされる事だと思います。

    追記:
    ところでこの脆弱性は未パッチです。
    http://www.python.org/download/
    の最新リリースは、現時点(4/14)でも、2/22日リリースされた2.5.2になっています。このページにはパッチへのリンクもありましたが、この脆弱性とは全く関係ないページが表示されていました。コメントにも書きましたが開発者がセキュリティに大きな注意を払っていない事を前提に対策を考える方が良いです。これは何もPythonやPHPに限った事ではありません。

    参考
    http://www.atmarkit.co.jp/news/200804/08/appengine.html

    関連:
    http://blog.ohgaki.net/php-1
    http://blog.ohgaki.net/lamp
    http://blog.ohgaki.net/lamp-p-php-perl-python-ruby
    http://blog.ohgaki.net/lamp-4

    追記:
    予想通りの展開です。任意コード実行の脆弱性のCVEが公開されています。
    http://blog.ohgaki.net/python-2-5-2
    http://blog.ohgaki.net/python-2-5-3

  • スクリプトインジェクション対策の特集 – gihyo.jp

    技術評論社でブログっぽい記事を書かせて頂いています。4月3日からスクリプトインジェクション対策で注意すべき項目が掲載されます。一般的なスクリプトインジェクション対策「バリデーションしエスケープする」ではなく、万が一スクリプトインジェクションに脆弱であった場合でも被害を最小限に留める対策、見落とされがちな対策を中心に解説しています。
    # 一度に書いた記事なのでどう分割されるか私も分かりません。
    # 物によっては2回に分割するかもしれないので20弱くらい
    # だと思います。

    http://gihyo.jp/dev/serial/01/php-security

    から最新の一覧を参照できます。

    ご意見やご希望などございましたらこのブログから送って頂いても、メールで送って頂いても歓迎致します。ご興味がある方はご覧ください。
    (さらに…)

  • PostgreSQL 8.3の全文検索機能(TSearch2)を日本語で利用する

    PostgreSQL 8.3.0から、ユーザから提供されている追加機能(contrib)として利用できた全文検索機能(TSearch2)が本体に取り込まれました。

    本体に取り込まれたため、PostgreSQL 8.3.0以降ではソースから構築する場合に

    ./configure
    make
    make install

    と実行するだけで全文検索機能が利用できるようになりました。
    (さらに…)

  • Smarty 2.6.19未満のregex_replaceは脆弱と言うよりは…

    Smarty 2.6.19未満のregex_replaceは脆弱だったと言うよりは、今でも脆弱と言った方が良いと思います。

    Smarty 2.6.19は2008/2/11にリリースされました。ちょっと古い話ですが、Smarty 2.6.19より前のバージョンのregex_replaceは脆弱、とアナウンスされています。
    (さらに…)

  • 文字エンコーディングを完全にバリデーションしても…

    なるほど、と思いました。

    http://d.hatena.ne.jp/hoshikuzu/20080328

    文字エンコーディングを規格に則り、完全にバリデーションしてもダメな時がある…
    頭が痛い問題です。

  • APCにStack Overflow脆弱性

    件名の通り、APCのStack Overflow脆弱性が公開されています。

    http://sla.ckers.org/forum/read.php?3,21615,21615#msg-21615

    このポストに書いてある通り、PHP4ではインクルード攻撃に脆弱なアプリならallow_url_fopenをoffにしていても効果はありません。PHP4+APCを使っている方は今すぐAPCをCVSバージョンにバージョンアップするか、APCをロードしない方が良いでしょう。

    MomongaLinux等、パッケージをビルドする際にstack smashing attackから防御するstack protectorオプションを使ってビルドしているバイナリであればリンク先の攻撃方法では攻撃できません。しかし、インクルード攻撃に脆弱であれば、他の脆弱性を利用してカナリア値を盗む事も可能なので安全とは言えません。いずれにせよAPCを利用している場合はバージョンアップする方が良いでしょう。

    追記:
    CVSを見てみました。

    http://cvs.php.net/viewvc.cgi/pecl/apc/apc.c?r1=3.20&r2=3.21

    fileinfoがスタック変数、strcpyでオーバーフローしてます… 教科書通りの解りやすい脆弱性です…

  • 「例えば、PHPを避ける」ってなぁにその曖昧な書き方?

    この記事のタイトルは参照しているページのタイトルをそのまま使っています。

    誤解を招く記事 – LAMPセキュリティを強化する4つの方法で、

    実行できる最も重要な対策は、PHPを使わないことです。

    と、理解できない対策を勧めています。セキュリティの事を解っていない素人が書いた事は、記事の内容と趣旨から明らかです。

    しかし、IPAにも同じような事が書いてあったのですね。「例えば、PHPを避ける」ってなぁにその曖昧な書き方?で書かれています。去年から掲載されていたと思います。

    IIS+ASPのアプリにダメダメなWebアプリが多いのも事実ですが、言語を問わずダメなプログラムだらけです。LAMPのPをPHPからPerl/Python/Rubyに替えるだけではセキュリティは向上しない証拠では最近発見されたPythonベースのCMS、Ploneの脆弱性を紹介していますが、Java, Perlも同じです。

    特に「LAMPセキュリティを強化する4つの方法」にPHPからPerl等に替えれば安全になるように勧めていますが、著者はPerlで作った恐ろしく穴だらけのCGIの数々を見たこともないのでしょう。探さなくてもそこら中にあるのですが…. フレームワークの利用は安全性向上に役立ちますが、フレームワークを使うだけでは安全になりません。JSFやRailsで作ったから、といって自動的に安全なWebアプリは作れません。

    セキュリティを向上させるために他の言語に替えて再構築するリソースがあるなら、使っているプログラム(OS,Web,言語,フレームワーク,アプリ)きちんとバージョンアップをした上で、開発者が正しいセキュリティ知識を習得できるよう努力すべきです。

    企業ならソースコードレベルの監査とコンサルティングを依頼した方が、言語を替えるよりよっぽど効果的で、コストも少なく効率的です。言語を替えても設計・ソースコードレベルでのセキュリティ監査はセキュリティ維持には欠かせません。

  • .Net用OCaml – F#の入門書 – Expert F#

    OCamlはプログラミングコンテストで優勝するチームや開発者御用達の言語であることは以前から知っていましたが、個人的に利用しようと思ったありませんでした。しかし、最近関数型言語の人気が非常に高まってきています。関数型言語の簡潔なコードや副作用の少ないコードの生産性が認められてきたからだと思います。

    OCamlを勉強しようかと思いましたが、AmazonでちょうどF#の本(英語版)が昨年末出版されている事を見つけて購入しました。
    (さらに…)

  • LAMPセキュリティを向上させる方法

    LAMPはLinux, Apache, MySQLとPHPまたはPerl, Pythonを利用したWebシステムの総称として利用されている用語です。

    特にLinux/Apache/MySQL/PHPはよく見かけるシステム構成です。ホスティングサービスを提供する会社でこの構成をサポートしていない会社を探すのが難しいくらいではないかと思います。広く使われていますが、「十分に安全な状態」と言える状況で運用されているケースはほとんどありません。

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

    (さらに…)

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

    誤解を招く記事 – LAMPセキュリティを強化する4つの方法で紹介した記事ように、最近「言語を替えるとセキュリティが向上する」といった間違った認識が広まりつつあるように思えます。

    結論からいうと、セキュリティに関連する機能が同等な言語であれば「言語を替えるとセキュリティが向上するいう考え」は妄想です。言語を替えても、正しいセキュリティ知識を持ち合わせた開発者が開発しないと、危ないアプリケーションが簡単に作れます。
    (さらに…)

  • 誤解を招く記事 – LAMPセキュリティを強化する4つの方法

    LAMPセキュリティを強化する4つの方法

    http://enterprisezine.jp/article/detail/311

    書いてある情報は有用な事も記載されていますが、偏狭な視点からの記述により誤解を招く記事になっていると考えられます。著者はセキュリティの専門家ではないようなので仕方ないかも知れませんが、間違った認識は有害です。

    # 原本は読んでいません。もしかすると日本語訳にも問題があるのかも知れません。

    (さらに…)

  • BUFFALO Wi-Fi Gamers 無線LANアクセスポイント WCA-G

    参考:自ら顧客離れを促進するバッファロー、不必要なアプリケーション利用制限とQ&Aの嘘

    最近のCTUやモデムにはルータ機能が付いているので、無線LANを使う場合にルータ機能付きの親機(無線LANアクセスポイント)を買う必要はありません。ひかり電話を契約したのを機会に無線LANのアクセスポイントを交換しました。

    前に使っていたのはNEC WarpStarで今回新しく購入したのはBaffalo BUFFALO Wi-Fi Gamers 無線LANアクセスポイント WCA-G です。

    この無線LANアクセスポイントの箱やメーカの製品ページを見るとゲーム機専用のような印象を受けますが、ごく普通のルータ機能無し無線LANアクセスポイントです。この無線LANアクセスポイントで非常に気に入ったのは2行メッセージを表示できるLCDパネルが付いており、このパネルと周辺にボタン4つで基本的な操作や設定が全て行えることです。
    (さらに…)

  • 予想よりは普通のサイトが危ない

    コンピュータワールドの記事によると普通のサイトがかなり危ないようです。

    「およそ1,000分の1の割合で、悪意あるWebページが存在することになる」と、Googleのシニア・スタッフ・ソフトウェア・エンジニア、ニールス・プロボス(Neils Provos)氏は述べている。


    Linux/Apacheを狙った攻撃 – 確認方法はmkdir 1
    で紹介している自動化された攻撃では1月の時点で少なくとも1万サイト以上のごく一般的なサイトがマルウェア配布に利用されていると報道されています。

    ある程度予想は出来ましたが、

    GoogleのProvos氏が驚いたのは、一般のWebサイトがポルノ・サイトよりも安全とは必ずしも言い切れないという調査結果が出たことだ。「調査を始めた当初は、低俗なWebサイトほど危険だと考えていた。実際、アダルト系のページにアクセスしたときは、悪意あるソフトウェアを仕込まれる危険が若干高くなることがわかった。しかし、ほかのページと大きな差があるわけではなかった」(Provos氏)

    には私も驚きました。もやは「怪しげなサイトにアクセスしない」といったセキュリティ教育は意味がなくなってきたと言えると思います。

    ある程度予想はしていたので、最近エンドユーザ向けに書いたインターネットを安全に利用するTipsには「怪しげななサイトにアクセスしない」は入れていませんでしたが、実際数値として同じレベル、かつ1000に1つ割合で悪意のあるWebページが存在するのはかなりの脅威です。

  • セキュリティ関係の番組

    YouTubeに投稿されていたセキュリティ関係の番組です。

    全て英語で字幕などはありません。日本でも同じような番組があるのかも知れませんが、テレビはニュースくらいしか見ないので放送されているのかどうか分かりません。

    英国BBCのニュース番組のようのです。

    Orthus(コンピュータセキュリティの会社)の方のコメントは全くの正論です。多くの会社はセキュリティ製品を購入することで安全性が確保できると考えて、もっとも基本的な対策であるソフトウェアのアップデートを行っていないケースは少なくありません。コンピュータシステムへの攻撃も進化しているので防御策のアップデートも書かせません。

    比較的、最近アメリカで作成されたと思われる番組です。

    番組中で「セキュリティ上の問題はネットワークではなくアプリケーションにある」と指摘しています。セキュリティに詳しい方には、ネットワークセキュリティの問題よりアプリケーションの問題の方が大きな問題になっている事は常識です。多くのエンドユーザが同じ認識であるか、は疑問です。

    eEyeによるMS Office文書の脆弱性を利用した攻撃の実演です。

    頻繁に行われているタイプの攻撃です。知らない方が見るとあまりに簡単に攻撃でき、キーロガーがインストールされる様子は衝撃かも知れません。Vistaでも利用できる攻撃はいくらでもある、と出演している方が紹介しています。出演している方の意図は「Vistaを使っているから、と安心できない」と言いたいと思いますが、この番組を見た方が「Vistaでも危ないならXPのままでも良いか」「VistaとXPのセキュリティレベル同じくらいなのか」と思っていしまわないか心配です。

  • JPUG北海道 RUBY札幌 合同セミナーの資料

    2月16日に札幌で行われたJPUG北海道 RUBY札幌 合同セミナーの資料です。

    クリックしてPostgreSQL-Performance.pdfにアクセス

    セミナーの際には風邪の為、声がでず、非常に聞き辛かったと思います。聞きにお越しいただいた方には申し訳ないです。

    fsync=falseなのでかなり速い事は理解していただけたと思います。(かなりのスピートダウンですがfsync=trueでも速いです)セッションをデータベースで管理した場合などにfsync=falseで運用しても問題ないでしょう。しかし、絶対にデータベース上のデータの不整合は困る場合にはfsync=trueに設定しなければなりません。

    とは言ってもfsync=falseの速さは捨てがたいと言う方はUPSを利用すると良いでしょう。UPSを付ければリスクはかなり低減できるので、リスクとメリットのトレードオフで選択すれば良いと思います。

    UPSを使っても防げないデータの不整合

    • カーネルがクラッシュした場合
    • HDDのケーブルが抜けたなど、物理的問題の場合
    • 電源が壊れた場合(これも物理的な問題ですが、2重化すればかなりリスク低減可能)
    • HDDの冗長化を行っていない場合(RAID組まずにデータ保護の為にUPS使っても….ですが念のため)

    等が考えられます。

    HDDの冗長化を行っていないサイトのデータベースであれば、fsync=falseが困る訳も無いでしょう。このような場合はfsync=falseでどんどん使ってよいでしょう。

    fsync=falseはデータベースサーバ全体の設定なので結局は「ショッピングサイトなどでどんな場合でも受注済みデータが無くなると困る」のような要求があるとfsync=falseで運用できないのでは、とご意見も頂きました。このような場合でもログを別の方法で残す、例えば、メールで送信してしまう、別ディスクにジャーナルとして書き込む、など方法でデータ保存の方法を冗長化していればfsync=falseでも困らないサイトは少なくないと思います。そうは言っても、困る物は困る場合はfsync=trueで利用すると良いでしょう。

    データベースに拘らずデータの冗長化を考えると、fsync=falseは強力な武器になります。

    # PostgreSQL 8.3ならsynchronous_commit=offに設定してリスク
    # を軽減する事も可能です。ところで、別ディスクにジャーナル
    # として保存する場合はDBよりも先にジャーナルファイルに書き
    # 込み、fsyncを忘れない様に注意してください。
    # メール送信する場合はリモートのメールサーバが受け取った後
    # にDBに書き込むように注意してください。つまりローカルのメー
    # ルキューにいれるのみだとジャーナルのように使えない場合が
    # あります。qmailならinjectが正常に終了すればOKだとは思い
    # ますがメールシステムによっては高い信頼性を期待できない場合
    # もあります。