VT100端末(最新のすべての端末エミュレーターがある程度エミュレートする)は、多くの問題のあるコマンドをサポートしていましたが、最新のエミュレーターまたはディストリビューションは、より問題が多く有用性の低いコマンドを無効にします。危険な可能性のあるエスケープシーケンスの完全ではないリストを以下に示します(何らかの方法で表示を単に読みにくくするものは含まれません)。
- HD Mooreによって報告されたrxvtおよびEtermの任意のログファイルコマンド。これらは本当に大きなバグであり、幸い長い間修正されています。
ENQ
(Ctrl+E
)によって呼び出されるアンサーバックコマンド(リターンターミナルステータスとも呼ばれる)。これにより、ユーザーが入力したかのようにテキストが端末に挿入されます。ただし、このテキストは攻撃者の制御下にありません。端末の名前であり、通常はまたはxterm
などscreen
です。私のシステム(Debian squeeze)では、xtermはデフォルトで空の文字列を返します(これはanswerbackString
リソースによって制御されます)。
- デバイス属性の送信コマンド、
ESC [ c
およびフレンド。端末は応答しますESC [ … c
(…
数字とASCII句読点のみを含むことができます)。これは、一部の端末機能をクエリする方法であり、ほとんどが時代遅れですが、おそらく古いアプリケーションで使用されています。繰り返しますが、端末の応答はユーザーの入力と区別できませんが、攻撃者の制御下にはありません。コントロールシーケンスはファンクションキーのように見えますが、ユーザーが通常とは異なる構成になっている場合に限ります(私が遭遇した通常の設定には、ターミナル応答のプレフィックスである有効なファンクションキーエスケープシーケンスがありません)。
- さまざまなデバイス制御機能(DCSエスケープ、先頭は
ESC P
)。
DECUDK
一般的なターミナルエミュレータでどのような害が発生するか(ユーザー定義キーを設定する)がわかりません。
DECRQSS
(Request Status String)は、端末がエスケープシーケンスで応答するもう1つのコマンドで、今回は\eP
;で始まります。\eP
有効なキー(Alt+ Shift+ P)であるため、これは問題になる可能性があります。
- xtermがさらに2つの実験的な機能を備えています。
ESC P + p …
そしてESC P + q …
、取得するには、設定のtermcapの文字列。説明から、これは少なくともファンクションキーの効果を変更するために使用される可能性があります。
- いくつかのステータスレポートコマンド:(
ESC [ … n
デバイスステータスレポート)。端末はエスケープシーケンスで応答します。これらのエスケープシーケンスのほとんどは、ファンクションキーのエスケープシーケンスに対応していません。1つは問題があるように見えます:へのレポートESC [ 6 n
は、の形式であり、数字のシーケンスであり、これはいくつかの修飾子があるように見えます。ESC [ x ; y R
x
y
F3
- ウィンドウ操作コマンド
ESC [ … t
。
- これらのいくつかは、xtermウィンドウのサイズ変更、アイコン化などを可能にします。
- これらの一部により、端末はエスケープシーケンスで応答します。これらのエスケープシーケンスのほとんどは危険度が低いように見えますが、2つの危険なコマンドがあります。ターミナルウィンドウのアイコンラベルとタイトルへの回答とそれぞれ
ESC [ 2 0 t
をESC [ 2 1 t
含み、攻撃者はこれらを選択できます。
- 少なくともDebian squeezeでは、xtermはデフォルトでこれらのコマンドを無視します。
allowWindowOps
リソースを設定するか、リソースを選択して有効にすることができますdisallowedWindowOps
。Ubuntu 10.04のGnome-terminalは、デフォルトでタイトルのアンサーバックさえ実装しています。他の端末やバージョンを確認していません。
- 端末のタイトルまたはアイコン名を設定するコマンド。xtermおよび他のほとんどのX端末では、これらはです。画面では、エスケープシーケンスはです。これらのコマンドに対する懸念は過大評価されています。多少のいたずらは許可されますが、どのWebページにも同じ問題があります。クラスではなく、タイトルのみに基づいてウィンドウを操作することは、信頼できない関係者から名前が付けられたファイルを開くこと、またはシェルスクリプトで変数展開を引用しないこと、または鼻に狂犬をpaでることに似ています—噛まれても文句を言わないでください。
ESC ] digit ; title ESC \
ESC k title ESC \
ワニスの反応は不誠実です。非難を変えようとしているように感じるか、セキュリティナチモード(本物であるかどうかにかかわらず、セキュリティ上の懸念は機能のブラックボール化を正当化する)です。
一般に、端末応答エスケープの知恵は定期的に疑問視されていますが、主要な端末エミュレーションプログラムはいずれも、おそらく使用されていない1970年代の技術との互換性の見当違いの試みで、これらのシーケンスを破棄するのにふさわしいものではありませんでした。(…)
ログファイルを書き込むすべてのプログラムを非難する代わりに、セキュリティの観点から、端末エミュレーションプログラムに愚かなことをやめさせ、この問題やその他のセキュリティの問題を一度修正すると、すべてのために。
アンサーバックの多くは便利な機能です。アプリケーションは、カーソルの位置やウィンドウサイズなどを知る必要があります。ウィンドウのタイトルを設定することも非常に便利です。ioctl
これらの呼び出しに完全に依存することも可能ですが、これらのioctl
呼び出しを行い、ファイル記述子を渡すUNIXスタイルのテキストに変換するには、追加のコードとユーティリティが必要になります。現在、これらのインターフェースを変更することは、ほとんど利益とは言えず、多くの作業です。
テキストファイルには、制御文字などの非印刷文字が含まれることは想定されていません。通常、ログファイルはテキストファイルであることが期待されます。ログファイルに制御文字を含めることはできません。
ファイルにエスケープシーケンスが含まれているのではないかと心配する場合は、エディターで開くかless
、-r
または-R
オプションなしで表示するか、で表示しますcat -v
。