Android 版 Kindle の SSL サーバ証明書検証不備脆弱性。

 表題の件,我々一般人には,一見関係なさそうに見えるが,怪しいアプリをうかつに使わないとか,メールアカウントやパスワードの管理をしっかりするとかいうことでは,同じなんじゃないかと思う。

 そういえば,昨日,「ネット競売、消せぬ情報 大手3社、履歴・カード番号保存 利用者「流出が心配」」というのもあったな。えって,思うかもしれないけど,結構そういうとこ多い。だって,登録させる側からいえば,データの不正使用をする気はなくても,ユーザ側の無料版の反復利用を防ぐためだけでも,元情報は必要なわけだから,良心的であっても,罰則がないなら,データを保持するほうが妥当だと思う。どのくらい保持するとかで口を拭ってる様子は感じられるが……。知識の欠如から対応がいい加減なところもあるにはあるけどね。

 登録データの削除については,簡単/困難/不能をまとめたこんなサイトがある。 justdelete.me
 このサイトは, bitly.com (有名どころだが,日本語対応がないみたいなので, twitter そのものの短縮リンクが向上してからは,使うのをやめようとしたのだ) のアカウントを削除しようと四苦八苦しているときに発見した。
 まぁ, justdelete.me の一覧を見ると,サイトの性質から考えても, HARD あるいは impossible で当然だなと思うところもたくさんあるけど……。 justdelete.me ,日本語でも似たものがあるのかな。

 やっと,本題。
 29 日に JVN から Android 版アプリ Kindle における SSL サーバ証明書の検証不備の脆弱性というのが出ていて,セキュリティホール memo さんが「そのうち徳丸さんから解説が出るだろう」と書いておられた解説が出た。「Android版KindleにおけるSSLサーバ証明書の検証不備の脆弱性CVE-2014-3908」。読んでみたけど,難しくて,よくわからん。

 証明書を作るときに「コモンネームをちゃんとやってねー」というのはよく聞く。一致してない場合は,アクセスさせてくれないからだと,理解していた。これは,自前証明局の話ね。

 でも,奥さんの記事「SSL/TLSライブラリの正しい使い方(もしくは、コモンネームの検証について)」を読むと,多数の人がアクセスするアプリの場合,コモンネームの検証の実装はそれほど単純なものではないみたいだ。うちの自宅サーバレベルは蚊帳の外みたい(爆)。

 徳丸さんの解説は難しくて 100% 理解しているとはいいがたいのだが,それでも「コモンネームの検証が漏れてる場合があるって,超ヤバいじゃん」ということくらいは十分わかる。

 8月初めには,「App Storeのアプリが盗まれた」って話もあったし,スマホが一気に普及して,それ関係の悪事も花盛りだな。

 徳丸さんの記事の件は,実際に悪用されてるかどうかは現時点で不明なようだが,持っている方は,既に対応バージョンが出ているようだし, 「Kindle – Google Play の Android アプリ」でアップデートしておこう。

 「App Storeのアプリが盗まれた」の件については,セキュリティホール memo さんによると,いたのくまんぼうさんとこが,有用みたい。「注意喚起:アプリ乗っ取り犯の手口判明。ITCアカウントの入力を求めるアプリには注意!

覚え書-#18。

投稿アップデート情報  追記(8/28)
  1. PHP 5.6.0 GA の正式リリースの時期が, RC4 の記事に書いてあった。とーっても楽しみ。 wow!
  2. Apache 2.4.10 (httpd-2.4.10-win32-VC11.zip) を openssl-1.0.1i のものに,アップデートした。 OpenSSL Security Advisory [6 Aug 2014] のせいなんだが, Steffen が Jan-E に “Coming days the builds here at Apache Lounge are going to be upgraded. It has not that priority and severity ~” と回答していたので,焦らずに待っていたのだ。
  3. Windows Update 2014 年 8 月はトラブル続出だったみたいだね。うちのパソコンは幸いにも1台も引っかからなかったんだが,現時点で特に問題がなくても KB2982791, KB2970228, KB2975719 and KB2975331 をアンインストールしたほうがいいということらしいので,探し出してアンインストールした。以下の通り。
    • NJ2100 上の Windows8.1(x86)
      KB2982791
      KB2975719
    • CF-J10 上の Windows7 SP1(x64)
      KB2982791
      KB2970228
    • xw4200 上の Windows7 SP1(x86)
      KB2982791
      KB2970228
    • KeyPaso 上の Windows Vista SP2(x86)
      KB2982791

    昔は, Windows update というとほぼ毎回不具合があって,少し落ち着くまで更新を控えたりしたものだが,今回のドタバタは久しぶりだった気がする。皆さんはどう思われますか? (^_~)

