Taint mode for PHP 5.2.5

Taint mode for PHP 5.2.5

PHPのTaintモードパッチです。最近更新されていたようです。

ftp://ftp.porcupine.org/pub/php/php-5.2.5-taint-20080130.README.html

Taintモードはあれば良い程度の機能ですが、フールセーフ機能(フェイルセーフでなくフールセーフ – fool safe)としては便利です。入力バリデーション用のコードは必須ですが、そのようなコードが無い場合やあっても不完全な場合には有用です。

PHP 5.2.5よりCVS HEADとPHP_5_3ブランチ用のパッチを作った方が採用されやすいのですが….

このパッチは関数毎に違うマークを付けるtaintモードなのでかなり大きいです。(+遅い)

TomcatのCookie処理の問題

脆弱性は意外と単純な所に残っている場合の方が多いです。

http://nvd.nist.gov/nvd.cfm?cvename=CVE-2007-5333

Apache Tomcat 6.0.0 through 6.0.14, 5.5.0 through 5.5.25, and 4.1.0 through 4.1.36 does not properly handle (1) double quote (“) characters or (2) %5C (encoded backslash) sequences in a cookie value, which might cause sensitive information such as session IDs to be leaked to remote attackers and enable session hijacking attacks. NOTE: this issue exists because of an incomplete fix for CVE-2007-3385.

これだけだと解りづらいですが以下のURLにもう少し詳しく書いてあります。

http://www.securityfocus.com/archive/1/archive/1/487822/100/0/threaded

Examples:
+++
GET /myapp/MyCookies HTTP/1.1
Host: localhost
Cookie: name="val " ue"
Cookie: name1=moi
+++
http://example:8080/examples/servlets/servlet/CookieExample?cookiename=t
est&cookievalue=test%5c%5c%22%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A0
1+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B

もっと読む

ブログらしくブックマークなどに登録してもらう為のリンク追加

たいした事を書くつもりが無かったので、読んでみたいと思っていただいた方や検索エンジンから見つけて読んでいただける方だけで良い、とブックマークサービスなどに追加するボタンを付けていませんでした。時代が時代なので遅ればせながら付けてみました。
# と言っても自分自身はソーシャルブックマークサービスを利用していません。
# 問題があったら教えてください。

このブログに貼付けたボタン/リンクは、以下のサイトとURLから生成したかURLの情報を参考に作成しました。

他にこれもというサイトがあれば教えてください。リモートのJavaScriptを読み込まないサービスであれば追加したいと思います。

もっと読む

ホワイトリストはどう作る?

まずホワイトリストの基本中の基本は”デフォルトで全て拒否するであることに注意してください。全て拒否した上で許可するモノを指定しないとホワイトリストになりません

例えば、CSPはホワイトリストで不正なJavaScriptの実行を防止する仕組みです。2016年のGoolgeの調査によると95%のCSP定義が、実際にはJavaScriptインジェクション脆弱性の防止に役立っていない、との調査結果を発表しています。原因はホワイトリストの作り方の基本、全て拒否した上で許可するモノを指定する、を理解していないことにあると考えられます。1

私はいつも基本的に能動的なセキュリティ対策2を選択するようにお勧めしています。能動的なセキュリティ対策とは全ての入力値の厳格なバリデーション処理であり、出力時に過剰とも言えるエスケープ処理です。入力/出力の両方にホワイトリスティング対策をお勧めしています。3

もっと読む

OpenIDのライブラリにはCSRFに脆弱な物が多い

GNUCitizenによると

CSRF – It comes very handy. It seams that no matter how much you talk about it, very few pay attention on the problem. And it is not a problem that you can afford to have. And among the XSS issues, which most OpenID libraries have, CSRF (Cross-site Request Forgery) seams to be the most pervasive form of attack.

http://www.gnucitizen.org/blog/hijacking-openid-enabled-accounts

とほとんどのOpenIDのライブラリはCSRFに脆弱だそうです。

tiny problemと書いてありますがとても重要な問題です。OpenIDのようなSSO (Single Sign On)システムが脆弱だとそれを利用しているシステム全体が危険にさらされます。

もっと読む

企業ユーザはPHP4からPHP5への移行は慎重にすべき

2008年1月3日のPHP4.4.8のリリースを持ってPHP4サポートが終了しました。海外では「PHP5へ移行しよう」キャンペーンも始まりました。

私は従来から「PHP5へ早く移行すべきです」と繰り返し勧めて来ました。現在でも全てのオープンソースアプリケーションの開発者は、今すぐPHP5に移行すべき、と考えています。

しかし、新規開発を除き、企業ユーザには今すぐPHP5へ移行すべきだ、と一概にアドバイスできません。3つのお薦めしない理由があります。

  • PHP4からPHP5へのマイグレーションはそれほど簡単ではない
  • PHP5に移行するとマイナーバージョンアップに追随しないとならない
  • PHP5.3のリリースが準備されている

もっと読む

