Linuxをデスクトップにする人はそこまで多くはないためクラッキングの対象になることは少ないと思われるが、サーバーと違い普段使いの端末のため高を括って何も対策しないには多すぎるほどの個人情報を含んでいる。

どこから侵入されるか

自ら招き入れてしまう場合

  • 公式のパッケージマネージャ以外から導入したよくわからないソフトを使う場合。信頼できないところからはソフトウェアをインストールしない。特に注意すべきなのがパッケージマネージャのリポジトリが審査されているかどうかである。大抵のOS標準のパッケージマネージャ(apt, pacman, apk)はOS開発コミュニティが整備しているので変なソフトウェアが紛れている可能性は低い。しかし、pipやnpmのようなユーザーが自由にパッケージをアップロードできるようなリポジトリの場合、マルウェアが仕込まれていてもまったく不思議ではない。npmのように依存関係が複雑だと不正なコードがないことを確認するのは難しい。有名なパッケージだと依存先までチェックしているかも知れないが、大抵の開発者は調べない。
  • USB内のよくわからない実行ファイルやメールに添付されていたファイル、ウェブサイトから自動でダウンロードされたものを迂闊にも実行してしまう場合が考えられる。

ネットワーク経由で脆弱性を突かれる場合

  • オンラインゲームでゲームクライアントの脆弱性を突かれる場合もあるかも知れない。開発リソースが少ないゲームだと脆弱性対策が十分でない可能性がある。特にチートが多いようなゲームでは注意すべき。たとえばマインクラフトのサーバーでは運営の怪しいところも避けたほうが良い。
  • ウェブサイト閲覧中、ブラウザの脆弱性を突かれる場合がないわけでもない。近年のブラウザはサンドボックス環境で実行されるのが一般的でありセキュリティは非常に高いが、そのさんとボックス環境を提供するブラウザ自体に脆弱性があった場合、サンドボックスが意味をなさなくなる可能性もある。実際、2019年にSafariのサンドボックスに関連する脆弱性が見つかっている。

ネットワーク経由のログイン手段を許可している場合

  • 貧弱なパスワードにしたことにより破られる。SSHデーモンやVNCが意図せず起動していることに気づかず、外部からのリモートログインを許してしまっていることもありうる。

何が盗まれるのか

SSH秘密鍵

開発用のPCを兼ねている場合はまず間違いなくSSH秘密鍵が置かれていることだろう。公開鍵認証にする際に秘密鍵のパスコードを設定しない場合がほとんどなので、SSH秘密鍵を見られると外部のサーバーまでログインを許してしまうことになり非常に危険である。

各種サービスのパスワード+住所・電話番号・その他ネット上に登録したあらゆる個人情報

ブラウザのパスワード管理機能を利用している場合、そのパスワードデータは平文で保存されているので容易にWebサービスのユーザー名・パスワードを盗まれることになる。しかも二段階認証はここではまったく役に立たない。自分がいつもログインしている端末に自分のユーザーとして侵入されたわけであるから当然いつも使うブラウザを使って不正ログインが試みられる。ここでログアウトされていればセッションが無効化されているので二段階認証が必要になって失敗に終わるが、そんな几帳面な人はほぼほぼいないと思われるためブラウザに残っているCookieを利用してログインされてしまうだろう。通販系サイトに不正ログインされれば会員情報から、本名・電話番号・住所を特定されてしまう。実生活に直結するのでPC内にウイルスが入ったどころでは済まなくなるかも知れない。

影響範囲は

  • 自分のホームディレクトリ以下
  • 対応するSSH公開鍵を置いてある全てのサーバーの対象ユーザーのホームディレクトリ以下
  • sudoersファイルでNOPASSWDにしている場合はその端末のルート以下

対策

方策は2つある。

ただ、すでに侵入されている可能性がゼロではなく、特に気にする場合、影響範囲内の端末のOS再インストールをすべきかも知れない。特にsudoを取られたと思った場合はそうした方が良い。トロイの木馬型や、自動実行の依存ツリーのどこかに仕掛けられた場合はもう見つけようがないからである。

侵入経路を絶つこと

  • 「自ら招き入れてしまう場合」に対しては十分に自分の責任で気をつける。
  • 「ネットワーク経由で脆弱性を突かれる場合」はそのようなソフトウェアを使う場合、dockerやsnap、flatpakなどの分離された環境の中に入れて使う。
  • 「ネットワーク経由のログイン手段を許可している場合」も空いているポートを確認してファイアウォールで塞いでおく。

万が一侵入された場合の影響範囲を狭めること

  • SSH秘密鍵にはパスコードをつける(しかし非常に面倒くさくなることは確か)。
  • パスワードに関してはもはや諦めるしかないかも知れない。GoogleによるとChromeのパスワード管理機能に関して、アカウントにアクセスされた時点で負けということだからである。しかしキャッシュや履歴には住所まで残っているとは限らず、SSH秘密鍵のようにパスコードにより暗号化しておくことも必要である。この点Firefoxならばマスターパスワードを設定できるので侵入者が我々の実生活まで関わることはできなくなるだろう。(2021/01/15現在)