出張おはき゛ろく

Twitterで書ききれないことを書こうと思います。

PHPのDoS脆弱性(CVE-2015-4024)キツくない?

2015/05/14にリリースされたPHP 5.4.41/5.5.25/5.6.9で修正されたDoS脆弱性がある。

Fixed bug #69364 (PHP Multipart/form-data remote dos Vulnerability). (CVE-2015-4024)

バグレポートに細かい話(原理から再現手順まで)が載ってて、要は細工したリクエストを送るだけで、しばらくCPUリソースを浪費するって話と読み取った。リクエストパラメータをパースする段階で起こるので、脆弱性のあるバージョンのPHPをHTTPサーバ経由で実行できる環境が全て影響を受けるんじゃないかなあ。

数年前に話題になったHashdosと、攻撃のお手軽さも影響も大差はない気がするんだけど、あんまり騒がれていない気がする。なんでなんだろう。
いやまぁHashdosはいろんな処理系に共通してたから話題になったんだろうけど。

PHPのアップデートができない場合、IPSとかWAFとかでそれっぽい通信を弾くとか、Hashdosと同様にPHPのpost_max_size設定かHTTPサーバの設定でリクエストのサイズを制限するとかしかないような気がする。原理からするとinput_max_varsは関係なさそう。

あと一ヶ月くらいバグレポートが放置されてたのがおもしろいと思う。

==2015/06/30 追記==

ディストリの対応を1ヶ月ほどチェックしてたんだけど、Red Hat Enterprise Linuxの一部パッケージは対応されたっぽい。対応するCent OSのリポジトリにもパッチが来ているはず。
access.redhat.com | CVE-2015-4024

  • RHEL 7 の php パッケージ(5.4系)
  • RHEL 7 の php55-php パッケージ(5.5系)
  • RHEL 7 の rh-php56-php パッケージ(5.6系)
  • RHEL 6 の php55-php パッケージ(5.5系)
  • RHEL 6 の rh-php56-php パッケージ(5.6系)

RHEL 5 の php パッケージ(5.1系)や RHEL 6 の php パッケージ(5.3系)はまだ脆弱なまま。
っつうか対応する予定あるのかなこれ……。

==2015/07/10 追記==

以下パッケージも対応された。

  • RHEL 6 の php パッケージ(5.3系)
  • RHEL 7 の php54-php パッケージ(5.4系)
  • RHEL 6 の php54-php パッケージ(5.4系)

Tiarraをsystemdで起動する

CentOS 7が出たのでsystemdを勉強中。シェルがゴリゴリ書かれていたinitより超わかりやすいと思う。

Tiarraをとりあえずサービスにしたかったので、とりあえず動いたものを残しておく。
Tiarraの本体とtiarra.confは/usr/local/tiarraインスコされているものとして、ExecStart、ExecReload、ExecStopさえ書かれていれば動くような雰囲気。前提サービスとしてsyslogとnetworkくらいは書いておく。たぶんホントは色々足りてない。

ExecStopをkill以外で穏便に済ませる方法がわかりません。。。

vi /lib/systemd/system/tiarra.service
[Unit]
Description=Tiarra server daemon
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/perl /usr/local/tiarra/tiarra --config=/usr/local/tiarra/tiarra.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

あとはサービス登録?

systemctl enable tiarra.service
systemctl start tiarra.service

実行時の標準出力ログはsystemdに拾われて/var/log/messagesに出るのかな。

イノセントアイがエーゼット・ビュークリアになっていた件

3年くらい前に買った目薬で、結構気に入ってたんだけど、それ以来見かけたことがない目薬があって、ずっと気になっていた。

箱も容器も捨ててしまって名前がわからないんだけど、3,4色のバリエーションのあるパッケージだったことと、容器のキャップが特徴的だったことだけ覚えていた。それっぽい箱はよく見かけるんだけど、何かが違ってて全然発見できない。

ところがつい先日、日頃入ったことのないドラッグストアで、日頃見ない3種類のパッケージをたまたま発見してしまった。もしやと思って買ってみたら、見覚えのあるキャップ。間違いないこれだ。

俺が探していたのは、ゼリア新薬のイノセントアイだった。

箱捨てちゃったんでネットで拾った画像だけど、こんなやつ。

f:id:hakaikosen:20130724001426j:plain

f:id:hakaikosen:20101021071134j:plain

