WordPress脆弱性の再現方法 再現検討

脆弱性 CVE-2019-8943対処済みなのかどうか情報がふにゃふにゃしているので再現検証してみようかと少し調べてみました。 
NVDによる再現方法などの情報があるブログにあるということで、それを参照してみました。

このサイトの再現確認状況の情報は影響バージョンは4.9.9と5.0.1でが未対処の情報しかなく最近の情報がないようにみえます。以下翻訳文面です「 影響範囲: この記事で説明されている脆弱性は、バージョン4.9.9と5.0.1のセキュリティパッチによって悪用されないようにされました。ただし、Path Traversalはまだ可能で、現在パッチは適用されていません。不適切なPost Metaエントリを処理するプラグインがインストールされているWordPressサイトは、悪用を依然として可能にします。私たちは、WordPressのセキュリティ月の準備中に、過去何百万ものアクティブなインストールを含むプラグインがこの間違いをしているのを見ました。 WordPressのダウンロードページによると、このソフトウェアはインターネット上の全Webサイトの33%を超える割合で使用されています。プラグインが問題を再導入し、古いサイトなどの要素を取り込む可能性があることを考慮すると、影響を受けるインストールの数は依然として数百万にのぼります。 テクニカル分析 パストラバーサルとローカルファイルインクルージョンの両方の脆弱性は、ボタンをクリックするだけでスキャン時間3分以内に当社の主要なSASTソリューションRIPSによって自動的に検出されました。しかし、一見したところバグは悪用できないようでした。脆弱性の悪用ははるかに複雑ですが可能であることが判明しました。 」


 煮え切らない情報の原因は、つぎの複合で発生しているように思われます。

・検出者が、具体的にどのバージョンで対処されているかのをレポートしていない。→”2019/2/14:WordPressがパッチ提供し、そのパッチで対処済みであることを確認した”ししかなく、対処されたWordPressの特定バージョンでの検証悔過を公開していない。
・検出者は単純な?再現方法を公開していない。→誰でも検証できる状態になっていない?
・WordPressが2019/2/14よりあとにリリースしたセキュリティパッチは5.1.1しかないが、パストラバーサルの対処をしたと明言していない。→脆弱性はWordPress自体ではなくプラグイン側のAPI使用方法にあると考えているのが原因かもしれません。
・WordPress単独では脆弱性を悪用されることはなく、ある機能を不適切に使用したプラグイン(該当するプラグインは複数(多数?)ある)を組み込んでいる場合に脆弱性を悪用される。

このように脆弱性の作り込み原因の責任がどこにあるのか不明確な状態であるためこのような状態になっているといえます。WordPress側で対処したのだから明確に情報公開をするべきでしょう。

WordPress 5.2.2の後に特に情報なし?

WordPress 5.2.2はセキュリティ修正のようなリリースのされ方でしたが、7/4時時点でWordPressのサイトでは5.2.2はメンテナンスリリースとしかかかれていません。ほかのOSSの情報公開のタイミングを参考にして後から公開されるものとして書いていました。ここでは、過去のWordPressセキュリティ公開タイミングを再確認して、5.2.1、5.2.2がどうなのかを推測してみます。

 直近のセキュリティ修正5.1.1と5.0.1についてみます

 WordPress5.1.1
WordPressサイトでの5.1.1リリース日 2019/3/12
WordPressサイトでの5.1.1セキュリティ情報公開日 2019/3/12
JVNへの5.1.1(CVE-2019-9787)の情報登録日 2019/4/10 約1か月後

 WordPress5.0.1
WordPressサイトでの5.0.1リリース日 2018/12/13
WordPressサイトでの5.0.1セキュリティ情報公開日 2018/12/13
JVNへの5.0.1(CVE-2019-8942)の情報登録日 2019/4/1 約3か月後

その他(CVE-2019-89435.0.3まで?))
・→ まだパッチが公開されていないとされている(2019/7/4時点)

パッチ公開とほぼ同時に脆弱性情報が公開されるパターンもあれば、パッチがない脆弱性情報が公開されるパターンもあります。 CVE-2019-8942 についてはWordPressサイトの セキュリティ情報公開日 しているものがWordPress5.0.1のリリース日でしかなく、JVNへの登録日の直前に情報公開されたのなら、パッチリリルースの3か月後に脆弱性情報が公開されたことになる。このようにいろいろなパターンがあるので、5.2.1も5.2.2もいずれも今後セキュリティ情報が公開される可能性がまだ残っているということになりそうです。  もしもそうなら、CVE-2019-8943 は5.2.1で修正されていたということなると推測します。


