Linuxカーネルは2026年9月2日にメインライン7.2.3・7.1.13がリリースされ、同時にLTS(長期サポート)版も6.18.49など複数系列が一斉更新されました。さらに2026年7月19日から20日までのわずか1日半で、カーネル向けCVE(共通脆弱性識別子)が432件も一括公開されるなど、USBやBluetoothを含む各ドライバのCVEは休みなく積み上がっています。パッチを当て続けるだけでなく、そもそも使っていないドライバを読み込まないようにして攻撃を受ける入口自体を減らす、という発想が有効です。この記事ではlsmodmodprobe.dを使い、自分のLinux機で本当に使っているデバイス以外のカーネルモジュールを洗い出して安全に無効化する手順を、初心者が実際に手を動かせる粒度で説明します。

lsmodで「今読み込まれているモジュール」を洗い出す

カーネルモジュールとは、USBメモリやBluetoothなど個々のハードウェアを動かすためにカーネルへ後から組み込む小さなプログラムのことです。まず今読み込まれているものを一覧にします。sudoは不要で、閲覧だけなので何も壊れません。

lsmod

これは「今カーネルに読み込まれているモジュールと、それが何に使われているか」を見るコマンドです。出力例(値はすべて架空のものです)は次のようになります。

Module                  Size  Used by
btusb                  86016  0
bluetooth             954368  1 btusb
uvcvideo              155648  0
usb_storage            86016  0
nvidia_uvm           1789952  2

見るべきは右端の「Used by」の数字です。btusbuvcvideoのように0になっているモジュールは、「読み込まれてはいるが、今どのプロセスからも使われていない」状態を意味します。ヘッドレス運用のサーバー(モニターもBluetoothデバイスも繋がない機体)でbluetoothuvcvideo(Webカメラ用)が並んでいたら、そのマシンには不要な可能性が高いです。逆にnvidia_uvmのように数字が入っているものは、何かが実際に使っているので触ってはいけません。

実際に繋がっているデバイスと突き合わせる

lsmodだけでは「モジュールはあるが本当に未使用か」までは断定できないので、実デバイスの一覧と照合します。

  • lsusb -t ― 現在接続されているUSBデバイスをツリー表示で見る
  • rfkill list ― Bluetoothや無線LANのアダプタが物理的に存在するか・有効化されているかを見る
  • ip link ― ネットワークインターフェース(有線・無線)の一覧を見る

例えばrfkill listを打っても何も表示されない、あるいは「no such device」の趣旨のメッセージが返るなら、そのマシンにBluetoothアダプタ自体が存在しないか認識されていないということです。それでもlsmodbluetoothbtusbが並んでいる場合、使いようがないモジュールが待機している状態なので、無効化の候補になります。

modinfoでモジュールの正体を確認する

名前だけでは判断がつかないモジュールは、無効化する前に必ず中身を確認します。sudoは不要です。

modinfo uvcvideo

出力のdescription行(「USB Video Class driver」のような説明)とalias行(対応するハードウェアIDの一覧)を見れば、そのモジュールが何のためのものかが分かります。説明を読んでも用途に確信が持てないモジュールは無効化の対象にしないこと。特にnvidia系・i915(Intel内蔵グラフィック)・xhci_hcd(USB 3.0コントローラ本体)のような、グラフィック表示やUSBポート自体を動かす基盤級のモジュールを誤って無効化すると、次回起動時に画面が映らなくなったりUSBキーボードが反応しなくなったりします。狙うのは「特定の周辺機器1つだけに対応する末端のドライバ」(Bluetoothアダプタ用、Webカメラ用、使っていない旧式ファイルシステム用など)に限定してください。

不要なモジュールをmodprobe.dで無効化する

対象を絞り込めたら、起動時に読み込まれないよう設定します。これは設定変更を伴うのでsudoが必要です。