追記(8/28):
 MS14-045 関連の不具合更新プログラム, KB2993651 が出てますな。詳しくは,[MS14-045] 更新プログラム 2982791 の問題を解決する更新プログラム 2993651 を公開

WordPress3.9.2 Background Updates.

 今回も,朝起きたら,WordPress 3.9.2 になっていた。

 セキュリティメンテナンスリリースということで, ‘a possible denial of service issue in PHP’s XML processing’ のパッチなんぞが含まれている。「迅速なアップデートを強く推奨します」とのことなので, automatic background updates に対応していないサイトを運営してる場合は,お言葉にしたがって手動でアップデートしたほうがいいみたいス。

訂正されたファイルは下記の通り。

readme.html
wp-admin/about.php
wp-includes/ID3/getid3.lib.php
wp-includes/class-IXR.php
wp-includes/class-wp-customize-widgets.php
wp-includes/compat.php
wp-includes/pluggable.php
wp-includes/version.php
wp-login.php

本家のお世話-#107。(Apache 2.4.10へアップデート)

 Apache HTTP Server 2.4.10 が出たので,アップデート。セキュリティパッチが,5個含まれているようだ。 mod_authnz_fcgi というモジュールが増えたので, httpd.conf も以下の1行が増えている。
    #LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
 Windows 版では, pcre が 8.34 から 8.35 に, APR が 1.5.0 から 1.5.1 にアップデートされている。

 VC11 用の httpd-2.4.10-win32-VC11.zip (17 Jul) を我が家用 ( Windows7 x86 ) にダウンロード。 Apache 2.4.x conf 情報が必要な方は,「Windows7上にWamp系WebServerを建てる-#1。」を見てください。

WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決。

 WordPress 3.7 から ca-bundle.crt が含まれるようになったんだが,その後,「Upgrade Network」のときにエラーが出るようになった。ところで,「Warning! Problem updating https://SITENAME.」というのを1つのサイトだけおかしいんだと勘違いしていたのだが,一番初めに調べたサイトでエラーが出てるんだから,あとは調べてないわけだよな(汗)。

 はじめのエラーは,「Error message: SSL certificate problem: self signed certificate in certificate chain」というので,これは自前認証局を使ってるせいだったんだが, Oiram の教えてくれた通り, ca-bundle.crt に自前の CA のデータを書き加えてやったら,よくなった。

 で,次が「“Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure」。これに2か月以上手を焼いていたが,本日,やっと,解決した \(^o^)/。

 振り返ってみると,結局のところ3つのポイントがあったようだ。

  1. うちの client.crt には ssl_client extension を使っていなかった。で, client.crt を ssl_client extension 付きで作り直した。参考にしたのは, “sslv3 alert handshake failure when using SSL client auth”
    まず, openssl.cnf に次の行を追加した。

    [ ssl_client ]
    basicConstraints = CA:FALSE
    nsCertType = client
    keyUsage = digitalSignature, keyEncipherment
    extendedKeyUsage = clientAuth
    nsComment = “OpenSSL Certificate for SSL Client”

    でもって, ssl_client extension を使って client.crt を作り直した。
    >openssl ca -config openssl.cnf -policy policy_anything -extensions ssl_client -in client.csr -out client.crt

    • 古いほうの client.crt で “openssl s_client -connect o6asan.com:443 -cert client.crt -key client.key -CAfile cacert.pem” をやると,下の2つのエラーが出ていたが,新しいのだと出なくなった。
    • error:14094418:SSL routines:SSL3_READ_BYTES: ~
      error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure: ~
    • 当然ながら, clientcert.p12 も作り直した。
  2. WordPress は「Upgrade Network」のときに cURL を利用しているのだが, cURL は P12 format certificates を受用しないので, PEM format に直さなければ使えない。
    • clientcert.p12 から clientcert.pem を作る
      >openssl pkcs12 -in clientcert.p12 -nokeys -clcerts -out clientcert.pem
    • clientcert.p12 から clientkey.pem を作る。
      >openssl pkcs12 -in clientcert.p12 -nocerts -out clientkey.pem
       
      clientkey.pem のコピーを作り, pass phrase を削除する。
      >copy clientkey.pem cp_clientkey.pem
      >openssl rsa <cp_clientkey.pem> clientkey.pem
  3. WordPress に client 証明書の場所を教えてやる
    • class-http.php の「curl_setopt( $handle, CURLOPT_CAINFO, $r[‘sslcertificates’] );」行の直前に,以下の2行を書き加える。

      curl_setopt( $handle, CURLOPT_SSLCERT, 'clientcert.pem の絶対パス' );
      curl_setopt( $handle, CURLOPT_SSLKEY, 'clientkey.pem の絶対パス' );

      WordPress の core スクリプトを書き換えるのは嫌なので,何とかほかの方法でやろうと頑張ったのだが,どうしてもうまくいかなくて,結局, class-http.php をいじることにした。

      clientcert.pem と clientkey.pem をサーバ上のどこか,外部のものがネット経由でアクセスできない,より安全な場所にコピーする。

    参考サイトは, Client URL Library

 自前認証局の作り方は,「本家のお世話-#68。(WordPress SSL ログイン-#1)」をどうぞ。

 エラーが消えたよ。満足じゃ。パチパチ!!

