破局を回避するためソフトウェアに多様性を 98
ストーリー by Oliver
手元でランダム要素入りでコンパイル 部門より
手元でランダム要素入りでコンパイル 部門より
maia 曰く、 "毎日新聞記事によれば、ウイルスの一斉蔓延などを防ぐため、ソフトウェア一本一本に「個性」を持たせる研究が、全米科学財団(NSF)の援助により、カーネギーメロン大学とニューメキシコ大学で行われている。
NSFのプレスリリースによれば(以下抄訳)「大自然と生物多様性にヒントを得て(中略)コンピュータ科学者達は、コンピュータシステムの "cyber-diversity" を研究している。これにより、ウイルス、ワーム、その他のサイバーアタックをかわすことができる」「ソフトウェアの一部分を自動的に変化させる事によって、コンピュータの脆弱性を減らす事を目指している」「従来の手法は(中略)異なる開発チームによって異なるバージョンを作り出すものであった(中略)。そのような人手をかけた手法は、コストと時間がかかる」「自動化された手法ならば、より経済的に、より多様な多様性を作り出せる可能性がある」
このアイデアで思い出すのは、以下の台詞である:「その破局を回避するために、多様性やゆらぎを持ちたい訳ね」(GHOST IN THE SHELL)"
ゆらぎ (スコア:5, 興味深い)
OpenBSD 3.4 に(も?)入れられたこれは、
同一個体の中で「ゆらぎ」を積極的に作り出す試み、
というわけか。
http://www.openbsd.org/ja/34.html
> 攻撃に対するより大きな抵抗力を持たせるため、
> ELF プラットフォーム上の ld.so(1) は、
> ライブラリをランダムな順序でロードするよう
> になりました。
根絶を回避するためウィルスに多様性を (スコア:4, おもしろおかしい)
Re:根絶を回避するためウィルスに多様性を (スコア:1)
「現在のウィルスに対抗するための多様化プログラム」
になぞらえて
「現在の対ウィルスに対抗するための多様化ウィルス」
について述べただけなんですけどね。
もしかして、私が
「多様化プログラムは多様化ウィルスに侵される」
って言ってるように見えました?
ジェネレーターの気分次第? (スコア:4, おもしろおかしい)
○月×日:大雨。車に泥をかけられた。いじけているのでバブルソート。
○月×日:北海道の大自然に触れる。バケツソートを使ってみる。
○月×日:新しい靴を買った。コームソートを使ってみる。
・・・って感じなの?
マクロの基本は検索置換(by y.mikome)
Re:ジェネレーターの気分次第? (スコア:1)
○月×日:新しい彼女とデート。コンドームを使ってみる。
激しくオフトピだし・・・シモネタもあるけどID
Re:ジェネレーターの気分次第? (スコア:1)
○月×日:新しい彼女とデート。インサートソート
ってくればよかったのに。
マクロの基本は検索置換(by y.mikome)
Re:ジェネレーターの気分次第? (スコア:1)
修行が足りませんでした。
次回こそはと心に誓っております。
Re:ジェネレーターの気分次第? (スコア:1)
これが性なんです。
揺らぎVirus (スコア:3, 参考になる)
昔マイクロコードレベルで進化するプログラムの研究があった記憶が(terraなんとか)
NSF [nsf.gov]より引用
こんどは医者(エンジニア)が様々な症状(エラー・ログ)をみて、同じ病原菌(ウイルス)と判断することになるのかな。
自然界で環境に対応するのが早く、耐性を身につけるのが早いのは微生物。Virusです。Virusの目的は増殖と破壊。増殖はホストに頼らなくてもいいですし、適当なコードでソフトウェアは破壊できます。コンピュータのソフトウェアが揺らぎを持つようになれば、コンピュータVirusは、さらにその揺らぎへの適応能力を考えて開発されるでしょう。そうなったとき、破局は免れても、どうやって検知する?どうやってパッチする?
#案外、単にマシンごとにプログラムを暗号化(署名)=>複合化 するだけだったりして。:P
Re:揺らぎVirus (スコア:2, 興味深い)
tierra [atr.co.jp]ですね。
http://www.his.atr.co.jp/ecm/tierra-doc/japanese/tierra.html [atr.co.jp]
に日本語で分かりやすく書かれています。
この命題なんかは大変興味深いです。
Re:揺らぎVirus (スコア:2, 興味深い)
祈りをささげたり、呪いをかけたり、踊ったりします。
Re:揺らぎVirus (スコア:1)
あ、増殖でなくて繁殖だった。
「破壊」ってのが増えたことが進化なのか退化なのか迷ってしまいますね。
#ニュースを見ていてふとそんな気になりました。
Re:揺らぎVirus (スコア:1)
"繁殖を目的"でなく,"繁殖行為を目的"では?
自動的に変化したらメンテは? (スコア:3, 興味深い)
既に変化済みかどうか確かめてから、また何に対応した変化なのか見極める作業が必要になるかと思うのですが。
#メンテナンスフリーなんてことはないんでしょ?
Re:自動的に変化したらメンテは? (スコア:3, おもしろおかしい)
メンテナンスムリー
# ま、もともとという話もあ(ばきっ
Re:自動的に変化したらメンテは? (スコア:1, 参考になる)
プログラムのロジックが変わるわけじゃなくて、メモリ上のアライメントのような、コンパイラサイドの情報に揺らぎを持たせればいいんじゃないですか? デバッグの時はオフにして、リリースビルド時にこの揺らぎオプションを付与してビルドすればいいんです。
だけど、(1)バイナリ配布だと意味が無いですね。これはJVMやCLRのようなランタイムがあるソフトウェアであれば問題ないですが。(2)揺らぎのアルゴリズム部分がオープンソースだと(たとえばGCCで実装する場合)、揺らぎ方を推定できてしまうので、ウィルスでもある程度予測可能じゃないかなぁ。
Re:自動的に変化したらメンテは? (スコア:1)
コードが変わっても動作が変わらないことを確認しなければならない。
とりあえず、"問題が起きたら再インストールしてください"で誤魔化すしか。
そのうち正常動作するコードが当たるでしょ(ぉ
# メンテナンス・フリー: 壊れたとき、直せないこと
# http://hp.vector.co.jp/authors/VA000092/jokes/
# ACなのでAC
新時代到来 (スコア:3, おもしろおかしい)
Re:新時代到来 (スコア:1)
「あいつは仕事が遅い」
「個性なんです。」
「あいつの仕事にはミスが多い」
「個性なんです。」
「あいつ馬鹿か?」
「個性なんです。」
普通こんなやつ首になると思う。
Re:新時代到来 (スコア:1)
適任なソフトを導入した時点で即刻馘。
# ACなのでAC
多様性ウイルス出現? (スコア:2, すばらしい洞察)
どんどん変化してウイルスソフトでの検出が追いつかない
新種のコンピュータウイルスがでてくるかもね
本物のウイルスが変異するように
Re:多様性ウイルス出現? (スコア:2, 参考になる)
Polymorphic Virus
http://computers.yahoo.co.jp/dict/security/virus/worm/3042.html
Re:多様性ウイルス出現? (スコア:1)
コンピュータウイルスはそういった事は関係無しに複製を作ろうとするため、
破壊活動を行い既存の方法で対処できない自己変化型のコンピュータウイルスが作られたら、
過去に無いほどの被害が発生するかもしれませんね。
# 今回の技術を使ったマシンならパターンの偶然の一致により、共生するかもしれない。(いや、冗談です)
Re:多様性ウイルス出現? (スコア:1, 興味深い)
そういう説があるというのは認めますが、むしろ「自然宿主を絶滅させるウイルスは生き残ることができない」というのが正しいかと。
一時的にそういうウイルスが出てこないことを保証するものではありませんし、また自然宿主(本来の宿主)以外の種に感染した場合にはその種を絶滅させてもウイルス自体の生き残りには問題ないのですから。
Re:多様性ウイルス出現? (スコア:1, おもしろおかしい)
生物にヒントを得るなら (スコア:1, すばらしい洞察)
多様性で「サイバーアタックをかわすことができる」って社会全体を見た場合の話でしかなくて、
個人的には「かわせる場合もある」程度でしかないし、網がゴミで溢れかえる状況はかわらんのではないのか?
Re:生物にヒントを得るなら (スコア:2, 興味深い)
アレロパシー物質を分泌して、他種の植物の、種子の発芽を抑制するそうです。
それをヒントに。
自分と機能がかぶるソフトウェアを勝手にアンインストールしたり。
新たに別の競合しそうなソフトウェアがインストールされそうになったら妨害したり。
わざと動作を重くして他のソフトウェアからユーザ様の寵愛を受けるチャンスを奪ってみたり。
なにはともあれ、ウイルスごときには負けない、
苛酷な生存環境にも耐え抜く強靭なソフトウェアに育ってほしいものです。
Re:生物にヒントを得るなら (スコア:1)
いや、今でも十分そーいうアプリケーションソフトがあったりするけど
それこそ「人類のように環境が許さないほどの人口密度を自ら環境を作り替えて可能にしてしまう」みたいに、個別の変化の過程でOSにまでチョッカイ出すソフトウエアが出ない事をただただ祈るばかり…
# 爆言のち漏電中… :D
Re:生物にヒントを得るなら (スコア:1)
Re:生物にヒントを得るなら (スコア:1)
#といっても普通、免疫っていって想像するのとはちょっと違うんだけどね。
Re:生物にヒントを得るなら (スコア:2, 興味深い)
概念を持たせた処理系がありますね。この機能を活用した事ないです
けど。
汚れていない => 自分で作った自分の一部
汚れている => どっかから入力された異物。あるいはそれに汚染されたもの
ガーベージコレクタの要領で、汚れっぱなしで放置されてるデータを
片っ端から検出していく仕組みってのは面白いかもしれない。
# アレルギーに注意
Re:生物にヒントを得るなら (スコア:3, 参考になる)
man perlsec をご参照のこと
Re:生物にヒントを得るなら (スコア:2, 参考になる)
> 概念を持たせた処理系がありますね。
Rubyがそうですね。オブジェクトが外部との入出力から得られた文字列の場合、そのオブジェクトがtainted(汚染されている)であるとされます。セーフレベルによりますが、汚染されたオブジェクトを特定のメソッド(Dir.chdirなど)の引数としては使用できません。使用するためには、内容をチェックしてuntaintする必要があります。
Re:生物にヒントを得るなら (スコア:1)
サニティチェックをかけるというのはどうでしょうか?
例えば、マシン固有の情報を使って計算したスタック内容のハッシュ値を一緒に
スタックに積むようにして、それが一致しなければプログラムを停止させる。さ
らに、監視スレッドは動作時にOSがプロセス毎に管理するウォッチドッグタイマー
をリセットする。OSは、そのタイマーが0になった場合、監視スレッドが正常に動
作していないとみなしてプログラムを停止する。
これぐらいで、バッファオーバフロー攻撃には対処できそうな気が。
#なんか、組み込みプログラムだとバグ対策で今でもやってそうな気が。
もっと過激にやるなら、関数呼出しごとにスタックをページ単位で割り当てて、
その前後のアドレスを参照不可にして、バッファオーバーフローしたらアドレス
違反にしてしまうとか。メモリと論理アドレス空間の無駄使いになりますが。
結局検知だけを効率無視でやるなら、そんなに難しくないような気がします。
多様性について (スコア:1)
もちろん個体別に遺伝子のわずかな違いはあるのでしょうけど、基本的にある種類に属するために必要な遺伝子は大部分を占める訳ですよね。そんな共通部分を攻撃することは簡単だと思うんですけど。
もちろんいまのソフトウェアは多様性ゼロな訳で、わずかな多様性を持つことで、生存率は0から0より大きくなって、飛躍的な進歩ともいえますけど・・・
あるソフトを多様化するというのは、個体間の差を持つということで、その種のソフトのベンダーを増やすってのが、生物の種類を増やすってことですよね。
Windows上の多様性があればいいのか? (スコア:1, 興味深い)
・・これが最大の問題なんじゃないのか?
たしかにWindowsの広範な普及は事実なのでこのようなアプローチも
必要だとは思うが、
Linux、*BSD、MacOSといった「OSレベルの多様性」を正しく認識して
普及を認める方が前向きではなかろうか。もちろんLinux、*BSD、MacOSその他のOSが
破局→絶滅するということもあるだろうが、それは自然淘汰ということでやむなし。
Re:Windows上の多様性があればいいのか? (スコア:1)
私も、この部分は「なんだ?」と思ってしまいました。。。
ていうか、そもそも今回紹介されている手法は、ウイルス問題を「解決」するためのものではなくて、未解決のウイルスの蔓延を _ある程度抑制_ するためのものなのだと思います。
それに今回のニュースから MS の寡占に話を持っていく意図が良く分からないです。
むらちより/あい/をこめて。
Re:Windows上の多様性があればいいのか? (スコア:1)
そりゃ こんなのでクビになったり [srad.jp]したらいやですから……とか言っちゃったりしたりして
たしかこの人も多様性を説いたんですよね…手順に問題があったかもしれないけれど
多様性 (スコア:1)
これならすぐ出来そうですな。
スタートアップを消すウイルスなんか効果的。
セキュリティホールまで多様性持たせようとすると、アルゴリズムを変えた同じ機能のサービスデーモンプログラムが沢山必要になるので、現実的ではないような気がします。
LINUXはデストリビューションの多さで多様性を持っていますね。
Re:多様性 (スコア:1)
マイクロソフトはその多様性を 欠点としてとらえたい [sourceforge.net]ようで…
たしかにGnome使ったりKDE使ったりTerminal使ったりとかでユーザ環境が固定されていない状態で商用のアプリとかを出すとマニュアルとかサポートとか大変だろうなぁってのはわかるんですけどね
……にしても… oliver?
Re:多様性 (スコア:1)
install時に入っているコマンドなんかの組合わせだったら動いてしまうわけですよね?
だとしたら Shell Scriptとかだと防ぎようがないと思いますし, gcc でコンパイルしてそいつを実行!みたいなことされたらアウトな気がします
そして何より後からapplicationを入れるのが大変そうですが…
署名をつけることが容易だとしたら あまり意味ないですしねぇ
BOFという文字列で違うものを考えたけどID
Re:効果があるの? (スコア:4, 興味深い)
ちなみに上で参照している論文は97年のもので,ごく基本的なアイデアを紹介しているに過ぎない短い論文です.その後(今後)もっと違う方法が導入されている(される)可能性もあります.
Re:効果があるの? (スコア:1)
多様性の実現をどのレベルで実現するのか……
1アプリレベル->ワードとか一太郎とか
2ライブラリレベル->ロード順を変えたり、メモリアロケートをずらしたり
3コードレベル->InputとOutputの相関だけ維持した静的変化
->コンパイラがランダムに最適化処理かな?
4コードレベル->動的に自身を生成し続ける(ポリモフィック?)
4とかは自身をウィルスって判定されそうだな(苦笑
やなぎ
字面じゃなく論旨を読もう。モデレートはそれからだ
Re:効果があるの? (スコア:1)
ちょっと違うかもしれませんが fjのDelegateに関するスレッド [google.com]なんかを見ると スタックの底を動かすapplicationの例として見ることが出来るかもしれませんね
Re:効果があるの? (スコア:2, 参考になる)
スタック上にある戻りアドレスをバッファオーバーフローで書き換えられるのが危険なのなら、
スタック上のメモリを確保する場合に、処理系がランダムなオフセットを加えて確保すると、かなり高い強度で防御できる。
(メモリは無駄になるけど)という方法を以前に見たような気がする。
Re:効果があるの? (スコア:1)
というような事態を解決するのが先ではないだろうか。今々の世の中。
忘れ去られがちな存在。(オフトピ) (スコア:1)
from もなか
フラッシュ型の脅威 (スコア:2)
Re:フラッシュ型の脅威 (スコア:1)
管理者の都合で 『うちの会社のPCは全てhoge型だー』とか 決められちゃって 多様性なにそれ? って状況になりそう
組織でのLinuxのdistributionも似たような状況な気がしますが
Re:ウイルスに対抗できたとしても (スコア:1)
あるいは多様化のアルゴリズムがバグ持ちで、奇形が増殖したりとか。