echo "blacklist btusb" | sudo tee -a /etc/modprobe.d/blacklist-custom.conf
echo "blacklist uvcvideo" | sudo tee -a /etc/modprobe.d/blacklist-custom.conf

blacklist-custom.confは新規ファイルなので、既存の設定を壊す心配はありません。ファイルを保存しただけでは今動いているモジュールはまだ残っているので、次に今すぐ手動で外します(依存しているものが無ければ成功します)。

sudo modprobe -r btusb
sudo modprobe -r uvcvideo

「Used by」が0でないモジュールに対してこれを実行するとmodprobe: FATAL: Module ... is in useのようなエラーになり、何かが今それを使っている証拠なので、そのモジュールの無効化はここで中止してください。成功したらlsmodをもう一度打ち、一覧から消えていれば完了です。

状況

候補になりやすいモジュール

判断材料

ヘッドレスサーバー(画面・周辺機器なし)

uvcvideo, btusb, bluetooth

rfkill listで物理アダプタが無い/使っていない

USBメモリを挿す運用がない

usb_storage

USBでの外部メディア運用が業務上無い

古いファイルシステムを扱わない

cramfs, jffs2 など

modinfoの説明が用途外と確認できる

SSHのような外部公開サービス側の攻撃対策はSSH総当たり攻撃をjournalctlで即検知2026年9月版で扱っているので、あわせて確認してください。今回のモジュール整理はそれとは別レイヤーで、外から入られた後にカーネル内で使われうる「攻撃者が悪用できるコード量」自体を減らすアプローチです。

再起動後の確認と、元に戻す方法

blacklist設定は次回起動時から効きます。Ubuntu/Debianではinitramfs(起動時に最初に読み込まれる最小限のファイルシステム)にもモジュール情報がキャッシュされていることがあるため、確実に反映させるには更新しておきます。

sudo update-initramfs -u

Fedora/RHEL系では同等の操作はsudo dracut -f、Arch Linux系ではsudo mkinitcpio -Pになります。再起動後、lsmod | grep btusbのように対象モジュール名で検索し、何も表示されなければ無効化成功です。

元に戻したい場合は次の2手順です。

  1. /etc/modprobe.d/blacklist-custom.confから追加した行を削除する(またはファイルごと削除)
  2. sudo update-initramfs -uを実行して再起動する

再起動直後に急いで手動で読み込みたいだけならsudo modprobe btusbのように直接読み込むこともできます。

どこまでやるべきか

2026年5月に発覚した「Copy Fail」(9年潜伏)や同年7月の「GhostLock」(15年潜伏、権限昇格・コンテナ脱出の成功率97%)、8月の「SCTPhantom」(18年潜伏)のように、Linuxカーネルには何年も気づかれないまま存在する脆弱性が実際にいくつも見つかっています。これは「動いているから安全」ではなく、使われていないコードほど長期間チェックされずに残りやすいことを示しています。だからといって全モジュールを疑って手当たり次第に無効化する必要はありません。今回の手順は、物理的に存在しない・運用上絶対に使わないと確認できたデバイス用モジュールだけに絞って行うのが安全です。判断に迷うモジュールはそのままにして、カーネルやパッケージ自体の更新([apt list --upgradableで更新漏れ点検2026](https://nashiblog.netlify.app/ai/7esy_tera80)相当の定期チェック)で対応する方針で構いません。

まとめ

2026年9月時点でもLinuxカーネルには短期間に大量のCVEが公開され続けており、USBやBluetoothなどのドライバも例外ではありません。lsmodで読み込み済みモジュールと「Used by」の数字を確認し、lsusb -trfkill listで実デバイスと突き合わせ、modinfoで正体を確かめてから、確実に不要と分かったものだけをmodprobe.dのblacklistで無効化します。設定はテキストファイル1行の追加削除だけなので元に戻すのも簡単です。基盤級のモジュールに手を出さず、明らかに未使用の末端ドライバだけを対象にすれば、リスクを抑えつつ攻撃面を着実に減らせます。