こんな特徴的なやつなのになんで見つからなかったのかと思うところもあり、イノセントアイで検索してみたら、製品情報が出てこない。ゼリア新薬のサイトで検索しても出てこない。

どうやらこれ絶版になってるっぽくて、同じ成分でエーゼットかビュークリアにリネームされたようだ。

で、パッケージを引用という名目のもと転載するけど、これが同じシリーズの目薬だと思える人いるのかな?AZのロゴすら違うよ。

f:id:hakaikosen:20130724001958j:plainf:id:hakaikosen:20130724002005j:plainf:id:hakaikosen:20130724002008j:plainf:id:hakaikosen:20130724002002j:plain

ビュークリアは一部統一されているが、やっぱりよくわからんものが多い。ALクールなんて容器が違うわ。

f:id:hakaikosen:20130724002015j:plainf:id:hakaikosen:20130724002028j:plainf:id:hakaikosen:20130724002024j:plainf:id:hakaikosen:20130724002021j:plainf:id:hakaikosen:20130724002012j:plainf:id:hakaikosen:20130724002230j:plain

イノセントアイ自体も、もしかしたらビュークリアの一部くらいしか統一されてなかったのではないかと思う。

少なくとも俺は、この箱を見てイノセントアイだと気付くことはとてもできなかった。ブランドのリネームと統一感のないパッケージングが重なるととても不幸なのではないかと思った。

ワタミの外食事業の離職率は、厚生労働省公表の宿泊業・飲食サービス業の離職率を下回っているのか

ワタミに対する個人的な見解は別として、論理的に気になったので辿った話。

「ブラック企業」と呼ばれることについて

ワタミの外食事業の離職率(平成22年4月入社社員の3年以内離職率42.8%)は、厚生労働省公表(平成23年統計、以下同じ)の宿泊業・飲食サービス業の離職率(同48.5%)を下回っています。

これに対するツッコミとして、下のtogetterを見た。

ワタミの離職率等の情報開示に関する疑問点

平成24年4月入社」が「平成22年4月入社」に改変されたのに何の周知もない、というのが誠実さに欠けるのはまぁこの際おいといて、このコメントが気になった。

わたなべ美樹氏の現在のブログでは、「ワタミの外食事業の離職率(平成22年4月入社社員の3年以内離職率42.8%)は、厚生労働省公表(平成23年統計、以下同じ)の宿泊業・飲食サービス業の離職率(同48.5%)を下回っています」となっている。厚生労働省公表の宿泊業・飲食サービス業の離職率は、平成21年4月入社は48.5%、平成22年4月入社は40.1%、平成23年4月入社は24.8%となっている。比較する年度を間違えたのか、数値を間違えたのか?

これが本当なら、異なる基準の離職率を比較した上で、他より低いとのたまっていることになるので、すごく悪質だと思う。こう修正しなければならない。

ワタミの外食事業の離職率(平成22年4月入社社員の3年以内離職率42.8%)は、厚生労働省公表(平成23年統計、以下同じ)の宿泊業・飲食サービス業の離職率(同40.1%)を上回っています。

でもそもそも、この数値たちの根拠がどこなのかわかんないうちは断言できないですよね。デマは怖いですね。大本の冒頭の記事も、(ソース貼れとまでは言わないけど)どの統計資料の話なのかはっきり書いてくれてないし、とりあえずは調べるしかない。

と思ってググったら厚生労働省の資料になんとか辿り着いた。URLが2010/01とかなってて紛らわしいけど、平成23年度までのデータは反映されてる。こんだけ階層深い資料に簡単にアクセスできる検索エンジンのすばらしさよ。

新規学卒者の離職状況に関する資料一覧

実数を色々書いてある資料もあるんだけど、問題の%については「大学」の「大分類」の「グラフ」を見ればいいかな。これ。2ページ目の右下のグラフが宿泊業・飲食サービス業になってる。

めんどくさいんで貼っつけるけど、togetterのコメントの数値は正しいようですね。

f:id:hakaikosen:20130601235014p:plain

だめじゃん論理破綻してんじゃん。と思ったけど、これだと平成22年度の新卒者はまだ3年経ってない。比較してる時点が違うし、そもそもワタミの方は算出方法も明らかでないので、そもそも比較できない数値ですね。togetterのコメントに乗せられてしまった。

最大限好意的に仮定して、今回公開された「42.8%」という数値が、今年3月末時点の平成24年度での計算で出てきた数値なら、「新規学卒者の離職状況に関する資料一覧」の平成24年度版が公開されれば、単純比較できるのかもしれない。その時その値が42.8%を上回っているか下回っているかまだ確定しない。

