私の大学のラボPCにはUbuntu 14.04.3 LTSがあります。今日、深刻なバグに気づきました。
パスワードの最後の数文字をスキップしても、スムーズにログインできます。たとえば、パスワードがa1b2c3d4e5f6g7h8
の場合、a1b2c3d4e
と入力してログインすることができます。他の多くの人もこのバグに気付いています。
パスワードを完全にバイパスすることはできません-スキップできる最大文字数は7文字です。これ以上スキップしようとすると、「無効なパスワードです。もう一度試してください」というメッセージが表示されます。また、パスワードのサブストリングのランダムな順列は機能しません。
これは、画面を手動でロックし、パスワードを再度入力した場合にも発生します。 ssh
を使用しているときにも同じバグが存在しますが、グーグルやスタックオーバーフローの検索は役に立ちませんでした。
私の質問は-このバグを修正するにはどうすればよいですか? sysadmは月曜日まで利用できません。これは本当に困ります。
重要:学生のアカウントはいずれもsudoersリストに含まれていないことに注意してください。sysadmのみがルートアクセス権を持っています。また、自分のアカウントにssh
を追加すると、次のメッセージが表示されます。
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-65-generic i686)
* Documentation: https://help.ubuntu.com/
543 packages can be updated.
350 updates are security updates.
New release '16.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
更新:重要な問題は、最後に省略された文字数ではなく、パスワードの最初の8文字以上でログインできることです。
管理者アクセス権がない場合、できることはあまりありません。
とはいえ、これは管理者の能力不足によるものと思われます。これは、古典的なcrypt(3)
関数を使用したパスワード暗号化と疑わしく似ています。 man 3 crypt
から:
crypt()はパスワード暗号化関数です。これは、キー検索のハードウェア実装の使用を阻止することを目的としたバリエーション(他の things)を使用したData Encryption Standardアルゴリズムに基づいています。 keyはユーザーが入力したパスワード。 saltは、セット[a-zA-Z0-9./]から選択された2文字の文字列です。この 文字列は、4096の異なる方法のいずれかでアルゴリズムを混乱させるために使用されます。 最初のそれぞれの最下位7ビットを取得することにより キーの8文字、56ビットキーが取得されます。この56ビットキーは、繰り返し定数文字列(通常は文字列)を暗号化するために使用されます。すべて ゼロで構成されます)。返される値は、暗号化されたパスワード、13個の印刷可能なASCII文字のシリーズ を指します(最初の2文字は saltを表します)。戻り値は、コンテンツ が各呼び出しによって上書きされる静的データを指します。
それはおなじみの音ですか?
最近のUbuntuシステムでは、これをデフォルトで使用していません。これを使用するには、管理者がパスワードのセットアップを手動で構成する必要があります。または、外部認証(LDAPなど)を使用している可能性があり、安全に構成できなかったか、できませんでした。
すべてのUnixenがパスワードをこの方法で暗号化した時代がありました。 8文字目以降のすべてを破棄し、ソルトを追加し、ハッシュ関数をドロップして終了します。
ここでの大きな問題は、潜在的なハッカーが暗号化されたパスワードを利用できるかどうかです。もしそうなら、これは大きな問題です。そうでない場合、それは本当に大したことではありません。 8文字のパスワードには多くの可能性があります。潜在的なパスワードを確認するために実際のログインを試行する必要がある場合、侵入には長い時間がかかります。また、試行によりアラームがトリガーされます。
したがって、ここでの大きな勝利はシャドウパスワードです。それでも、人々はこれでは十分ではないと考え始め、すべてのUnixバリアントは、パスワードの最大長を延長する独自の方法を実装しました。これらは互換性がなくなりました。
しばらくの間、異なるUnixバリアントを持つ複数のマシンで同じパスワードを使用する場合、古いタイプの暗号化を使用する必要がありました。
これらのコンピューターラボが最初にセットアップされたとき、それはまだ事実であった可能性が非常に高いです。そして、このタイプのセットアップには慣性があります。サーバーに合わせて新しいクライアントがセットアップされます。クライアントに合わせて新しいサーバーがセットアップされます。
今日、物事は良くなっています。使用されているUnixの亜種は少なく、それらはよりよく連携します。
私はこれを修正する方法をあなたに伝えるのに十分ではありませんが、それはis管理者のためのタスクであり、あなたのためではありません。