データサイエンス、あなた(御社)はどのレベル?

最近、またまたAIって言葉が頻繁に登場してきているけど、それは何回目のブーム?かご存じだろうか?1990年ころは、一定のアルゴリズムに従って挙動する仕掛けがあればAIと呼んでいました。その後、繰り返しAIのブームがありました。そして現在のAIブームはディープラーニングをベースにしたものです。ディープラーニングは単機能として成功した仕掛けといってもよいでしょう。なぜそうなるのかわからずに使うのは厳しいので、なぜそうなるのかを解析して理解し使いこなしていこうとしているのが現在のフェーズです。将来のAIは多数のディープラーニングの仕掛けを多数のディープラーニングの仕掛けで最適に組み換えながら使っていくものになるでしょう。その仕掛け自体が自己学習を始めたらいわゆる技術的特異点=シンギュラリティーとなるにときがくるでしょう。今の時点で、シンギュラリティーを迎えるためのハードウェア環境はすでに整っていてあとは組み合わせる仕掛けを整えるだけでよいくらいのレベルになっているように思います。もちろん特定のマシンというわけではなくインターネットのネットワークにつながっているリソースを考えればということです。
 さて、現在のAIの利用状況を見ると業種ごと、企業ごと、人ごとにレベルに違いがあり格差が生じていて、この格差は”AI格差”といわれています。そしてここでいうAIは、前述のディープラーニング以降のAIです。
 ということで、あなた(御社)はどのレベルなのかを振り返ってみてください。みてください。AI活用といっても、ディープラーニングを活用した自動機械化から、ビックデータ解析により新たなビジネスを掘り起こすことまで様々です。AI格差はこのAI活用をうまくできたものがいわゆる勝ち組?になれると言っているようなものでしょう。
 ディープラーニングの活用をすでにしているなら、さらに活用範囲を広げるときに次のようなことも考えればよいでしょう。今時点でディープラーニングの活用ができているところはあまりありません。これからディープラーニングを活用するとして、どのように導入していけばよいのか考えてみましょう。ディープラーニングには入力と出力があります。まず”出力”を何にするのかを考えましょう。普通は利益が出るとか都合がよくなる何かです。例えばある自販機を考えたとき、売上金とか、利益などを指標にするのがよいでしょう。つぎに”入力”つまり”出力”を説明するための情報です。ある売上を説明するための情報です。自販機を設置した場所の条件とか時期とか商品の種類とか商品の配置とかさまざまな情報を入力とします。この ”入力”と”出力”の データのセットを用意します。一昔前のデータマイニングでは各入力と出力の相関関係を出したり、推測の関係式を立てたりして推測していました。ディープラーニングでは、このデータのセットを投入して売り上げを予測する仕掛け”学習済みデータ”を用意します。また、この ”学習済みデータ” をつかって、別途用意したデータを投入して予測精度の確認や予測利用します。このように ディープラーニング にはデータが必要です。そしてこのデータを用意することが第一歩です。データがないならデータを取るところから始める必要があります。ただ今どきはすでに多量のデータがあって、そのデータを人手で処理しているところもあるでしょう。そういう場合はどのようにディープラーニングを導入するかを検討するだけでよいでしょう。ディープラーニング活用の一歩手前の状態にあるといってよいでしょう。データをこれから収集するという状態であれば、何の情報を収集するのかから考えることになりますが、思いつくままに必要と思われる情報を順次追加していく方法だとスピーディーな対応が困難です。その方法を選択する何か理由があるのならそれでも良いでしょうが、効率的に進めるなら情報収集してそれを活用する仕掛けに拡張性を持たせつつ、”今後使うかもしれない”というあまり必要ではないかもしれない情報まで含めて収集してしまうのが良いでしょう。本当にゴミの情報は不要なので、仕分けることは必要です。つまり情報を収集し始めるときに何を収集するのかデータの保存領域のサイズを気にしながらデータを集めるのはストレージの価格が安くなってきた2019年時点では無駄です。取捨選択に時間をかけるのをやめて、収集したデータをどこに保存してどう使うかに時間を使ったほうが良いです。逆にビッグデータサイズのデータで保存しているかどうかを気にしたほうが良いかもしれません。兎に角”出力”をどうするか決めて”入力”となりそうな情報を使える形で収集していき、どのように使うかに注力すればよいでしょう。

 このようなディープラーニング活用のようなところを一括りにして、「シンギュラリティー 一歩手前の技術」の活用として、”Pre Singularity Technology (PST)”と定義します。PostSTに何があるか楽しみですが、まずはPSTを使い倒しましょう。
 ちなみにわたしは長年Singularity で思い起こすのは、”magnetic singularity”か”gravity singularity” です。

