73

編集 2 : TL;DR: 2013 年には答えはイエスでしたが、この欠陥は修正されました

vagrantup.com の「はじめに」の手順に従うと、ポート 2222 で SSH 接続を受け入れる仮想マシンが完成するようです。これにより、誰でも VM へのルート アクセスを取得し、デフォルトの資格情報 (ユーザー名) を使用してホストの作業ディレクトリを読み取ることができます。 =password=vagrant または vagrant_insecure_private_key)。

これは本当ですか?はいの場合、それがギャップのあるセキュリティ脆弱性と見なされないのはなぜですか? 機密データを VM にコピーした場合はどうなりますか?

編集: また、インターネット上の誰もがソースを読み取って VM で任意のコードを実行できることはそれほど悪くないと考える人には、このブログ投稿http://blog.ontoillogical の「ブレイクアウト」セクションを読むことをお勧めします。 com/blog/2012/10/31/breaking-in-and-out-of-vagrant/

簡単に言うと、Vagrant を「意図したとおりに」実行すると、だれでもホスト/開発マシンに侵入できるようになります (たとえば、悪意のある git post-commit フックを使用することによって)。

4

6 に答える 6

100

簡単な答えはYESです。

なんで?

Vagrant ベース ボックスをビルドする場合 (手動または Veewee などのツールを使用して自動化)、ビルダーは以下を定義するvagrantベース ボックスの仕様に従います。

  1. ユーザーrootvagrantをパスワードとしてvagrant使用
  2. ユーザーの公開鍵認証 (パスワードなし) vagrant

Vagrant プロジェクトは、SSH 公開鍵認証用の安全でない鍵ペアvagrant sshを提供するため、機能します。

誰もが秘密鍵にアクセスできるため、誰でも秘密鍵を使用して VM にログインできます (ホスト マシンの IP を知っていると仮定します。ポートはデフォルトで転送ルールとして 2222 になっています)。

安全な OOTB ではありません。ただし、信頼できるキーを から削除し~vagrant/.ssh/authorized_keysて独自のキーを追加し、 および のパスワードを変更するvagrantroot、比較的安全であると見なされます。

アップデート

Vagrant 1.2.3 以降、デフォルトで SSH 転送ポートは 127.0.0.1 にバインドされるため、ローカル接続のみが許可されます [GH-1785]。

重要な更新

Vagrant 1.7.0 ( PR #4707 ) 以降、Vagrant はデフォルトの安全でない ssh キーペアを最初にランダムに生成されたキーペアに置き換えますvagrant up

CHANGELOGを参照してください: デフォルトの安全でない鍵ペアが使用されます。Vagrant は最初にランダムに生成された鍵ペアに自動的に置き換えますvagrant upGH-2608

于 2013-02-05T23:55:58.693 に答える
10

これは、vagrant の github リポジトリの問題として提起しました。開発者は、転送されたポートが外部から利用可能になる問題を修正すると述べています。ただし、開発者は、VM からのホスト環境の侵害に関する問題を受け入れません。彼らは危険なほど間違っていると思います。

https://github.com/mitchellh/vagrant/issues/1785

リンクされたブログ投稿が示唆するよりも、VM から抜け出すのは簡単です。ホストを侵害するために git フックに依存する必要はありません。任意の Ruby コードを Vagrant ファイルに入れるだけです。

可能であれば、VM サンドボックスで vagrant を実行します。できないのでファイアウォールでなんとかしています。

安全な ssh キーを追加し、安全でないキーとデフォルトのパスワードを削除するためのプロビジョニング ルールを用意することをお勧めします。

于 2013-06-04T13:57:55.007 に答える
9

この単純なインライン シェル プロビジョナーを作成して、authorized_keys を id_rsa.pub と交換しました。プロビジョニングされると、insecure_private_key を認証に使用することはできません。

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

# ...

  config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'" # avoids 'stdin: is not a tty' error.

  config.ssh.private_key_path = ["#{ENV['HOME']}/.ssh/id_rsa","#{ENV['HOME']}/.vagrant.d/insecure_private_key"]

  config.vm.provision "shell", inline: <<-SCRIPT
    printf "%s\n" "#{File.read("#{ENV['HOME']}/.ssh/id_rsa.pub")}" > /home/vagrant/.ssh/authorized_keys
    chown -R vagrant:vagrant /home/vagrant/.ssh
  SCRIPT

end
于 2014-02-01T01:21:10.773 に答える
1

この問題を解決する Vagrant プラグインvagrant-rekey-sshがあることを追加したかっただけです。VM のデフォルトのパスワードを変更し、安全でない SSH キーを削除します。

于 2014-12-03T20:48:43.953 に答える