ロケール問題を修復

先日b2evolutionのアップグレードを行った際にロケールファイルの設定に漏れがあり普通に参照すると強制的にISO-8859-1への変換が行われ、????となってしまっていました。

この辺りの仕様はおかしな所もあるので、普通に動作するようパッチを書いて送る事にします。

問題をご連絡頂いた皆さん、ありがとうございました。

追記:
ついでに前から気になっていたURLも修正しました。

http://blog.ohgaki.net/index.php/yohgaki/article

といった感じでしたが

http://blog.ohgaki.net/article

でアクセスできるようにしました。もちろん前のURL形式でアクセスしてもリダイレクトで表示できるようにしています。

追記:
さらにRefererスパム防止機能のため、はてなブックマークからのリンクをクリックするとSPAM防止用ページが表示されていました。この機能を無効にしたので「はてな」からもアクセスが容易になりました。問題を教えてくださった方、ありがとうございます。

どの言語で書いてもおかしなコードを書く奴は書く

# 書きかけです。後で編集予定

「Web屋のネタ帳」のどの言語で書いてもおかしなコードを書く奴は書くに対するコメントです。その記事にはRubyのまつもと氏のブログの引用もあるのでそちらにも対するコメントでもあります。

言語が良いコードを書けるようサポートする事はできると思います。しかし、言語だけによって良いコード(安全なコード、メンテナンスし易いコードなど)が書けるようにはならないのではないでしょうか? 言語だけでは不十分だからです。

もっと読む

正しいメールアドレスのチェック方法

正しいメールアドレスのチェック方法がちょっとした話題になっているようです。Web屋のネタ帳でも取り上げられていますが、メールアドレスのチェック方法自体は解説していません。ついでなので書いておきます。

「本当に正しいメールアドレスかチェック」するには実際にメールを送信して、送信されたユーザしか知り得ない情報をユーザが知っている事により確認しなければなりません。これはWeb屋のネタ帳で解説されている通りです。

もっと読む

Linux/Apacheを狙った攻撃 – 確認方法はmkdir 1

OpenTechPressにLinux/Apache系Webサイトを狙った正体不明の攻撃についての現状報告と気になる記事があります。

この攻撃ですが、結構話題になっていて私のブログでも先日FTPとCPanelユーザはクラッキングに注意が必要と題したエントリを公開しています。OpenTechPressの記事中にもcPanelの件は紹介されていますが、非常に気になる記述がある

問題のルートキットを検出する方法ないし、感染の確認されたサーバの洗浄法についてアドバイスが得られないかをApache Software Foundationに問い合わせてみたが、Apacheのセキュリティ対策チームに属するMark Cox氏から得られたのは、「現状で攻撃者側がサーバ群のルートアクセスを得た方法の詳細はつかみ切れていませんが、同時にApache HTTP Serverに潜む脆弱性に起因していることを示す証拠も得られていません」という回答である。

Linuxサーバにルートキットがインストールされるらしい。そしてその確認方法は

感染後は数字で始まるディレクトリの新規作成が行えなくなるとされている(例えば「mkdir 1」など)。

としています。ルートキットなのでps uaxなどとしてもプロセスリストには出てこないはずです。本当にmkdir 1でファイルが作れないなら試してみるのも良いかもしれません。ただし、mkdir 1でファイルが作れないのはルートキットのバグと考えられるます。最新版では修正済かもしれません。記事に紹介されているようにパケットをモニタリングする方法の方が確実でしょう。

rootのパスワードを推測した可能性が高いと記載されていますが本当のところはどうなのか気になります。

この攻撃のすごいところは、その手法がかなり洗練されている点です。

How a Rootkit works
1. Once the Rootkit is successfully installed, the server will sit idle until rebooted. During a server reboot, the system initialization scripts will call the infected binaries.
2. When executed, the infected binary packages use /dev/mem as a pathway to the Kernel, and then attach to several system calls within the running Kernel. This results in hidden files, broken binary packages, and random JavaScript code being seen by web visitors.
3. When the system is fully online in an infected state, the Kernel will begin serving a JavaScript payload to random web requests/visits. This occurs outside of Apache and will not be seen in any of the Apache logs. The JavaScript injection will look like:
<script language=’JavaScript’ type=’text/JavaScript’ src=’cbolw.js’></script>

http://servertune.com/kbase/entry/258/

ApacheやPHPなどのWebアプリケーションレベルで攻撃用のJavaScriptを送信しているのではなく、ルートキットがインストールされたカーネルから送信している、としています。

アプリケーションレベルはもちろん、Apacheのログにも残らず、不審なファイル/プロセスも見えないこの攻撃はかなりの脅威です。

最大のP2PネットワークはThePrivateBay


The Pirate Bay Breaks 10 Million Users

10 million simultaneous users represents a number never duplicated by any file-sharing entity. The largest P2P networks, such as FastTrack and eDonkey2000, both topped out with approximately 5 million users.

