Chrome向けのゼロ幅文字チェッカー拡張が登場
「ゼロ幅文字」による追跡攻撃を検出する、Google Chrome拡張が登場
Marco Chiappetta氏は、Chrome向けに「Replace zero-width characters with emojis」という拡張を公開しました。ゼロ幅文字を絵文字に置き換える機能をもので、セキュリティ研究者Tom Ross氏の記事を読んで思いついたそうです。
ゼロ幅文字(ゼロ幅スペース0x200bなど)は人の目には見えませんが、データとしてはそこに存在します。例えば2種類のゼロ幅文字を0と1とみなして、ユーザ名文字列のビット表現にするとか、もっと単純にIDとすれば、適当な数(IDなら32個(32bit符号なし整数)か、せいぜい64個もあれば通常は十分でしょう)のゼロ幅文字で「見えないユーザ識別子」を表現できます。
たとえば、文章中にこれを入れておけば、「本来秘匿すべき情報を漏らしたのは誰か」が、(コピペした場合は)特定できることになります。簡易型の電子透かしですね。アイデア元の記事では、ゲームに関する隠しておきたい情報が洩れていた時に漏洩元の特定に使われたようです。
なお、ゼロ幅文字は本来はちゃんとした意味(例えばゼロ幅空白なら改行位置の制御)がある文字であり、それを置き換えることで本来の文章が適切に表示されなくなる可能性もありますので、この拡張を使う場合は、そこを意識する必要があります。
チートなど、一部の人が飛びつきそうな情報の肝心な部分(パスコードなど)にゼロ幅文字を入れて公開したら、誰がそれを使ったか一発で分かるかもしれませんね。
Pwn2Ownに表れる新たなリスク
もう1か月ほど前の件ですが、意外に報じられてない感じなので。
FirefoxやEdge、Safariが、有名なPwn2Ownで陥落
Pwn2Ownは毎年恒例のハッキングコンテストで、主催側が定めたターゲットをハックできた人に賞金が支払われます。
しかし、2018年大会では、異変がありました。2億円以上(正しくは200万ドル)用意された賞金のうち、3000万円程度(26万7000ドル)しか支払いがありませんでした。
これは、中国政府が国内のセキュリティ研究者に対してPwn2Ownなどの国外でのセキュリティイベントへの出席を事実上禁止した(らしい)ことが背景にあります。このところ、Pwn2Ownでは大半の受賞者が中国勢だったため、それがごっそり抜けた結果、受賞者そのものが激減したというわけです。
Pwn2Ownはあくまで一例にすぎません。今後、中国国内で発見される脆弱性情報はますます国外に出づらくなり、結果的に対応が遅れる自体が懸念されます。
関連
米国、令状なしでクラウド上のデータを取得可能とするCLOUD法を可決
米連邦議会、予算案に隠してCLOUD法を可決
米連邦議会は、連邦政府のシャットダウン期限が迫る中、ギリギリで予算案を可決しましたが、これにはCLOUD(Clarifying Lawful Overseas Use of Data Act)法という別の法案が組み込まれていました。予算案を急ぐ中、こちらの審議や修正は一切なかったそうです。
この法律は、法執行機関がクラウドサービス提供者から、ほぼ無制限にデータを得られるようにするものです。
CLOUD法では、データ要求に際して令状や相応の理由が不要なのです。対象は米国民のデータで、物理的なサーバの所在地に関わらず適用されます。
また、この法律は大統領に他国との間でデータ共有協定を結ぶ権限を与えています。協定締結国は、米国にある、その国の国民に関するデータを、やはり令状など不要で入手できます。この仕組みにより、締結国と米国が相互に融通する形で、米国政府が他国民のデータを取得(あるいはその逆)できると予想されます。
当然ながらEFFなどは反対しています。
有力IT企業で相次いでセキュリティ担当者が退職へ
Google、Facebook、Twitterのセキュリティ関係役員、退職を発表
- FacebookのCSO、Alex Stamos氏(8月末で退職との報道、今後の予定は不明)
- Googleの情報セキュリティ部門のdirector、Michal Zalewski氏(3月末で退職、今後の予定は不明)
- TwitterのCISO、Michael Coates氏(恐らく近日、次はセキュリティ関連で起業を予定)
中でも、FacebookのStamos氏は、Yahooの元CISOで、米政府(FBIなど)から同社メールをいつでも検索できる機能の追加をめぐって戦った人でもあります(CEOのMarissa Mayer氏が政府に従う判断をして、Stamos氏はYahooを去りました)。
NYTimesの大元の記事によれば、彼はFacebookに対するロシア政府の干渉について、より多くを公開し、今後の改善のため再構築することを主張したものの通らず、配置転換で部下の数も120人から3人まで減ったとのこと。ただし、この減少と退職申し出の前後関係は不明です。
ちなみに、NYTimesの情報源には現在のFacebook従業員も含まれます。同社は社内で非常に多くの情報を共有する割にリークが少ないのですが、今回の件では内部で意見が割れている可能性があるのかもしれません。
インターネットに露出したetcd、ただのHTTPアクセスで膨大なデータを露呈
「etcdの、セキュリティ自爆スイッチ」
CoreOSの分散KVS、etcdは、後方互換性のために管理機能の認証がデフォルト無効です。しかもRESTful APIで利用できます。
この結果、デフォルト設定のetcdがインターネットに露出していると、中のデータは外から丸見えになってしまいます。etcdは公式トップで「分散システムの最重要データのための」と書いてあるわけで、実際冒頭の記事の筆者がShodan検索したところ、2284のetcdデータベースが見つかり、中にはCMSやRDBの認証情報が多数見つかりました。
しかも、これらのデータ収集は1行のHTTP GETでできてしまいます。筆者は750MBのデータをスクリプトで収集したそうです(もちろん、それを使ったアクセスはしてないとのこと)。
さらに、このAPIは書き換えも可能なため、様々な悪意ある攻撃が可能です。
運用中なら、etcdがネットに露出してないか確認しましょう。していたら即封じて、システム全体について、侵入の有無についての(できれば専門家の)調査がされるといいですね。
暗号通貨のハードウェアウォレットLedgerの脆弱性
Ledgerのセキュリティモデルを破る
耐タンパ性を謳う暗号通貨ウォレット、15歳のハッカーにより裏口を開けられる
PCに接続して暗号通貨を安全に保管する、と謳うLedgerのハードウェアウォレットの脆弱性についての記事です。冒頭は、発見者本人が書いた記事です。
Ledgerデバイスに関する注意点
基本的には、デバイスが悪意ある者に直接触れられなければ安全ですので、管理が大事です。
経緯
発見者はLedger社に2017年11月に脆弱性について連絡し、攻略用ソースコードも提供しました。
これを受けてLedger社は、先日Nano S製品向けファームウェア1.4.1を公開しました。
しかし、その後Ledger社のCEOがReddit上で行った説明が不正確として、脆弱性の発見者が自ら脆弱性について説明したのが現在です。
Ledger Nano S の構成
Nano Sは、ST社のST31H320「セキュア・エレメント」を基盤としています。しかし、ST31H320はディスプレイもUSBもサポートしません。代わりにNano Sは同じST社の32bitマイコンSTM32F042K6を搭載しています。これが全体のコントローラとなっている、というわけです。
冒頭記事の上から3分の1程度に簡単なブロック図が載っていますが、ここで着目すべきは、(ST31H320の能力から当然ですが)USBもボタンもディスプレイも、あくまでマイコンにつながっており、セキュア・エレメントは、そのマイコンにだけつながっているという点です。
マイコンは特にセキュアなわけではない汎用型で、しかもJTAGピンが背面に見える状況です。
実は、セキュア・エレメントの役割は、マイコン側のプログラムが真正のものかどうか判定することだけなのだそうです。これは「利用者がPCにNano Sを挿した時、マイコンが起動時シーケンスとして書き換え可能領域のバイナリをセキュア・エレメントに送り、真正性を確認する」というプロセスで行われます(詳細は冒頭記事の中央付近にある図を参照)。
脆弱性
さて、セキュア・エレメントで判定する際は、マイコン側からデータを送るわけです。
だから、マイコンのファームウェアを書き換えて、元のファームウェアと同じデータだけ送れば、見破ることは(セキュア・エレメントにも利用者にも)不可能です。
Ledgerは(発見者の推測では)これに対して、マイコンのフラッシュ容量が限られていることから、本来のファームウェアと悪意あるコードの両方は搭載できないだろう、とみなしたようです。ちなみに、このためにフラッシュの空き領域にはランダムデータが書き込まれているそうです。
しかし、この発見者は見事に裏をかきました。
- このマイコンのソフトウェアは、ブートローダーとファームウェアから構成されます。前者が最初に起動し、本来のアプリケーションは後者に書かれています。
- 製品開発時に双方をビルドする時、コンパイラは「初期化」や「大きな数の演算」のような共通する関数をバイナリに組み込んでしまいます(ちなみに、実際はmemcpyとmemsetと除算関数だった模様)。
- つまり、ファームウェア側の被る関数の領域を悪意あるコードに置き換えることができます。
- セキュア・エレメントに対しては、ファームウェアの改造した箇所は、ブートローダーのコードを送れば真正のものと騙せます。
- もちろんファームウェアが改造箇所の関数を必要とした場合は、ファームウェアの該当する関数を呼び出します。
- ブートローダーを温存しているので、専用のハードウェアが必要なJTAGではなく、USB経由で、しかもLedger自身が公開しているファームウェア書き換えツールで簡単かつ安全に書き換えが可能です。
ファームウェア更新版と、発見者の考える対策
※対策は実施されていません。
- 重複する関数を除去し、必要ならブートローダー側の関数を呼ぶように変更した。
- 重複する関数以外にも、コードを埋め込む手段はある。
- セキュア・エレメントでのチェック時に、時間制限を追加した(既存コードを圧縮した場合の展開や、USBからのデータ供給に対応する模様)。
- セキュア・エレメントよりもマイコンの方が高速に動作するので、小規模な処理なら挟めるはず。
発見者は15歳らしい
自称15歳、という情報しかありませんが。
解析やコードの埋め込みに加えて、冒頭の記事の文章も、ちょっと普通の15歳ではありえない水準です。両方というのは、本当なら実にすごいですね。