SSブログ

Emacs 上でのパスワード入力 [Linux]

Emacs 上でパスワードを入力する時(注1)には、send-invisible(注2) を使用することが推奨されている。また、この関数には、セキュリティ面でのバグ(注3) が存在していた。

久しぶりに send-invisible のドキュメントを参照したところ、上記のバグが解決されたように解釈できる記述があったため、試したところ解決されていた。
以下は、解決された時期について調べたことをまとめたものである。

(注1)
shell バッファで su や telnet を実行した時、等
(注2)
必要な時に手動で実行する方法と、自動実行する方法がある。
・手動実行: パスワード入力のプロンプトが表示された時に、send-invisible を実行する。
・自動実行: 下記の設定を ~/.emacs に追加する。
(add-hook 'comint-output-filter-functions 'comint-watch-for-password-prompt)
(注3)
直近の 100 個分の押下に関する情報が保存され、view-lossage の実行により参照できる。
パスワードの入力についても保存の対象となるため、パスワードを参照される危険がある。

1. Emacs-22.1 以降の対応状況


(1) 状況
  send-invisible のセキュリティ上の問題点は改善されている。
  ・send-invisible (in comint.el) は、read-passwd (in subr.el) を実行する。
  ・read-passwd は、パスワード取得後に clear-this-command-keys を実行する。
  ・clear-this-command-keys は、保存されている入力情報を削除する。

(2) 補足
  (a) 入力情報が削除されることは、Emacs-22.1/22.2/23.1 で確認。
  (b) 対応済が否かについては、send-invisible のドキュメントから判断できる。
    ・C-h f <RET> send-invisible <RET> により、参照できる。
    ・clear-this-command-keys により fix できる旨の記述がある。


2. Emacs-21.4 以上 Emacs-22.1 未満の対応状況


(1) 状況
  ・clear-this-command-keys が提供されており、保存情報を削除できる。
  ・read-passwd が提供されている。
   (clear-this-command-keys を実行する。)
  ・send-invisible は read-passwd を使用していない。
  よって、read-passwd または clear-this-command-keys の実行により、対応可能である。

(2) 補足
  ・Emacs-22.1 では read-passwd を実行するが、
   Emacs-21.4 では comint-read-noecho を実行している。
  ・Emacs-22.1 の comint-read-noecho は read-passwd を実行するだけである。
   (互換性を保つため。)
  ・下記の設定を追加することにより、Emacs-22.1 と同等となる。
   (CentOS 5.5 上の Emacs-21.4.1 で動作を確認。)

(add-hook 'comint-mode-hook
          '(lambda ()
             (defalias 'comint-read-noecho
               '(lambda (prompt &optional ignore)
                  "(read-passwd prompt)"
                  (read-passwd prompt)))))

3. Emacs-21.4 未満の対応状況


(1) Emacs-20.4 以上 Emacs-21.4 未満の対応状況
  Emacs-21.4 と同様と思われる。
  ・clear-this-command-keys は、Emacs-20.4 以降で提供されている。

(2) Emacs-20.4 未満の対応状況
  ・clear-this-command-keys は提供されておらず、未対応である。
  ・下記の設定等により view-lossage を無効化できるが、保存情報の削除はできない。

(fset 'view-lossage 'ignore)

4. 備考


(1) Emacs のリリース状況 (GNU のアーカイブの一覧から判断)
  ・Emacs-20.x (ただし、Emacs-20.4 以降)
   20.4, 20.5a, 20.6, 20.7
  ・Emacs-21.x
   21.1, 21.2, 21.3, 21.4a
  ・Emacs-22.x
   22.1, 22.2, 22.3
  ・Emacs-23.x
   23.1, 23.2



nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。