1000万「同時」ユーザだそうです。これはすごい数です。基本的にはキャッシュを効かせてリバースプロキシの効果を最大限に利用して… といった感じなのだとは思います。しかし、検索機能もあり試しに検索しても遅くないです。

もう少し覗いてい見ると日本のコンテンツはあまりないようですが、海外のコンテンツは豊富なようです。また、アダルトコンテンツが公開のページには無いようでそれが人気の理由なのかな、と思います。

確か一度閉鎖されたことがあるサイトだったと思うので調べるとありました。
http://ccr2.blog9.fc2.com/blog-entry-1761.html
今はどんな状態で運用しているのでしょうね?

コンテンツの著作権をもつ方々はこのような状態にどのように対処するか思案が必要でしょう。基本的にはDRM無しで広告収入で儲ける合法的な手法を提供するのが良いと思います。無料コンテンツはビットレートが低い物、ビットレートが高い物は有償で、といった感じが良いのではないかと思います。しかし、ビットレートが高い物を有償化しても、ビットレートの高いデータその物がまた違法に公開されるので意味が無い、となってしまうかも知れません。どう折り合いをつけるか難しいですね。

日本PostgreSQLユーザ会北海道支部 / Ruby札幌 合同セミナーのお知らせ

2月16日(土)に、日本PostgreSQLユーザ会(JPUG)北海道支部とRuby札幌の合同セミナーが開催されます。

日本PostgreSQLユーザ会北海道支部 / Ruby札幌 合同セミナーのお知らせ

私も講師の一人として参加させて頂きます。PostgreSQLとMySQLのベンチマークについて話す予定です。ご都合がよい方はお越しください。

有料と聞いていないので無料セミナーだと思います。アナウンス文には無料と記載されていないので主催者に問い合わせてみます。

追記:
現在は無料であることがアナウンス文に追加されています。

エントリのコメントに評価をつけてみました

最近のb2evolutionのフィードバック(コメント)には評価を記録できるようになっているので有効にしてみました。辛口評価コメントも歓迎です。どれが役に立ったのか、立たなかったのか、などはいろいろと参考になります。

「書かない日記」の「書かない」には

  • 詳しく書かない
  • あまり書かない
  • きちんと書かない

の3つの「書かない」の意味があるのですが酷すぎる場合はコメントを入れていただければそのエントリ分の追加は努力します。

と書いて今思い出しました。DNS Rebinding攻撃の書きかけエントリに追記するのを忘れていました…

追記:
試しに入れてみるとフィードバックとして取り扱われるのでモデレートされます。SPAM以外は全部公開しているので安心(?)してください。公開してほしくないコメントの場合、非公開で、と書いておいてください。

Ruby on Rials – Session Fixation脆弱性の攻撃方法

前回に引き続きWeb関係のセキュリティ脆弱性がどのように攻撃されるのか解説した記事がThinkITに掲載されています。

今回はRuby on Railsの脆弱性が対象です。Ruby on Railsにもいくつかのセキュリティ脆弱性が報告されていますが、URLベースのセッションがいかに脆弱であるか解説しています。

解説対象の脆弱性
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-5380
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6077

もっと読む

Apache httpd脆弱性のリスク評価は不十分

先日Apache httpdサーバにセキュリティ脆弱性を修正したリリースが公開されました。

例えばSecuniaのApache httpd 2.2の脆弱性ページをみると先日リリースされた2.2.8で修正された脆弱性のセキュリティリスクは低く評価されています。
http://secunia.com/advisories/28046/

ここにはmod_negotiation脆弱性の記述がありません。mod_negotiationはここに掲載されているmod_proxy_ftp,mod_status,mod_proxy_balancer,mod_imagemapと違い、多くの環境でデフォルトで有効となっていると考えられるモジュールです。

Minded Security Labs: Advisory #MSA01150108
Apache mod_negotiation Xss and Http Response Splitting
http://www.mindedsecurity.com/MSA01150108.html

によるとmod_negotiationにはXSS, HTTP Response Splittingが可能な脆弱性があり、それぞれ

Apache <=1.3.39
<= 2.0.61
<= 2.2.6

に影響があります。この脆弱性を利用した攻撃は簡単です。しかもデフォルトで有効なモジュールなので影響は大きいです。

私が管理するサーバもhttpd 2.2.6で運用している物がまだ大半だったのでmod_negotiationが有効だった物は無効化しました。

影響が大きいと考え時間差を作る為と思われますが、あえてチェンジログにはこの脆弱性の修正が記載されていなかったようです。
http://www.apache.org/dist/httpd/CHANGES_2.2.8

攻撃にはサーバ上のファイル名を操作できる必要があります。例えば、画像や添付ファイルなどをアップロードし、そのファイル名を制御できるアプリケーションを使っている場合、この攻撃可能です。CMSやブログアプリ、文書管理システムなどが脆弱である可能性があります。

Apache httpdを運用されてる方は早急に確認/対策される事をお勧めします。