40183


ウイルス、ないしマルウェアは、

  1. ユーザーの意図しないうちに
  2. ユーザーの不利益になるような挙動をするプログラムがインストールないし実行されること

だと考えられます。以下、この状態になることをマルウェア感染と言います。

ウイルス、ないしマルウェアの話題は Mac よりも Windows
でよく聞く話な気がしています。上で考えたように、割と定性的にマルウェア感染を捉えるならば、それぞれの OS
のシステム構成に応じて、それの起こりやすさが推測できるのではないか、と考えています。

### 質問:

  * OS のシステムアーキテクチャ的に、 Mac よりも Windows の方がマルウェア感染を引き起こしやすい要因はありますか? 
    * それとも、そもそもアーキテクチャ的な要因はあまりなく、単に利用者層の違いから来るものですか?
    * もしくは、自分の観測範囲にバイアスがかかっていて、実際には、今はもう Mac でも Windows と同じぐらいマルウェア感染はよくある事象で話題にもなっていたりしますか?
  * プログラミングとの関連で言うと、システム的に攻撃者に利用されやすいところがどこにあるかを知ることで、システム・アプリケーションのプログラミング(ないしその設計)を行うにあたって、よりセキュアに行えるようになるのではないか、という意図があります。


CC BY-SA 3.0
2017-12-11T02:04:54.577
40177
2017-12-11T07:25:14.083
754
question
windows security macos
システムアーキテクチャ的に、 Windows でウイルスは狙いやすい要因はある?


jailbreakやコンシューマゲーム機のCFWが開発されてる訳だし  
システム的な抜け穴自体はWindows以外のOSでも発見されている事になる

単にWindows以外のPCに旨味がないってだけかと


CC BY-SA 3.0
2017-12-11T06:35:34.757
40182
2017-12-11T06:35:34.757
26230
40177
answer


Mac も Windows も Unix/Linux
も人が作ったものですから同じように欠陥/不具合があってしかるべきで、アーキテクチャ面では大差ないと考えるべきでしょう。実際 Mac
向けのマルウエアはいくつも報告されています。例を挙げても良いのですが広告になりそうなのでリンク略。

マルウエアを作る側からすると最小の努力で最大の成果を挙げたいわけです。 Mac ユーザと Windows ユーザでは後者のほうが多いので Windows
を狙うことが多いだけです。なので相対的に Mac のマルウエアは目立たないだけで０ではない。

> 利用者層の違い

Mac や Linux では通常の作業を管理者権限で行う人は少ないはず。一方で Windows XP
の頃はめんどくさいという理由で管理者のまま通常作業をしていた人が少なからずいました。そのため感染させるのが簡単だったのですが、それは利用者層の違いというべきか意識の違いというべきか？まあ
Linux ユーザでも無節操に `sudo` してしまえば同じことですけど。 Vista 以後は UAC
のおかげで感染しにくくなっているはずです。まあそれでもユーザが無節操に「はい」を押すと意味がないわけで結局ユーザのリテラシーの問題かも。

> システム的に攻撃者に利用されやすいところがどこにあるかを知る

そりゃもちろん「外部とのインターフェイス」部です。バッファオーバーフローするような長い入力とか `シングルクォート OR 1=1` のような典型的 SQL
インジェクション攻撃とか。  
あるいはプラットフォームによらず広く使われているソフトなんか狙い目です。たとえば OpenSSL は Mac Windows Linux
で共通に使われていてソースコードも公開されていて、それでも Heartbleed 脆弱性なんてものを出しちゃいました。

> よりセキュアに

Web API の話でしょうか？それとも一般的にプログラムの話でしょうか？プログラム一般の話であるとして  
\- 言語仕様をより安全な方向に振っている言語を使う  
\- C/C++ など性能優先、安全はプログラマが担保する言語を使うなら仕様だの挙動だのを「理解して使う」しかないでしょう。

有名な [php](/questions/tagged/php "'php' のタグが付いた質問を表示") 5.3.7 の `crypt` 関数の脆弱性事件  
<https://blog.tokumaru.org/2011/08/php537crypt.html>  
は仕様を確認しないで修正してしまった例です。

個人的には Yuki Inoue さんの質問は「答えがひとつでない」ものばかりなので微妙に SO
向きではない気がします。もう少し「短く答えられる」よう工夫していただけるとうれしいかと。  
# この回答もこんなに長くなっちゃいましたし・・・


CC BY-SA 3.0
2017-12-11T07:25:14.083
40183
2017-12-11T07:25:14.083
8589
40177
answer