偶然男と話していたマック天才ウイルスのトピックに。
彼は、Macオペレーティングシステムの基盤となるFreeBSDカーネルが「ロックされている」どのウイルスも私のMacに害を及ぼすことができないと述べました。
私は彼が何を意味するのかよく理解していません。
誰かがこれを説明できますか?
答え1
彼は自分が何を言っているのか分からなかった。私の考えでは、彼は次のようないくつかのことについて話しているようです。
- ユーザーはroot以外のユーザーとしてログインしているため、ユーザープロセスは単にモジュールをロードしたりカーネルを変更したりすることはできません。 (もちろん、すべてのmacOSウイルスはこの脆弱性を回避するためにカーネルの欠陥を利用するか、単にソーシャルエンジニアリングを使用してユーザーにパスワードを入力するように促します)
- MacOSXは、10.0より前のバージョンよりもメモリ保護機能が改善されました。おそらく「天才」はMacOS 9以前を覚えていますか?ほとんどすべての最新のオペレーティングシステムにはこの機能があり、ウイルスの作成者をブロックできません。
私の考えでは、このMac Geniusがマーケティングの一部を間違って覚えている可能性があります。 MacOSXがウイルスに感染している可能性があります。 Unixファミリーシステムを使用すると、間違いなくいくつかの利点があり、BSD Userland + Machマイクロカーネルが提供する追加の保護もありますが、MacOSXカーネルがウイルスに免疫を持っていることは明らかに偽です。
答え2
彼はosx 10.8に存在しているようで、おそらく同じ意味を持つfreebsdのkern.securelevel変数に言及しているかもしれません。 fbsd man 7セキュリティでは:
The security level can be set with a
sysctl(8) on the kern.securelevel variable. Once you have set the secu-
rity level to 1, write access to raw devices will be denied and special
chflags(1) flags, such as schg, will be enforced. You must also ensure
that the schg flag is set on critical startup binaries, directories, and
script files -- everything that gets run up to the point where the secu-
rity level is set. This might be overdoing it, and upgrading the system
is much more difficult when you operate at a higher security level. You
may compromise and run the system at a higher security level but not set
the schg flag for every system file and directory under the sun. Another
possibility is to simply mount / and /usr read-only. It should be noted
that being too draconian in what you attempt to protect may prevent the
all-important detection of an intrusion.
The kernel runs with five different security levels. Any super-user
process can raise the level, but no process can lower it. The security
levels are:
-1 Permanently insecure mode - always run the system in insecure mode.
This is the default initial value.
0 Insecure mode - immutable and append-only flags may be turned off.
All devices may be read or written subject to their permissions.
1 Secure mode - the system immutable and system append-only flags may
not be turned off; disks for mounted file systems, /dev/mem and
/dev/kmem may not be opened for writing; /dev/io (if your platform
has it) may not be opened at all; kernel modules (see kld(4)) may
not be loaded or unloaded.
2 Highly secure mode - same as secure mode, plus disks may not be
opened for writing (except by mount(2)) whether mounted or not.
This level precludes tampering with file systems by unmounting
them, but also inhibits running newfs(8) while the system is multi-
user.
In addition, kernel time changes are restricted to less than or
equal to one second. Attempts to change the time by more than this
will log the message ``Time adjustment clamped to +1 second''.
3 Network secure mode - same as highly secure mode, plus IP packet
filter rules (see ipfw(8), ipfirewall(4) and pfctl(8)) cannot be
changed and dummynet(4) or pf(4) configuration cannot be adjusted.
The security level can be configured with variables documented in
rc.conf(8).
chflagsコマンドを使用して、ディレクトリまたはファイルに不変フラグと追加フラグを設定できます。カーネルセキュリティレベルを下げたり切ったりするには、単一のユーザーを起動する必要があります。警告:OSXがこの機能を最大限に活用しているかどうかはわかりませんが、使用できることだけを知っています。
注2:osxは実際にはmachカーネルに基づいています。ユーザーレイヤー項目は freebsd で提供されます。しかし、カーネルがこの変数を定義するのを見ると同じ意味かもしれないと思います。