拾ったUSBメモリを挿す前に通す小箱——「USB Neutralizer」の効く範囲と効かない範囲

テクノロジー
スポンサーリンク

出どころのわからないUSBメモリは挿さない——セキュリティの基本としてよく言われる話です。ただ、実際には守りきれない場面があります。知人から「フォーマット済みだから平気」と渡された1本、通販で買った安いノーブランド品、会社の机に持ち主不明のまま転がっている1本。使いたくて手に入れたわけではないものが、手元に来てしまうことはあります。

Novamostraという製作者が公開した「USB Neutralizer(USBニュートライザー)」は、そういうUSBメモリをパソコンに挿す前に一度通すための小さな装置です。挿すと数秒で、そのドライブのパーティション表——記録領域をどう区切って使うかを書いた管理情報——を破壊します。中のデータは全部読めなくなりますが、そのかわり、挿した瞬間にプログラムが走り出すタイプの攻撃は成立しなくなる。あとは自分でフォーマットし直せば、記録用のメディアとして使い回せます。

ただし製作者自身がはっきり断っているとおり、これは万能な対策ではありません。効く攻撃と効かない攻撃が、かなりくっきり分かれます。

装置の構成

ハードウェアの中身は拍子抜けするほど単純です。マイコンボードが1枚と、USBの分岐ケーブルが1本。基本はそれだけです。

マイコンボードとして部品表に挙がっているのは、Waveshare RP2040-Zero。Raspberry Pi Picoと同じRP2040というチップを積んだ、Picoよりひとまわり小さい互換ボードです。製作者は解説文のなかではPicoと呼んでいて、ファームウェアの書き込み手順もPicoのものとして案内されています。

もう1つの部品は2-in-1のUSB-C分岐ケーブル。ボードから伸びた線が二股に分かれ、片方から電源を取り、もう片方にUSBメモリを挿します。電源はUSB-Cの電源アダプターでも、パソコンやスマートフォンからでも構いません。

ケースは必須ではありませんが、キーホルダーサイズの3Dプリント用データがThingiverseで配布されています。組み立てにはM2の小ねじが3本と、基板のLEDの光を外まで導くための直径2mm・長さ3mmの透明アクリル棒が要ります。完成品はポケットに入れて持ち歩ける大きさです。

ソフトウェアの書き込みも定型作業です。GitHubで配布されている.uf2形式のファームウェアを落とし、ボードのBOOTSELボタンを押したままパソコンにつなぐと「RPI-RP2」という名前のドライブとして認識されるので、そこへファイルをドラッグする。コンパイル済みのバイナリが配られているので、開発環境を用意する必要はありません。

先頭と末尾だけを消す仕組み

この装置がやることは、実のところごく限られています。USBメモリの先頭34セクターと末尾34セクターを、ゼロで埋める。それだけです。

セクターというのは記録媒体を読み書きするときの最小単位で、ここでは1つ512バイト。LBA(論理ブロックアドレス)は、そのセクターに先頭から順に振られた通し番号です。つまり消えるのは先頭から17,408バイトと、末尾から17,408バイト。合わせて約35キロバイトで、64GBのUSBメモリなら全体の200万分の1ほどにあたります。

ではなぜ、そこだけで足りるのか。この領域には、記録媒体の目次にあたる情報が置かれているからです。

ストレージには、空間をどう区切って使うかを決める仕組みがあります。古くから使われているMBR(マスターブートレコード)と、いま主流のGPT(GUIDパーティションテーブル)の2つです。どのパーティションがどこから始まってどこで終わるのか、そこにどんなファイルシステムが載っているのか、起動用ならどのコードを最初に実行するのか——OSはこの情報を読んで、ドライブとの付き合い方を決めます。

製作者の説明によれば、先頭34セクターの内訳はこうです。LBA 0がMBR、LBA 1がGPTの主ヘッダー、LBA 2から33までがGPTのパーティション配列。そして末尾の34セクターには、主のほうが壊れたときに備えたGPTの予備ヘッダーと予備配列が置かれています。両端を消せば、MBRとGPTのどちらの方式で作られたドライブでも、区切りの情報が主も予備も残らない、というわけです。

結果として、OSから見るとそのUSBメモリは「パーティションのない、何も入っていないドライブ」になります。パーティションの中に仕込まれていたマルウェアも、自動実行の設定も、たどり着く道が消えるので出番がない。データそのものは物理的にはまだ残っていますが、OSはそこへ行き着けません。あとは普通にフォーマットし直せば、記録媒体として使えるようになります。

LEDの色で示す処理の進行