大雨で自動での排水起動頻度が不十分なので音声起動を追加

雨が降り出したら自動排水するようにIFTTTのAplletを追加しましたが、その対処では不十分なくらいに大雨になっています。これまで頻度がそれほどでもなかったので手動で起動していましたが、そうもいっていられないくらいの雨になってきたので、音声で起動で指定するAppletを追加します。

IFTTTのサービスを使って、雨が降り出したら排水ポンプを動かすAppletをGoogle homeとEchoそれぞれについて設定します。まずIFTTTで「New Applet」すると次が表示されます。

「+this」をクリックして実行する条件”トリガー”を設定します。ここでは「Google Assistant」もしくは「Alexa」を使っています。検索枠にサービスの名称の頭から数文字”As”や”Al”を入れると選択肢が表示されます。
” Google Assistant”や”Amazone Alexa” をクリックします。

次に起動ワードを指定します。起動したいだけなので、”Say simple phrase”を選択します。

起動ワードに は「排水」を、指定します。「Create trigger」をクリックします。

「+that」をクリックして、何を実行するかを指定します。

実行する処理をサービスの中から選択します。ここでは、利用するスマートコンセント”Meross”を指定します。

”Turn on”(電源オン)を選択します。

登録した”排水ポンプ”のスマートコンセントを選択し、「Create action」をクリックします。

設定した内容を任意の名前を指定します。 「Finish」をクリックしIFTTT設定を完了し保存します

以上で、「雨が降りだしたら自動で排水」することができます。排水ポンプを止めるほうはスマートコンセントのスケジュール設定で「1分後にオフ」を登録しているので、1分後に自動的に排水ポンプは停止します。

いいね 家電リモコンのセンサー機能

ちょっと前に試しに設定していて忘れていた機能が動作して、やっぱりいいねと思いました。
それは、センサーで取得した明るさの情報をもとに家電を操作する設定です。次のように設定しました。

1)IFTTT連携の設定を行う。

2)IFTTTでつぎのようにAppletを作成する。

 2-1)then に RATOC remoconを選択する
2-2) リモコン明暗 (照度) を指定する
2-3) 基準値1(100Lx)より低いを選択する
2-4) Create Triggerを押す
2-5) that に RATOC remoconを選択する
2-6) エアコンの操作を設定する
2-7)エアコンの操作で 停止 を指定する。
2-8)Create Actionを押す

以上で設定は終わりです。

この設定で、電灯を消して部屋が暗くなれば自動的にエアコンが切れるので、エアコンの切り忘れを防げます。 逆にエアコンをつけたままにしておきたければ電灯を点灯したままにしておく必要があります。その場合でも離れたところからオンになっていることを気が付けます。エアコンの消費電力に比べれば電灯のほうはそれほど多くないので、消費電力的にも無視できるでしょう。
 RATOCの仕掛けに改善してほしい点を言うとすると、「 基準値よりxx 」という条件だけでなく、「xxx以上からxxx以下に変わった」など、条件をきめ細かくしてほしいところです。 現状の「 基準値1(100Lx)より低い 」の条件だと、電気を消した時点だけでなく、暗い時間帯に複数回”エアコン停止”の操作が行われることになります。エアコンの動作的には何も起こりませんが、リモコン操作がおこなれたのと同じで”ぴっ”という音がします。

そんな感じで、現在の状況に合わせて動作する仕掛けは、うまく使えばなかなか便利です。その点は、Amazon EchoとGoogle homeの音声アシスタントにも当てはまります。今の状態を認識したうえでそれに合わせてより期待に近い動作をさせるというものです。今の時刻、現在の場所、などです。「今日の天気は?」と聞くだけで、現在地の天気を教えてくらますよね。現状はGoogleのほうが状態認識しているものの情報量が多く、的確な動作をしていると感じます。

たとえば、つぎのようなものです。

