ケン・トンプソンのトロイの木馬
ケン・トンプソンのトロイの木馬は、ケン・トンプソンがチューリング賞を受賞したときのスピーチ「Reflections on Trusting Trust」で発表したCコンパイラのハックの話で、以下の様なものである。
1. loginコマンドに特定のユーザであればログインを許可するようなコードを埋め込む。
2. 1はloginコマンドのソースコードを読めばバレるので、コンパイラに、loginコマンドをコンパイル時に1のコードを埋め込むようなコードを埋め込む
3. 2はコンパイラのソースコードを読めば分かるので、コンパイラに、コンパイラのソースコードをコンパイルする時に2のコード埋め込むようなコードを埋め込み、かつ自分自身と同じような動作するようにコードを埋め込む
- つまり、この不正なコンパイラは正常なloginコマンドのソースコードを不正なloginコマンドにコンパイルする機能と、正常なコンパイラのソースコードを自分自身と同じ不正なコンパイラにコンパイルする機能を持つ
3のコンパイラは一度不正なコンパイラのバイナリが生成されると、正常なソースコードを渡されても不正なコンパイラのバイナリを生成するので、一定期間不正なものを渡しておいて、あとは正常なソースコードに戻してあげれば、利用者は不正なコンパイラをコンパイルしてしまった後は、ソースコード上は正しく見えるコンパイラをコンパイルすると不正なコンパイラになってしまい、非常に気付きづらい。
ところで、ケン・トンプソンがこのトロイの木馬を実際に実装して配布していたのではという疑惑があるが、ネットを探す限り真偽は明確ではない。
Jargon Fileによると
The Turing lecture that reported this truly moby hack was later published as “Reflections on Trusting Trust”, Communications of the ACM 27, 8 (August 1984), pp. 761--763 (text available at http://www.acm.org/classics/). Ken Thompson has since confirmed that this hack was implemented and that the Trojan Horse code did appear in the login binary of a Unix Support group machine. Ken says the crocked compiler was never distributed. Your editor has heard two separate reports that suggest that the crocked login did make it out of Bell Labs, notably to BBN, and that it enabled at least one late-night login across the network by someone using the login name “kt”.
back-door
- ケン・トンプソンはこのトロイの木馬を実装してUNIXサポートグループのマシンに入っていたことは認めた
- しかし、配布したことは認めていない
- Jargon Fieの編集者によると、BBNへ配布されたこと、深夜にktというログイン名の誰かからネットワーク経由でログインされたという2つの別々の報告がある。
また、こちらのStackExchangeのスレッドによると
From: Ken Thompson
Date: Wed, Sep 28, 2011 at 6:27 PM
Subject: Re: Was compiler from "Reflections" ever built or distributed?
To: Ezra Lalonde
build and not distributed.
On Wed, Sep 28, 2011 at 11:35 AM, Ezra Lalonde
wrote:
> Hi Ken,
>
> I've seen various sources on the internet claiming that the "trojan horse"
> compiler you mentioned in your talk "Reflections on Trusting Trust" was
> actually built, and some further claiming that it was distributed.
>
> I'd like to know if these claims are valid.
>
> Thanks for your time.
>
> Cheers,
> Ezra Lalonde
とメールで確認をとると、「ビルドしたが配布していない」という回答だったそうだ。
しかし、最近読んでいる「Unix考古学」では普通にサポートに利用されていたらしく書かれてあったので、ちょっと気になった。
そのため当時のUnixディストリビューションには、「ken」というユーザーアカウントが残されていました。後のTuring Award受賞講演で暴露した「トロイの木馬」は、この時期に使われていたものだと推測されます。
少し別の話になるが、この発表の中で少しhackerの道徳に関して論じている。
I would like to criticize the press in
its handling of the "hackers," the 414 gang, the Dalton
gang, etc. The acts performed by these kids are vandalism
at best and probably trespass and theft at worst. It
is only the inadequacy of the criminal code that saves
the hackers from very serious prosecution
The
act of breaking into a computer system has to have the
same social stigma as breaking into a neighbor's house.
It should not matter that the neighbor's door is unlocked.
The press must learn that misguided use of a
computer is no more amazing than drunk driving of an
automobile.
当時は414 gangという青少年達がコンピュータに不正アクセスしており、実際にデータの破壊行為も行っていた。メディアは彼らをヒーローとして持ち上げている部分もあり、それで批判しているようだ。
この時代の人なので牧歌的なのかなと勝手に思っていたのだが、かなり手厳しい。
紙のコミックとKindleコミックで発売日が同じもの 2016年07月分
踊るエクスタシー【Amazon.co.jp限定描き下ろし特典付】<踊るエクスタシー> (あすかコミックスCL-DX)
- 作者: 夏下冬
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2016/07/01
- メディア: Kindle版
- この商品を含むブログを見る
恋路オーバーラン問題【Amazon.co.jp限定描き下ろし特典付】<恋路オーバーラン問題> (あすかコミックスCL-DX)
- 作者: セキモリ
- 出版社/メーカー: KADOKAWA / 角川書店
- 発売日: 2016/07/01
- メディア: Kindle版
- この商品を含むブログを見る
BLEACH モノクロ版 73 (ジャンプコミックスDIGITAL)
- 作者: 久保帯人
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
ONE PIECE モノクロ版 82 (ジャンプコミックスDIGITAL)
- 作者: 尾田栄一郎
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
To LOVEる―とらぶる―ダークネス モノクロ版 16 (ジャンプコミックスDIGITAL)
- 作者: 矢吹健太朗,長谷見沙貴
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 北内乙三
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: アミュー
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
とんかつDJアゲ太郎 7 (ジャンプコミックスDIGITAL)
- 作者: イーピャオ,小山ゆうじろう
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
キャプテン翼 ライジングサン 4 (ジャンプコミックスDIGITAL)
- 作者: 高橋陽一
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: ゆでたまご
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
チア男子!! -GO BREAKERS- 1 チア男子!!?GO BREAKERS? (ジャンプコミックスDIGITAL)
- 作者: 朝井リョウ,近藤憲一
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
ドラゴンクエスト 蒼天のソウラ 7 (ジャンプコミックスDIGITAL)
- 作者: 中島諭宇樹,堀井雄二,スクウェア・エニックス
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 古舘春一
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 渡辺恒造,萩原あさ美
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 藤本タツキ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/18
- メディア: Kindle版
- この商品を含むブログを見る
ワンピース パーティー 2 (ジャンプコミックスDIGITAL)
- 作者: 安藤英,尾田栄一郎
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 松井優征
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 川田
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
花のち晴れ?花男 Next Season? 4 (ジャンプコミックスDIGITAL)
- 作者: 神尾葉子
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 松井優征,渡邉築,青戸成
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
新テニスの王子様 18 (ジャンプコミックスDIGITAL)
- 作者: 許斐剛
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
青の祓魔師 リマスター版 17 (ジャンプコミックスDIGITAL)
- 作者: 加藤和恵
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 麻生周一
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 車田正美
- 出版社/メーカー: 集英社
- 発売日: 2016/08/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 篠原健太
- 出版社/メーカー: 集英社
- 発売日: 2016/07/04
- メディア: Kindle版
- この商品を含むブログを見る
Challenge Up! 1 (マーガレットコミックスDIGITAL)
- 作者: 鈴木手毬
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
HIGH SCORE 15 (りぼんマスコットコミックスDIGITAL)
- 作者: 津山ちなみ
- 出版社/メーカー: 集英社
- 発売日: 2016/08/25
- メディア: Kindle版
- この商品を含むブログを見る
- メディア:
- この商品を含むブログを見る
Romsen Saga 5巻 (デジタル版ビッグガンガンコミックス)
- 作者: ゴツボ☆マサル
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
これは愛じゃないので、よろしく 1 (マーガレットコミックスDIGITAL)
- 作者: 湯木のじん
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 中河友里
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
たとえ灰になっても 1巻 (デジタル版ヤングガンガンコミックス)
- 作者: 鬼八頭かかし
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
なないろ革命 5 (りぼんマスコットコミックスDIGITAL)
- 作者: 柚原瑞香
- 出版社/メーカー: 集英社
- 発売日: 2016/08/25
- メディア: Kindle版
- この商品を含むブログを見る
ほしとくず-Don't worry, Be happy!- 2 (マーガレットコミックスDIGITAL)
- 作者: 星谷かおり
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
まんまるポタジェ 4 (マーガレットコミックスDIGITAL)
- 作者: あいざわ遥
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
やはり俺の青春ラブコメはまちがっている。?妄言録? 9巻 (デジタル版ビッグガンガンコミックス)
- 作者: 渡航(小学館「ガガガ文庫」刊),ぽんかん?,佳月玲茅
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
カントリーガアル「トライアンソロジー?三面鏡の国のアリス?」より 1巻 (デジタル版ビッグガンガンコミックス)
- 作者: 07th Expansion(竜騎士07×田中ロミオ),たつひこ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
キミとだけは恋に堕ちない 2 (りぼんマスコットコミックスDIGITAL)
- 作者: 酒井まゆ
- 出版社/メーカー: 集英社
- 発売日: 2016/08/25
- メディア: Kindle版
- この商品を含むブログを見る
ケダモノ彼氏 13 (マーガレットコミックスDIGITAL)
- 作者: 藍川さき
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
トライボロジー 3 (マーガレットコミックスDIGITAL)
- 作者: 石田拓実
- 出版社/メーカー: 集英社
- 発売日: 2016/08/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガール 6巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガールCONTINUE 1巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガールCONTINUE 2巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガールCONTINUE 3巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガールCONTINUE 4巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ハイスコアガールCONTINUE 5巻 (デジタル版ビッグガンガンコミックスSUPER)
- 作者: 押切蓮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
モーメント 永遠の一瞬 5 (マーガレットコミックスDIGITAL)
- 作者: 槇村さとる
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
悪魔にChic×Hack 1 (マーガレットコミックスDIGITAL)
- 作者: 種村有菜
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
君死ニタマフ事ナカレ 3巻 (デジタル版ビッグガンガンコミックス)
- 作者: ヨコオタロウ,森山大輔,倉花千夏
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
群青にサイレン 3 (マーガレットコミックスDIGITAL)
- 作者: 桃栗みかん
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
今日もアイツは丸かった。 (マーガレットコミックスDIGITAL)
- 作者: 湯木のじん
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 足立原光莉,小野友里恵
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
僕に花のメランコリー 3 (マーガレットコミックスDIGITAL)
- 作者: 小森みっこ
- 出版社/メーカー: 集英社
- 発売日: 2016/10/25
- メディア: Kindle版
- この商品を含むブログを見る
路地裏しっぽ診療所 4 (マーガレットコミックスDIGITAL)
- 作者: 斉藤倫
- 出版社/メーカー: 集英社
- 発売日: 2016/08/25
- メディア: Kindle版
- この商品を含むブログを見る
やめてみた。 本当に必要なものが見えてくる暮らし方・考え方 (幻冬舎単行本)
- 作者: わたなべぽん
- 出版社/メーカー: 幻冬舎
- 発売日: 2016/07/26
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 沖田×華
- 出版社/メーカー: 幻冬舎
- 発売日: 2016/07/26
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 夏西七
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/27
- メディア: Kindle版
- この商品を含むブログを見る
魔法科高校の劣等生 九校戦編 5巻 (デジタル版GファンタジーコミックスSUPER)
- 作者: 佐島勤,石田可奈,きたうみつな
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/27
- メディア: Kindle版
- この商品を含むブログを見る
魔法科高校の劣等生 来訪者編 1巻 (デジタル版Gファンタジーコミックス)
- 作者: 佐島勤,石田可奈,マジコ!
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/07/27
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 藤子・F・不二雄
- 出版社/メーカー: 小学館
- 発売日: 2016/06/24
- メディア: Kindle版
- この商品を含むブログを見る
うちはサスケの写輪眼伝 2 (ジャンプコミックスDIGITAL)
- 作者: 平健史,岸本斉史
- 出版社/メーカー: 集英社
- 発売日: 2016/08/29
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 佐々木恵
- 出版社/メーカー: 集英社
- 発売日: 2016/08/29
- メディア: Kindle版
- この商品を含むブログを見る
最強ボスザル伝アラシ!!! 1 (ジャンプコミックスDIGITAL)
- 作者: 小栗かずまた
- 出版社/メーカー: 集英社
- 発売日: 2016/08/29
- メディア: Kindle版
- この商品を含むブログを見る
遊☆戯☆王ARC-V最強デュエリスト遊矢!! 1 (ジャンプコミックスDIGITAL)
- 作者: 友永晃浩,スタジオ・ダイス
- 出版社/メーカー: 集英社
- 発売日: 2016/08/29
- メディア: Kindle版
- この商品を含むブログを見る
ImageMagickの脆弱性(ImageTragick)
piyokangoさんが詳しいが自分も少し調べたので。
どういうアプリが攻撃される?
画像をアップロードしてImageMagickを使って変換するみたいなサービスが狙われるかな。
どういう仕組みで攻撃しているのか
ImageMagickはいろんな種類のファイルを処理できるが、そのためにcoderとdelegateという機能がある。coderはライブラリとして各種ファイルを変換する機能、delegateは適切なcoderがなかった時に、外部コマンドを用いて変換する機能である。
CVE-2016-3714(コード実行の脆弱性)については、delegateの機能で外部コマンドを呼び出す時にsystem関数を利用していたが、shellの特殊文字のエスケープを実施していなかったことが主な原因。
例えば、
convert https://www.imagemagick.org/image/wizard.png wizard.png
を実行すると、imagemagickのサイトからwizard.pngをダウンロードしてwizard.pngというファイルに保存している。
内部的には次のような処理を行っている。
ImageMagickはconvertの変換元(第一引数)をHTTPSという種類のファイルとみなす。HTTPSのcoderは存在しないので、delegateを探す。delegateはdelegates.xmlに記述されており、CentOS6では以下のものが該当する
<delegate decode="https" command=""curl" -s -k -o "%o" "https:%M""/>
ImageMagickはcommandの部分のコマンドを実行する。%Mには入力ファイル名が渡される。しかし%Mを置換する際にshellの特殊文字のエスケープを実施していないので、
convert 'https://www.imagemagick.org/image/wizard.png"|ls "-la' wizard.png
を実行すると
"curl" -s -k -o "wizard.png" "https://www.imagemagick.org/image/wizard.png"|ls "-la"
が実行され、lsも実行されることになる。
これだけだと、普通のアプリだと外部の入力をそのままconvertの引数にしないから大丈夫じゃないかと思える。が、この処理を画像ファイルの中に隠すことができる。
ImageMagickにはSVGとMVG(ImageMagick独自のテキストベースの画像フォーマット)のcoderがあり、それらのフォーマットは外部のURLやファイルを参照できる。例えば以下のMVGファイルは外部URLhttps://example.com/image.jpgを含む。
push graphic-context viewbox 0 0 640 480 fill 'url(https://example.com/image.jpg)' pop graphic-context
この外部URL参照に対してもcoder/delegateが実行される。今回の場合はHTTPSフォーマットだとみなされ、HTTPSのdelegate commandが実行され、任意のプロセスを起動できる。
さらに、ImageMagickはそのファイルがどのフォーマットのファイルかについて
- マジックバイト
- format:filename形式のprefix
- 拡張子(filename.suffix)
の優先順位でチェックする。SVGやMVGはマジックバイトがチェックされるので、拡張子でpngなどを指定していたとしても、中身がSVG/MVGならばSVG/MVGと解釈されてしまう。
そのため、MVGファイルをアップロードする→convertでファイルを処理しようとするとMVGのcoderが実行される→URLを参照している部分でコードを実行可能ということになる。
その他の脆弱性についてだが、shellコマンドのエスケープの問題はないものの、これらもMVG内に外部のファイルやURLを参照することにより、ファイル/URLの読み書きを行ってしまうことが原因となっている。
修正版は?
最新版(7.0.1-1)をインストールすると防げるようである。
実際に動かしてみると一部しか防げない(×は防げていない)のでpolicy.xmlで防ぐ必要がある。
CVE | 内容 | 防げる? |
---|---|---|
CVE-2016-3714 | delegateによるRCE脆弱性 | ○ |
CVE-2016-3718 | SSRF(URLに対するGET) | × |
CVE-2016-3715 | ephemeralプロトコルによるファイルの削除 | × |
CVE-2016-3716 | mslプロトコルによるファイルの移動 | ○*1 |
CVE-2016-3717 | labelプロトコルによるファイルの読み込み | × |
回避策は?
脆弱性公式サイトによると以下のどちらかで防げる。
- マジックバイトをチェックする
- policy.xmlに以下を指定
<policymap> <policy domain="coder" rights="none" pattern="EPHEMERAL" /> <policy domain="coder" rights="none" pattern="URL" /> <policy domain="coder" rights="none" pattern="HTTPS" /> <policy domain="coder" rights="none" pattern="MVG" /> <policy domain="coder" rights="none" pattern="MSL" /> <policy domain="coder" rights="none" pattern="TEXT" /> <policy domain="coder" rights="none" pattern="SHOW" /> <policy domain="coder" rights="none" pattern="WIN" /> <policy domain="coder" rights="none" pattern="PLT" /> </policymap>
coderとかdelegateの周りの処理の流れがよくわからん
私もよくわかっていないが、以下のような感じかな
RedHatの回避策は微妙?
ImageMagick Filtering Vulnerability - CVE-2016-3714のResolveのMitigationのことだよね。うん、これは微妙だ。RHEL 5では使えないし、明示的にHTTPとFTPを禁止している理由が判らない。私がコードを眺めた限りでは、HTTPとFTPはURLが提供しているようだ。やれやれ。
policy.xmlが使えない古いImageMagickでImageTragickを回避する (2) - Qiita
私がコードを読んだ感じだとcoderのpolicyチェックはcoder名に対して行うのではなく、フォーマットに対して行うのでそんなに悪くない気がするかな。MagicCore/constitute.cのReadImage関数の部分
if (IsRightsAuthorized(domain,rights,read_info->magick) == MagickFalse) { errno=EPERM; (void) ThrowMagickException(exception,GetMagickModule(),PolicyError, "NotAuthorized","`%s'",read_info->filename); read_info=DestroyImageInfo(read_info); return((Image *) NULL); }
read_info->magickにはcoder名ではなくフォーマット名が入る。
実際にMVG内にHTTPのURLを書いた場合はHTTPのcoderをnoneにしないと防げなかった。
ただ、そもそもMVGをnoneにした時点で防げる話ではあるのだけども。
修正内容はどんなもの?
いまいち理解しきれていないが今回の脆弱性に関して7.0.1-1までに以下の修正が入ったっぽい。
その後の修正
今回の脆弱性関係でまだいくつか修正しているっぽい。
- Update to the latest autoconf / automake · ImageMagick/ImageMagick@e87116a · GitHub
- Use %F instead of %M for zero-configuration delegates · ImageMagick/ImageMagick@dcdd212 · GitHub
- Remove support for internal ephemeral coder. · ImageMagick/ImageMagick@b831d90 · GitHub
- ephemeral coder自体がなくなった。
- Less secure coders require explicit reference (e.g. mvg:my-graph.mvg) · ImageMagick/ImageMagick@a58ba05 · GitHub
- マジックバイトでMVGかどうかを判断しなくなった。つまり、明示的にmvgファイルだと拡張子やprefixで指定しないとmvgとして処理されなくなる。
*1:なぜ防げているのかよくわからない
紙のコミックとKindleコミックで発売日が同じもの 2016年06月分
あせびと空世界の冒険者(5)【特典ペーパー付き】 (RYU COMICS)
- 作者: 梅木泰祐
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2016/05/13
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 中村キヨ,中村珍
- 出版社/メーカー: 締切出版
- 発売日: 2016/06/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: ナガトカヨ
- 出版社/メーカー: 株式会社宙(おおぞら)出版
- 発売日: 2016/06/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 小田原みづえ
- 出版社/メーカー: 株式会社宙(おおぞら)出版
- 発売日: 2016/06/01
- メディア: Kindle版
- この商品を含むブログを見る
熱愛プリンス お兄ちゃんはキミが好き4 (NextFcomics)
- 作者: 青月まどか
- 出版社/メーカー: 株式会社宙(おおぞら)出版
- 発売日: 2016/06/01
- メディア: Kindle版
- この商品を含むブログを見る
D.Gray-man 25 (ジャンプコミックスDIGITAL)
- 作者: 星野桂
- 出版社/メーカー: 集英社
- 発売日: 2016/06/03
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 葉那
- 出版社/メーカー: 集英社
- 発売日: 2016/06/03
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 天野洋一
- 出版社/メーカー: 集英社
- 発売日: 2016/06/03
- メディア: Kindle版
- この商品を含むブログを見る
Levius/est[レビウス エスト] 2 (ヤングジャンプコミックスDIGITAL)
- 作者: 中田春彌
- 出版社/メーカー: 集英社
- 発売日: 2016/06/17
- メディア: Kindle版
- この商品を含むブログを見る
しんそつ七不思議 3 (ヤングジャンプコミックスDIGITAL)
- 作者: かふん
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
たいようのマキバオーW 18 (ジャンプコミックスDIGITAL)
- 作者: つの丸
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 鈴木マナツ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
デストロイ アンド レボリューション 8 (ヤングジャンプコミックスDIGITAL)
- 作者: 森恒二
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
バイオーグ・トリニティ 9 (ヤングジャンプコミックスDIGITAL)
- 作者: 大暮維人,舞城王太郎
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
ビン?孫子異伝? 20 (ヤングジャンプコミックスDIGITAL)
- 作者: 星野浩字
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
プリマックス 5 (ヤングジャンプコミックスDIGITAL)
- 作者: 柴田ヨクサル,蒼木雅彦
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
ボーイスカート 2 (ヤングジャンプコミックスDIGITAL)
- 作者: 篠原知宏
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
ボクガール 10 (ヤングジャンプコミックスDIGITAL)
- 作者: 杉戸アキラ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
ラジエーションハウス 1 (ヤングジャンプコミックスDIGITAL)
- 作者: 横幕智裕,モリタイシ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
潔癖男子!青山くん 5 (ヤングジャンプコミックスDIGITAL)
- 作者: 坂本拓
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
刻命のゴーレム 3 (ヤングジャンプコミックスDIGITAL)
- 作者: bose
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: ソウマトウ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
惰性67パーセント 2 (ヤングジャンプコミックスDIGITAL)
- 作者: 紙魚丸
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: あずまゆき
- 出版社/メーカー: 集英社
- 発売日: 2016/07/19
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 毛魂一直線
- 出版社/メーカー: 講談社
- 発売日: 2016/06/20
- メディア: Kindle版
- この商品を含むブログを見る
Re:ゼロから始める異世界生活 第二章 屋敷の一週間編 3巻 (デジタル版ビッグガンガンコミックス)
- 作者: 長月達平(「Re:ゼロから始める異世界生活」KADOKAWA/MF文庫J刊),楓月誠,大塚真一郎
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
あたりまえのぜひたく。 魚愛が試される、それが煮魚。 (幻冬舎単行本)
- 作者: きくち正太
- 出版社/メーカー: 幻冬舎
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
ななしのアステリズム 3巻 (デジタル版ガンガンコミックスONLINE)
- 作者: 小林キナ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
悪魔も踏むを恐れるところ 3巻 (デジタル版ガンガンコミックスJOKER)
- 作者: 吉辺あくろ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
久住くん、空気読めてますか? 3巻 (デジタル版ガンガンコミックスJOKER)
- 作者: もすこ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
神恋―カミコイ― 2巻 (デジタル版ガンガンコミックスJOKER)
- 作者: 忍
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
戦×恋(ヴァルラヴ) 1巻 (デジタル版ガンガンコミックス)
- 作者: 朝倉亮介
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
天賀井さんは案外ふつう 2巻 (デジタル版ガンガンコミックス)
- 作者: 城平京,水野英多
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
不機嫌なモノノケ庵 6巻 (デジタル版ガンガンコミックスONLINE)
- 作者: ワザワキリ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
壁にメリー.com 2巻 (デジタル版ガンガンコミックスONLINE)
- 作者: コバシコ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/22
- メディア: Kindle版
- この商品を含むブログを見る
ONE Final ―未来のエスキース― 7 (マーガレットコミックスDIGITAL)
- 作者: 宮川匡代
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
ReReハロ 10 (マーガレットコミックスDIGITAL)
- 作者: 南塔子
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
てのひらシャーベット 3 (マーガレットコミックスDIGITAL)
- 作者: 藤宮あゆ
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
はるはなのみの 1 (マーガレットコミックスDIGITAL)
- 作者: 河井英槻
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 星谷かおり
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 田島みみ
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
バディゴ! 5 (りぼんマスコットコミックスDIGITAL)
- 作者: 黒崎みのり
- 出版社/メーカー: 集英社
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
ロマンチカ クロック 10 (りぼんマスコットコミックスDIGITAL)
- 作者: 槙ようこ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 森月あめ
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
圏外プリンセス 7 (マーガレットコミックスDIGITAL)
- 作者: あいだ夏波
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
思い、思われ、ふり、ふられ 3 (マーガレットコミックスDIGITAL)
- 作者: 咲坂伊緒
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
女の子って。 4 (りぼんマスコットコミックスDIGITAL)
- 作者: カナヘイ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
斉藤さん もっと! 4 (マーガレットコミックスDIGITAL)
- 作者: 小田ゆうあ
- 出版社/メーカー: 集英社
- 発売日: 2016/06/24
- メディア: Kindle版
- この商品を含むブログを見る
椿町ロンリープラネット 4 (マーガレットコミックスDIGITAL)
- 作者: やまもり三香
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
猫田のことが気になって仕方ない。 8 (りぼんマスコットコミックスDIGITAL)
- 作者: 大詩りえ
- 出版社/メーカー: 集英社
- 発売日: 2016/07/25
- メディア: Kindle版
- この商品を含むブログを見る
- メディア:
- この商品を含むブログを見る
美食探偵 明智五郎 2 (マーガレットコミックスDIGITAL)
- 作者: 東村アキコ
- 出版社/メーカー: 集英社
- 発売日: 2016/09/23
- メディア: Kindle版
- この商品を含むブログを見る
ブレイブスター☆ロマンティクス 1巻 (デジタル版ヤングガンガンコミックス)
- 作者: 極楽院櫻子
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/25
- メディア: Kindle版
- この商品を含むブログを見る
真実の魔法少女 5巻 (デジタル版ヤングガンガンコミックス)
- 作者: 備長炭
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/25
- メディア: Kindle版
- この商品を含むブログを見る
Dance with Devils -Blight- 2巻 (デジタル版Gファンタジーコミックス)
- 作者: 岩崎大介(Rejet),グリモワール編纂室,中瀬理香,前田浩孝(Rejet),七都サマコ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/27
- メディア: Kindle版
- この商品を含むブログを見る
K RETURN OF KINGS 1巻 (デジタル版Gファンタジーコミックス)
- 作者: 汐田晴人,古橋秀之(GoRA),GoRA・GoHands
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/27
- メディア: Kindle版
- この商品を含むブログを見る
アインシュタインの怪物 1巻 (デジタル版Gファンタジーコミックス)
- 作者: 宮永龍
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/27
- メディア: Kindle版
- この商品を含むブログを見る
キューティクル探偵因幡 17巻 (デジタル版Gファンタジーコミックス)
- 作者: もち
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/27
- メディア: Kindle版
- この商品を含むブログを見る
死神と銀の騎士 4巻 (デジタル版Gファンタジーコミックス)
- 作者: イロノ
- 出版社/メーカー: スクウェア・エニックス
- 発売日: 2016/06/27
- メディア: Kindle版
- この商品を含むブログを見る
Apache Struts2の脆弱性(CVE-2016-3081)
JVNVU#91375252: Apache Struts2 に任意のコード実行の脆弱性
ぐぐるとみつかるPOCで1番簡単そうなのを解説してみる
http://www.example.com/sample.action?method:%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%2C%23test%3D%23context.get%28%23parameters.res%5B0%5D%29.getWriter%28%29%2C%23test.println%28%23parameters.command%5B0%5D%29%2C%23test.flush%28%29%2C%23test.close&res=com.opensymphony.xwork2.dispatcher.HttpServletResponse&command=%23%23%23Struts2%20S2-032%20Vulnerable%23%23%23
脆弱性のあるStruts 2.3.28で作成したActionに対しDMIを有効にした状態でStrutsのActionのURLに上記のようなクエリパラメタつけてアクセスすると
###Struts2 S2-032 Vulnerable###
と表示される。
DMIって何かというとmethod:XXXとクエリパラメタに与えて上げると、ActionのXXXメソッドを実行してくれるというもの。単純にメソッドとして評価すれば良いのだが、何故かOGNL(Javaのオブジェクトを操作可能な簡易言語)を記述可能である。
上記POCのmethod:以下の部分をURLデコードすると以下になる
method:#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,#test=#context.get(#parameters.res[0]).getWriter(),#test.println(#parameters.command[0]),#test.flush(),#test.close&res=com.opensymphony.xwork2.dispatcher.HttpServletResponse&command=###Struts2 S2-032 Vulnerable###
OGNLを知らないと分かりづらいので、これを1つずつ説明する。
#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,
#は変数への代入や参照時に使う記号であり、@class@fieldは静的フィールドclass.fieldを取得する。_memberAccessはognl.OgnlContextのフィールドであり、OGNLを評価する時にどのような処理を許すかどうかを設定する。普通にアクセスしようとすると特定のクラスやパッケージへのアクセスを除外するようになっている。struts.xmlのstruts.excludedClassesなどで指定している。例えば、java.lang.Runtimeなどにはアクセスできないようだ。
#test=#context.get(#parameters.res[0]).getWriter(),
parametersはクエリパラメタを表す。そのため、parameters.res[0]はcom.opensymphony.xwork2.dispatcher.HttpServletResponseである。contextはOGNLのコンテキストOgnlContextであり、コンテキストにおけるキーcom.opensymphony.xwork2.dispatcher.HttpServletResponseに対応する値はサーブレットのレスポンスオブジェクトでありそのWriterを取得している。
#test.println(#parameters.command[0]), #test.flush(), #test.close
クエリパラメタcommandの値を出力して、Writerをflush,closeしている。最後に()がついていないのはこれがDMIであるので元々XXXを指定した時にXXX()になるように()をくっつけるコードになっているためである。
で、今回の修正はOGNLとして評価する部分は修正しておらず、DMIで実行するメソッドのクリーンを実施している。
--- a/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.java @@ -136,7 +136,7 @@ public class DefaultActionMapper implements ActionMapper { put(METHOD_PREFIX, new ParameterAction() { public void execute(String key, ActionMapping mapping) { if (allowDynamicMethodCalls) { - mapping.setMethod(key.substring(METHOD_PREFIX.length())); + mapping.setMethod(cleanupActionName(key.substring(METHOD_PREFIX.length()))); } } }); @@ -148,7 +148,7 @@ public class DefaultActionMapper implements ActionMapper { if (allowDynamicMethodCalls) { int bang = name.indexOf('!'); if (bang != -1) { - String method = name.substring(bang + 1); + String method = cleanupActionName(name.substring(bang + 1)); mapping.setMethod(method); name = name.substring(0, bang); }
cleanupActionNameは以下のようなメソッド
/** * Cleans up action name from suspicious characters * * @param rawActionName action name extracted from URI * @return safe action name */ protected String cleanupActionName(final String rawActionName) { if (allowedActionNames.matcher(rawActionName).matches()) { return rawActionName; } else { LOG.warn("Action [{}] does not match allowed action names pattern [{}], cleaning it up!", rawActionName, allowedActionNames); String cleanActionName = rawActionName; for (String chunk : allowedActionNames.split(rawActionName)) { cleanActionName = cleanActionName.replace(chunk, ""); } LOG.debug("Cleaned action name [{}]", cleanActionName); return cleanActionName; } }
allowedActionNamesは[a-zA-Z0-9._!/\\-]*なので今回のOGNL式からは#や()などが削除される。そのためまともなOGNLとして評価されず例外が発生するようになっている。
ソースコードにコメントを書くかどうか
プログラムにコメント書かない文化もあるよって話 - NZ MoyaSystem
一部同意できる部分もあるのだけども、やっぱりある程度コメントは書いたほうが良いと思う。書きすぎはよくないが。
自分が書いたほうが良いと思うのは以下の部分かな
- 公開している関数/定数
- 複雑なアルゴリズムを実装している部分
- なぜこのコードなのかを書いたほうが良い部分
- 外部ライブラリのバグなどで、おかしなコードになっているけど正しいコード
- ある仕様に決めたけども、いろいろ議論がありうるもの
「なぜ」の部分も書いてもらった方が、仕様を変えるかどうか迷った時に参考になる。
きれいなコードを書けばコメント書かなくても良いという意見だけども、そもそもその綺麗さにはプログラミング言語/ライブラリで書けることという限界値があって、現在のプログラミング言語/ライブラリはそこまで完璧なものだとは思っていない。ので、どうしてもコメント書かないとわからない部分がでてくるよなと。
また、読む側の視点がぬけているよね。コメントはあったほうが読む速度があがるだろうし、邪魔にならない程度ならばあった方が良いだろう。ある程度のコードを読む能力が高い人を常に確保できるのであれば省略しても良いけど現実は結構難しい。書く側がこれぐらい読めるよと思っていても、それは常に読んでいるからバイアスがかかっていて、読む側は内心文句言いながら読んでいるかもしれない。
あと気になった部分。
プログラムの仕様書にあたるドキュメントについては、詳細かつ簡潔(1チームにつき Word 数十ページ程度)にまとまったものが共有されており、仕様変更が発生した場合には随時メンテナンスが入っています。コーディング担当者がメンテを忘れても、レビュー時にたいてい誰かが指摘してくれるので、メンテナンス漏れが起きることは少ないです。
仕様書のメンテナンスコストがコメントのメンテナンスコストって同じじゃないのかな。どこに書くかが違うだけで。
結局コメント書いてるじゃんと思われるかもしれませんが、「なぜこの修正を行ったのか」「修正前後で動作がどう違うのか」などの情報は、プログラムそのものではなくコミットやチケットに付随する情報のため、プログラムのコメントとして残すのは不適切です。
「なぜこの修正を行ったのか」「修正前後で動作がどう違うか」はコミットログで良いと思うが、「現状なぜこのコードになっているのか」はソースコードに書くべき話かな。
--no-preserve-rootオプション
サーバ業者が" rm -rf / "で全サーバを誤消去、復旧法をQ&Aサイトに尋ねる。実は書籍執筆のための「引っ掛け問題」 - Engadget Japanese
種明かしをすると、現在の UNIX(Linux)システムでは管理者権限で "rm -rf / " を実行しても警告メッセージが表示され、すぐにはファイルを削除しないようになっています。そのうえで、本当に削除をするなら"-no preserve"オプションを付けて実行することになっています。このことをどれだけのユーザーが知っているか、マルサラは試したわけです。このとき、質問へのアクセス数は述べ14万に達していましたが、このことを指摘する人はほとんどいませんでした。
--no-preserve-rootオプションのことだと思うけども、そういえばそんなオプションあったなあ。
これいつからなんだろと調べてみるとcoreutilsのChangelogを調べると結構古い
2003-11-09 Jim Meyering
* Use automake-1.7.9. Regenerate dependent files.
* src/rm.c: Support new options: --preserve-root and --no-preserve-root.
http://git.savannah.gnu.org/cgit/coreutils.git/tree/ChangeLog-2005#n7384
* src/chown.c: Likewise.
2003-12-20 Jim Meyering
* Version 5.1.0.
http://git.savannah.gnu.org/cgit/coreutils.git/tree/ChangeLog-2005#n7238
どうも2003年末の5.1.0かららしい。
ちなみにrmだけでなくchownやchgrpも--no-preserve-rootオプションがある。所有者/グループを全部変えられると動かなくなるしなあ