使い方は、電源をつないでUSBメモリを挿すだけです。画面もボタンもないので、状態はボード上のLEDの色で読み取ります。

  1. 電源を入れると、LEDが赤・緑・黄と順に光る。これが出れば装置は正常に動いている
  2. 待機中は黄色の点滅
  3. USBメモリを挿すとオレンジの点滅に変わる。消去中なので、この間は抜かない
  4. 緑の点灯で完了。抜いてよい
  5. 赤の点灯はエラー。消去できていないので、そのまま使わない

容量の大きいUSBメモリでも待ち時間は変わりません。消す量が容量に関係なく一定だからです。

ひとつ気をつけておきたいのは、緑が点いたときに保証されるのは「消去が成功した」ことであって、「このUSBメモリが安全になった」ことではない、という点です。装置は中身を調べません。危険かどうかを判定する機能はどこにもなく、決められた場所を機械的に消しているだけです。

防げない攻撃の種類

ここがこの道具のいちばん大事なところなので、省略せずに書きます。製作者もHackadayも、これで全部のUSB攻撃が防げるとは書いていません。

ファームウェアに仕込まれた攻撃。 USBメモリの中にはコントローラーチップがあり、そこには制御用のプログラム(ファームウェア)が入っています。この装置が書き換えるのはデータ領域だけで、ファームウェアには一切触れません。ここを乗っ取られたドライブは、消去しても挙動が変わらない。頻度としてはまれだが、誰にとってもありえない話ではない——というのがHackadayの見立てです。

高電圧を流す「USBキラー」。 内部で電圧を昇圧し、つないだ相手の回路を焼き切ることを目的とした装置が実在します。ソフトウェアの対策では止まりません。この装置に挿せば、壊れるのはパソコンではなく装置のほうなので被害額は下がりますが、防いだことにはなりません。なお電源をパソコンから取っていると、そのパソコンまで無事とは限らないので、独立した電源アダプターを使うほうが無難です。

隠されたパーティション。 通常の手順では見えないように作られた領域があると、消去の対象から外れる可能性があります。

ストレージのふりをした複合デバイス。 USBメモリの形をしていながら、パソコンにつなぐとキーボード(USB HID)として認識され、勝手にコマンドを打ち込む装置が実際に出回っています。記録媒体としての顔と別の顔を同時に持つタイプには、パーティション表を消しても意味がありません。

なお、Hackadayのコメント欄では、そもそも挿しただけでプログラムが走る自動実行はWindowsでもXPの時代に塞がれたはずだ、という指摘も出ていました。一方で、いまのLinuxデスクトップは挿すとドライブを自動マウントするものが多く、細工されたファイルシステムを解析する処理そのものにバグが見つかり続けている、という反論も並んでいます。パーティション表を先に潰しておくことは、この「OSに解析させる前に手を打つ」という一点においては筋が通っている、という見方です。

対象外となるパーティション方式

もう1つ、製作者が明記している範囲外があります。この装置が扱えるのはMBRとGPTの2方式だけで、LVM(複数のディスクをまとめて柔軟に区切る仕組み)、ZFSのzpool、Btrfsのサブボリューム、Intel RSTは対象外だと書かれています。

個人が持ち歩くUSBメモリでこれらに出くわすことはまずありませんが、サーバーや特殊な構成から抜き出したドライブだと話は別です。範囲外は範囲外で、装置は何も教えてくれません。

データ消去を前提とした道具

製作者は公開ページのなかで、同じ警告を2度出しています。この装置に挿した時点でパーティション表は即座に、そして元に戻せない形で壊れる。中のファイルは失われる。消してよいと決めたドライブ以外はつながないこと——と。

これは欠点というより、設計思想そのものです。中身を調べて危険なものだけ取り除く、という判断をこの装置はしません。判断を挟まないから速く、判定の見落としも起きようがない。そのかわり、中身は必ず全部なくなります。

だから使いどころは限られます。中のデータが目当てでUSBメモリを受け取ったなら、この装置は最初から選択肢に入りません。手元に来てしまったドライブを、記録用のメディアとして再利用したい場合にだけ意味がある道具です。

そして、いちばん確実なのは相変わらず「怪しいUSBメモリは使わない」ことです。道端で拾った1本を再利用したくなったとき、新品を買う数百円と、この装置でも防げない攻撃が残るリスクを天秤にかけることになります。USB Neutralizerが変えてくれるのは「このドライブは安全か」という問いではなく、「中身を全部捨てる覚悟があるか」という問いのほうだ、と考えておくのがちょうどいい距離感だと思います。

出典

コメント

タイトルとURLをコピーしました