・テレビがついているかどうか
  → リモコンボタンの電源操作は、ON/OFFどちらも同じ信号が送信されます。このため、テレビの状態を認識できていないと「テレビをつけて」の操作の結果として”テレビを消して”しまうことがあります。
Google home(Chromchast)の場合はリモコン操作でないので機能するのですが…

・誰が操作したか
  → 誰が操作したのかを認識してその人の設定で動作する。
   カレンダーなど個人アカウントと紐づいている情報にアクセスして動作します。

・今、何をしているか

ということ、スマートスピーカーは、その機器で認識した5W1H?を条件にして、それについて前置きする音声入力することなく機能するので違和感なく使えます。このレベルまではふた昔前のAIのレベルです。今どきのディプラーニング技術をこの5W1Hの管理に組み込めば、スマート何とかはさらに進化できるはずです。

WordPress 5.2.2の修正内容 と脆弱性  

WordPress5.2.2のことを書く前に、以前に書いたWordPress脆弱性で完結できていないものを再確認します。
まず以前に書いたCVE-2017-6514について書きます。JVNのDBには2019/6/6に登録されています。これは私がここに投稿した日より2週間ほど遅い。JVNの情報から修正内容など新たに分かる情報はありませんでした。最近の動きは6/14にある脆弱性チェックツールで検出できるように強化されたことが情報公開されています。このタイミングでの情報公開なのでWordPressの修正コードなどの情報をもとにチェックルールを作成したものと推測されます。まだWordPress側では脆弱性情報が公開されていません。現在関係機関と公開に向けて調整しているのではないかと推測します。
つぎに、WordPress5.2.1の修正情報の再チェックです。前回チェックしたときに内容チェックに終始して、後で更新されることは想定していませんでした。ぱっと見た範囲では、変わっていません。この状況だと更新される可能性がありそうです。
さて、本題のWordPress5.2.2の修正内容についてです。13件のバグ修正とWordPress5.2で追加したサイトヘルス機能をちょっと更新したとリリース情報には記載されています。

#45094 #46289 #46997 #47227 #47429 #47558 #47475 なし

#46749 4.3

#46881 #46957 #46960 #47070 #47158 5.2

作り込みバージョンの記載がないもの7件、4.3が1件、5.2が5件です。
バージョンの記載がないものの修正内容は次ように、脆弱性に関係しそうな記述はありませんでした。
#45094 ダッシュボードのいくつかのエレメントでフォーカスされない
#46289 メディアモーダルでのナビゲーションアローのリンク先間違い
#46997 テーマの更新でリンクが動作しない
#47227 サイトヘルスタブの文字列修正 → 5.2での強化分の修正
#47429 更新パッケージ
#47558 更新ページのアップデート → 5.2.2で勝手にアップデートした件でしょう
#47475 typoの修正

脆弱性に該当しそうな修正内容の情報はありません。5.2.2は”セキュリティ更新”として更新が自動適用されたり、修正公開の事前情報など脆弱性対処をしたりした状況と推測される状況なので、セキュリティ修正がリポジトリには登録されたソースコードはあるが、公開された修正項目には情報がないという状態だと思われます。
 以上の状況から、別途公開済みの5.2.2か5.2.1で修正された脆弱性情報が後日公開されるものと推測されます。


それから、サービス停止を引き起こしかねないアップデートを勝手に適用するというはそれ自体がDOSの脆弱性と言ってしまってもよいのではないでしょうか。サービス停止したことを自動検知して自動リカバリするとかいろいろな対処がありそうです。

なにー、WordPress5.2.2。 やってくれたな。

どこかで、自動アップグレードする設定とかあったのでしょうか?  更新ボタンも押していないのに「WordPress5.2.2にアップグレードした」とメールが送られてきた。たしかに、WordPress5.2.2 が6/18にリリースされていて、  https://wordpress.org/news/2019/06/wordpress-5-2-2-maintenance-release/  このサイトにも勝手に適用されていた。
 ”更新”の記載には「最新バージョンの WordPress をお使いです。 今後のセキュリティ更新は自動的に適用されます。」と書かれている。 これを信じるならば、まだ セキュリティ情報は出ていないが 5.2.2で脆弱性の対処が行われたのでしょう。
