任意のファイルを cat するのはどれくらい安全ですか?

任意のファイルを cat するのはどれくらい安全ですか?

時々、catバイナリ ファイルを誤って開くと、ターミナルが文字化けします。すぐにreset修正できないことはありませんが、ターミナルに表示されたときに任意のコードを実行するファイルを攻撃者が理論的に作成することは可能でしょうか? ターミナル エミュレーターのエクスプロイトなどを通じて。

答え1

このような出力が悪用されるかどうかは、端末プログラムと、送信されるエスケープ コードに応じて端末が何を行うかによって異なります。端末プログラムにこのような悪用可能な機能があるかどうかはわかりませんが、現時点で唯一の問題は、悪用される可能性のある未知のバッファ オーバーフローなどがある場合です。

一部の古いhardware端末では、ハードウェアにそのキーのコマンド シーケンスを保存することで、たとえばファンクション キーにこのようなエスケープ シーケンスをプログラムすると、問題が発生する可能性があります。これをアクティブにするには、やはり物理的なキーの押下が必要になります。

しかし、常に (Hauke がまさに「頭が悪い」と評したように)、それが自分たちの問題を解決してくれるなら、自分たちが作り出す抜け穴を理解しないで、喜んでそのような機能を追加する人々がいます。オープンソース ソフトウェアに関する私の経験では、コードを見る目が多数あるため、クローズド ソースの場合ほどこのようなことが起こる可能性は低いです。(1990 年代半ばの Silicon Grahpics の Irix のメール プログラムでは、受信者のマシンで実行するコマンド、実行可能ファイルへの実際のパスなどを含めることができていたことを覚えています。)

答え2

ほとんどの端末エミュレータは、特定のエスケープシーケンスを受信すると、何らかの応答を返します(xterm 制御シーケンスのドキュメントたとえば、VT100 のようなエミュレータに送信する\e[0cと、次のようなデバイス属性が返されます\e[?1;2c (これはおそらく Keith が観察したものです)。ただし、これらの応答は任意の文字列ではありません。それでも、システム上のどこかに致命的なことを実行する実行可能ファイルの名前があるのは2c悪い考えです。

更新: xtermウィンドウのタイトルを設定できるため、リスクは実際には私が考えていたよりも大きいです。タイトルを返送する適切なエスケープシーケンスを使用する(http://www.securityfocus.com/bid/6940/)。上記の例とは対照的に、タイトルはほぼ任意の文字列にすることができます。

答え3

これは、GNOMEターミナル3.6.1のターミナルタイトルを変更します。プレイステーション1:

printf "\033]2;Script Kiddie was here\007"

次に、新しい GNOME ターミナル ウィンドウを開いてcatバージョンをテストします。

printf "\033]2;Script Kiddie was here\007" > test.bin
cat test.bin

はい、これによりターミナルのタイトルも設定されます。

以前はセキュリティ上の問題がありましたタイトルをコマンドラインに出力するためのエスケープコード、つまり、ed が任意のコマンドを印刷するファイルcat(そこに改行を挿入できるかどうかはわかりません) を効果的に作成できます。痛い!

答え4

xterm確かに、自分が入力したかのように、任意の文字がそれ自体に挿入されるのを経験したことがあります。また、場合によっては、これに改行文字が含まれるようで、ngwerm:0riu: command not found応答としてその文字が返されました。特定の有害なコマンドを送信するファイルを作成できない理由は見当たりません。したがって、少なくとも一部の端末は、任意の影響を与える攻撃を受けやすいのです。

関連情報