本家のお世話-#104。(OpenSSL Security Advisory [6月5日] に対処のため Apache のアップデート)

投稿アップデート情報  追記(6/9)

 OpenSSL Security Advisory [6月5日] になんかいろいろと挙がっていて,どうするかなと思っていたら,さっそく Steffen が対処してくれたので, Apache 2.4.9 の 2014 5 Jun version を落として,アップデート。

 新バージョンは, ‘IPv6 Crypto apr-1.5.0 apr-util-1.5.3 apr-iconv-1.2.1 openssl-1.0.1h zlib-1.2.8 pcre-8.34 libxml2-2.9.1 lua-5.1.5 expat-2.1.0’ と openssl-1.0.1h でのビルドとなっている。

 アップデートのやり方自体はいつもと同じ。そんでもって,Changelog

 いつも, Steffen への感謝の念に堪えない m(_”_)m。

追記(6/9):
 こんなんあったんで,貼っときます。
ハートブリード脆弱性から 2 か月で公開された OpenSSL の重大な脆弱性修正パッチ

WordPress3.9.1 Background Updates.

投稿アップデート情報  追記

 今回も,朝起きたら,WordPress 3.9.1 になっていた。

 メンテナンスリリースということだが, 34 のバグが手直しされている。特に,マルチサイト・ネットワーク関係がたくさんあるらしい。訂正されたファイルは下記の通りで,結構な数だ。

readme.html
wp-admin/css/edit.css
wp-admin/css/forms-rtl.css
wp-admin/css/login-rtl.min.css
wp-admin/css/admin-menu-rtl.css
wp-admin/css/wp-admin-rtl.min.css
wp-admin/css/edit-rtl.css
wp-admin/css/forms.css
wp-admin/css/admin-menu.css
wp-admin/css/login.min.css
wp-admin/css/wp-admin.min.css
wp-admin/about.php
wp-admin/user/menu.php
wp-admin/includes/ajax-actions.php
wp-admin/js/post.min.js
wp-admin/js/customize-controls.min.js
wp-admin/js/post.js
wp-admin/js/customize-controls.js
wp-admin/custom-header.php
wp-admin/credits.php
wp-admin/freedoms.php
wp-includes/ms-settings.php
wp-includes/class-wp-editor.php
wp-includes/media.php
wp-includes/js/shortcode.min.js
wp-includes/js/customize-views.js
wp-includes/js/media-views.min.js
wp-includes/js/tinymce/plugins/wpview/plugin.js
wp-includes/js/tinymce/plugins/wpview/plugin.min.js
wp-includes/js/tinymce/plugins/wordpress/plugin.js
wp-includes/js/tinymce/plugins/wordpress/plugin.min.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js
wp-includes/js/tinymce/plugins/wplink/plugin.min.js
wp-includes/js/tinymce/plugins/wplink/plugin.js
wp-includes/js/tinymce/wp-tinymce.js.gz
wp-includes/js/customize-models.js
wp-includes/js/mce-view.js
wp-includes/js/mediaelement/wp-playlist.js
wp-includes/js/mediaelement/wp-mediaelement.css
wp-includes/js/media-audiovideo.min.js
wp-includes/js/shortcode.js
wp-includes/js/media-views.js
wp-includes/js/customize-views.min.js
wp-includes/js/media-audiovideo.js
wp-includes/js/customize-models.min.js
wp-includes/js/mce-view.min.js
wp-includes/version.php
wp-includes/default-widgets.php
wp-includes/script-loader.php
wp-includes/media-template.php
wp-includes/ms-load.php
wp-includes/css/editor-rtl.css
wp-includes/css/editor.css
wp-includes/css/media-views-rtl.min.css
wp-includes/css/media-views.min.css
wp-includes/css/editor-rtl.min.css
wp-includes/css/editor.min.css
wp-includes/css/media-views-rtl.css
wp-includes/css/media-views.css
wp-includes/widgets.php