以前に予想したとおりの状況ですが、勝手に修正を適用されてしまうのは想定外でした。 5.2.1の時みたいにセキュリティ強化した権限設定の影響でサービスダウンしてしまったらどうしてくれるつもりでしょうか。その辺の不満を越える危険をはらんだ問題だというならわからなくはないが、この仕掛けを基盤にして業務用に使用しているところは沢山あります。業務が止まったら大変なことになります。この辺を踏まえて設定で自動適用するかとか自動適用する脆弱性の深刻度レベルを設定できるようにするとか、工夫してほしい。

WordPress5.2.2の修正内容をチェックはまた明日。

Nginxが起動しない。そして、復旧。

監視モニター用の画面が起動しないので、ほかのページを確認すると、Nginxが動作していないと推測される状況でした。プロセスを確認するとNginxのプロセスは確かにいない。手動で、 Nginxを再起動しても、復旧しませんでした。

 こんな時は、慌てず原因調査します。nginxのログファイルerror.logには、つぎのとおり出ていました。再起動するたびにこれが出力されます。

[notice] 19828#9876: signal process started
[error] 19828#9876: OpenEvent(“Global\ngx_reload_16096”) failed (2: The system cannot find the file specified)

 logsディレクトリには ファイルnginx.pidが存在していて、このファイルには 16096と書かれていました。 上の” ngx_reload_16096 ”と同じ数字です。これはNginxのPIDです。tasklistでこのPIDが存在しないことを確認しました。また nginx.pid ファイルのタイムスタンプは2日前であり、かなり古い日付です。 この状況から、Nginxの終了処理が完了しないうちにOS再起動されてしまい、nginx.pidファイルが残留してしまったことが原因で、Nginxが起動できなくなってしまったと推測されます。
 ということで、 nginx.pidファイル を削除して、再起動します。

おや、再起動しない。ログメッセージはちょっと変わりました。

[error] 17420#13516: CreateFile() “XXXX/logs/nginx.pid” failed (2: The system cannot find the file specified)

おっといけません、” nginx.pidファイル を削除して ”いたつもりでしたが、 nginx.pid を開いたエディタを別名で保存した状態で開きっぱなしでした。 nginx.pid ファイルは存在しないけど、このエディタプロセスが nginx.pid のファイルディスクリプタをつかんでいる状態になっていました。 
 エディタも閉じて、Nginxを再起動して、無事に復旧しました。

ログメッセージをインターネット上で検索してみると、問題対処のためインストールしなおししている人がいました。復旧させるにはその方法もありますが、原因を特定しないと再発防止策の検討もできませんし、復旧に余計な時間がかかるかもしれません。そんなときはサービス停止の影響を最小化しつつ、慌てず原因調査しましょう。

いくつかの電気製品は更新のタイミング?

いろんなところで2020年問題とか、時限式ネーミングで売り込みしようとしています。どんなものなのか検証してみましょう。

今回は、「照明の2020年問題」についてみてみます

実質完全LED化する2020年問題の現状とは?」この辺の記事では、全ての蛍光灯の生産がゼロになるというわけではなそうです。

パナソニックはWeb上では、まだ健在です。切り替えの記述も特に無いようです。それよりも「 LINK STYLE LED 」を押している感じです。

東芝ライテック株式会社は、一部生産終了しているように見せています。E26金口タイプは終了しています。これは普通にE26のLED電球に置き換えるだけなので球が切れたら順次切り替えればよいでしょう。一般的な蛍光灯は普通に存在しています。

株式会社ホタルクス(旧 NECライティング株式会社)も、普通に蛍光灯はあります。このサイトに「水銀関連のお知らせ等」の情報がありました。すでに規制にひっかかる製品は製造や輸入されていないとあります。すでに基準を満たしているので、 すでに2020年問題はクリアされていることになるといってよいのではないでしょうか? 

各サイトの書きっぷりは3つほどのレベルに分類できそうです。「キャッチーなタイトルであおりを入れつつ、ぎりぎりアウトな嘘の記載で物を売ろうとしているサイト」、「真面目に現状について正しい情報を提供しようとしているサイト」、「後者をベースに将来も見据えた方向性を紹介しているサイト」の3つです。

 ということで、昔あったフロン規制と同じようにだんだんと基準が厳しくなることも想定されます。つまり、現状の代替製品も基準を満たさなくなるということが考えられます。そうであれば、機器故障とか、買い替えのタイミングで製品を切り替えるのが良いでしょう。ということで、今使っている機器についてじっくりとどんな製品に切り替えるのが良いか検討してみましょう。