手っ取り早くこの問題を明らかにするなら、平成21年4月入社社員の3年以内離職率を公表して戦うしかないですよ。ここまで自信満々に主張しているのだから、きっとこの値が既に48.5%を下回っているに違いない。

通常ドロップ率が下がると、レアドロップ率が上がる。

とりあえず、「ぬすむ」コマンドを実行した際に、以下の判定が行われることは間違いない。

 1.ゴールドを盗めるかどうか

 2.通常ドロップアイテムを盗めるかどうか

 3.レアドロップアイテムを盗めるかどうか

ここでは仮に、1の成功率は64/256、2の成功率は32/256、3の成功率は1/256とでもしようか。

確率は古式ゆかしき乱数テーブルでの抽選だと仮定しよう。どういう抽選でも対して変わらんだろう。

これらの抽選が独立試行だとしても、一回の抽選で引いた乱数で全て決まるとしても、ここでは大した問題ではない。

 

問題は、1と3の成功率が据え置きのまま、2の成功率が下がった場合に、「レアドロップを盗みやすくなった」という表現が適切かどうか。

 

「盗みやすくなった」という表現は、いくつかの解釈ができる。

 A.レアドロップの期待値が増加した。

 B.時間あたりの試行回数が増加し、レアドロップの成功まで必要な時間が減少した。

一般的に考えればAの解釈しかないが、元の回答にもあるように、DQ10は一回何かを盗んだ敵からは、戦闘終了まで何も盗めなくなる。通常ドロップでの盗む成功が減少すれば、その分時間あたりの試行回数は増えるため、Bの結果になることがありえる、というのが元の回答の趣旨。

 

ここで、通常ドロップの成功率は下がっており、レアドロップの成功率は据え置きという発言を前提として、修正前後の成功率を以下のように仮定する。なお、ゴールドと通常ドロップは区別する必要はない。

 修正前:ゴールドまたは通常 64/256 レア 1/256

 修正後:ゴールドまたは通常 32/256 レア 1/256

 

盗む1回あたりのレアドロップ期待値には変化はない。このため、Aの解釈は否定される。

 

時間あたりの試行回数を考えるため、戦闘条件を仮定し、1戦闘あたりの所要時間を算定する。

 ・対象モンスターは1体のみ発生する。

 ・モンスターの討伐から次のエンカウントまでには10秒かかるものとする。

 ・モンスターの討伐には、盗むの成否に関わらず、平均5ターンかかるものとする。

この仮定に基づけば、1戦闘あたり5回盗むを試行することができ、1戦闘にかかる時間は35秒となる。

 

これでちょっと計算してみよう。

 

まず修正前

確率 ミス 通常 レア
74.61% 25.00% 0.39%
試算 ミス 通常 レア
1ターン目 74.61% 25.00% 0.39%
2ターン目 55.67% 18.65% 0.29%
3ターン目 41.53% 13.92% 0.22%
4ターン目 30.99% 10.38% 0.16%
5ターン目 23.12% 7.75% 0.12%
最終結果 23.12% 75.70% 1.18%

 

修正後

確率 ミス 通常 レア
87.11% 12.50% 0.39%
試算 ミス 通常 レア
1ターン目 87.11% 12.50% 0.39%
2ターン目 75.88% 10.89% 0.34%
3ターン目 66.10% 9.49% 0.30%
4ターン目 57.58% 8.26% 0.26%
5ターン目 50.16% 7.20% 0.22%
最終結果 50.16% 48.33% 1.51%

 

あれ、ふつうにレアドロップの確率上がった。。。

まともに確率論を考えるとそういうような気はするけど、体感的によくわかんないですね。

 

この表の意味するところを整理すると、通常を引いてしまうとその時点で非レアが確定してしまって次の抽選ができないので、レアを目的とするなら通常はミスより悪い結果と言える。ミスであれば次の抽選でレアを引く可能性がある。ということで、通常ドロップの確率が下がればレアドロップの確率が上がっている。うむ。

実際は1ターン目でぬすむが成功したら可及的すみやかに戦闘終了させると思うので、時間あたりの確率はどうなんでしょうね。そうなると実は、通常ドロップ率が高いほうが試行回数は多いということになるのか?ちゃんと計算する気なくなってしまった。

 

元の回答の内容が、一般論として通用するのかはまだまだ疑問。