追記:
 確認してみたら,なんと,165ものファイルが削除されていた。 css , js 関係がほとんどである。特に tinymce 関連で大きな違いがある。なんなんだろう。 3.9 でビジュアルエディタ関連の不具合があったせいかな。今年初めに tinymce が WordPress コアにマージされるという話があったと思うが,多分それがビジュアルエディタと関係があるんだろうしな。
  削除ファイル一覧

ただいま日本語版待ち,WordPress 3.9。

投稿アップデート情報  追記  追記2(6/22)

 WordPress 3.9 が出た。ただし,我が家は,日本語版待ち。皆さんはいかがですか。

追記:
 さっき,20:20ごろ, WordPress 3.9 日本語版にアップグレードした。機能は,特に問題なく働いているのだが, 3.8.3 のとき同様,またもや Warning! Problem updating https://SITENAME. Your server may not be able to connect to sites running on it. Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure が出た。なんでだろう。少し,真剣に調べてみないといけないかな。

 WordPress 3.9 関係の資料。 Codex(日本語), Blog(日本語), Changelog.

追記2(6/22):
 WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決というのを書いた。

引き続きまして,WordPress 3.8.3。

投稿アップデート情報  追記  追記2(6/22)

 えーっと,先日,くりくりさんへのコメントで,「マイナーアップデートは自動に任せていい」と書いたばかりなのだが,今回みたいに,ローカライズ関係のファイルが入ってるのに,自動でアップデートされるとまずいかもしれない。

 今回のアップデートファイルには,

wp-admin/includes/upgrade.php
wp-admin/includes/post.php
wp-admin/about.php
wp-includes/version.php
readme.html

と, version.php が入っているが,実は, version.php には, $wp_local_package がある。自動アップデートで,ここがなくなると,不具合が起こる可能性もある。日本語版が出る前に自動アップデートされてしまった場合は, version.php を開けて最終行に
     $wp_local_package = ‘ja’;
を追記してやろう。

 ところで, Oiram回避策を使っているにもかかわらず,今回また,
Warning! Problem updating https://SITENAME. Your server may not be able to connect to sites running on it.
が出ている。ただ,エラーメッセージは前と違い, Error message: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure なんだが,どうしたら直るのか,まだわからない。でもって,今回もエラーは一つのサイトについてだけなんだ。そのサイトは,前と同じ。なんでなんだろう?

追記:
 うーん,「朝起きたら,WordPress 3.8.2 だった。」で書いていることと,矛盾してるな(苦)。 3.8.2 の version.php には $wp_local_package = ‘ja’; が入っていなかったけど,何の問題もなかった(アワワワ)。困ったちゃんねぇ(⇒私)。

追記2(6/22):
 WordPressでの「SSL3_READ_BYTES:sslv3 alert handshake failure」を解決というのを書いた。

朝起きたら,WordPress 3.8.2 だった。

投稿アップデート情報  追記(4/10)  追記2(4/15)

 朝起きたら,WordPress 3.8.2 だった。て,言うか,もちろん,ログインしてみたらという話だが。

 夕べ, SSL 関係を作り直して, ca-bundle.crt に改めて Oiram回避策を施したところだったので,アップデートがどうなるか気になっていたのだが,大丈夫だった。ホッ。

追記(4/10):
 今回のマイナーアップデート対象ファイルは,以下の15個。言語関係は含まれていない。本日の検索ワードに「wordpress 3.8.2 日本語化」があったので,蛇足ながら,追記。

readme.html
wp-admin/about.php
wp-admin/includes/class-wp-posts-list-table.php
wp-admin/includes/class-wp-upgrader.php
wp-admin/includes/post.php
wp-admin/includes/update-core.php
wp-admin/themes.php
wp-includes/bookmark.php
wp-includes/class-wp-xmlrpc-server.php
wp-includes/js/plupload\plupload.silverlight.xap
wp-includes/pluggable.php
wp-includes/post-template.php
wp-includes/query.php
wp-includes/update.php
wp-includes/version.php

 つまり, wordpress 3.8.1 + 上記15ファイルで問題ないから,マイナーアップデートは自動で十分,と思う。

追記2(4/15):
 うーん,「引き続きまして,WordPress 3.8.3。」で書いていることと,矛盾してるな(苦)。 version.php には $wp_local_package = ‘ja’; が入っていなかったけど,何の問題もなかった(アワワワ)。困ったちゃんねぇ(⇒私)。