SSHの重大な脆弱性CVE-2024-6387を解消:セキュリティアップデートの詳細
本来「あつまれ右脳派の森」は左脳(論理脳)の欠落したアートスクール出身のUI/UXデザイナー向けに黒い画面(エディタ)が怖く無くなるコンテンツを発信していこうという趣旨なのですが、本日は大切なお話なので右脳派の左脳がオーバーヒートするかもしれませんが見てってください。
いまXでSSHの重大な脆弱性として記憶に新しい「CVE-2024-6387」がトレンドワード入りしていたので何事かと思ったら解消されたそうです。詳細は以下の記事を解説していきます。
SSHってなんだっけ?:おさらい
SSHは知らない人も秘密鍵というと「あれか」と思い当たる人がいると思います。そうです、Gitでリモートリポジトリからローカルにコードをプルしたり、ローカルの変更をリモートにプッシュしたりする際に使用する、秘密鍵のことです。
手順はまずローカルマシンでssh-keygenコマンドを使って秘密鍵を生成します。このとき、生成される秘密鍵はデフォルトでid_rsaという名前がつけられます。この秘密鍵を安全に保管し、ペアとなる公開鍵(通常はid_rsa.pub)をリモートのGitリポジトリがホスティングされているサーバーにアップロードします。この公開鍵をリポジトリホスティングサービス(例えばGitHubやGitLab)のアカウント設定で追加することで、SSHを利用した安全な認証が可能となります。
例えば、GitHubの公式ドキュメントにも記載されている通り、SSHキーを使うことでパスワードなしでリポジトリにアクセスできるようになります。これにより、頻繁な認証の手間を省きつつ、高いセキュリティを確保できます。
その大事な秘密鍵に微弱性があった
その非常にセキュアなはずのSSHに、CVE-2024-6387という新たな脆弱性が見つかりました。この脆弱性は、OpenSSHのサーバーコンポーネント(sshd)に存在する競合状態の問題であり、glibcベースのLinuxシステムにおいて、認証されていないリモートコード実行(RCE)を可能にするものです。この脆弱性は、以前修正された欠陥(CVE-2006-5051)が再度現れたもので、最新のセキュリティアップデートによって解消されました。
本日のセキュリティアップデート詳細
SHの脆弱性(CVE-2024-6387)は、OpenSSHのサーバーコンポーネント(sshd)に存在する競合状態の問題であり、これが修正されることでセキュリティが向上します。この脆弱性は、特定の条件下でリモートコード実行を可能にするものであり、OpenSSHの使用に関連するものです。
認証のないリモートコードをルート権限で行えてしまう欠陥
OpenSSHのメンテナンスチームは、glibcベースのLinuxシステムにおいて、認証されていないリモートコード実行(RCE)をルート権限で行うことができる重大なセキュリティ欠陥を含むセキュリティアップデートをリリースしました。
この脆弱性は、regreSSHionというコードネームで呼ばれ、CVE-2024-6387というCVE識別子が割り当てられています。これは、クライアントアプリケーションからの接続をリスニングするように設計されたOpenSSHサーバーコンポーネント(sshd)に存在します。
Qualys脅威研究ユニット上級ディレクターBharat Jogi見解
「この脆弱性は、OpenSSHのサーバー(sshd)におけるシグナルハンドラの競合状態であり、glibcベースのLinuxシステムにおいて、認証されていないリモートコード実行(RCE)をルート権限で許可します」と、Qualysの脅威研究ユニットの上級ディレクターであるBharat Jogiは、今日公開された開示で述べています。「この競合状態は、sshdのデフォルト設定に影響を与えます。」
サイバーセキュリティ企業によると、インターネットに公開されている少なくとも1400万の潜在的に脆弱なOpenSSHサーバーインスタンスを特定し、これはCVE-2006-5051として追跡された18年前に修正された欠陥の回帰(注01)であり、2020年10月にOpenSSHバージョン8.5p1の一部として再導入されたとしています。
平均6〜8時間の連続接続後に攻撃が可能になる
「成功した悪用は、[アドレス空間レイアウトランダム化]を伴う32ビットLinux/glibcシステムで実証されています」とOpenSSHはアドバイザリで述べています。「ラボ条件下では、攻撃にはサーバーが受け入れる最大接続数まで、平均6〜8時間の連続接続が必要です。」
パッチが適応されていないと競合状態のバグに対して脆弱
この脆弱性は、バージョン8.5p1から9.7p1の間に影響を及ぼします。バージョン4.4p1以前もCVE-2006-5051およびCVE-2008-4109のパッチが適用されていない場合、競合状態のバグに対して脆弱です。OpenBSDシステムは、この欠陥をブロックするセキュリティメカニズムを含んでいるため、影響を受けません。
このセキュリティの欠陥はmacOSおよびWindowsにも影響を及ぼす可能性(注02)がありますが、これらのプラットフォームでの悪用可能性は未確認であり、さらなる分析が必要です。
非同期シグナルが安全でない方法で実行される
Qualysは、クライアントが120秒以内に認証しない場合(LoginGraceTimeで定義される設定)、sshdのSIGALRMハンドラが非同期的に呼び出され、非同期シグナル(注03)が安全でない方法で実行されることを発見しました。
CVE-2024-6387悪用の目的はシステム全体の侵害と乗っ取り
CVE-2024-6387を悪用することの純粋な効果は、システム全体の侵害と乗っ取り(注04)であり、脅威アクターが任意のコードを最高権限で実行し、セキュリティメカニズムを回避し、データの盗難を行い、永続的なアクセスを維持することが可能です。
「一度修正された欠陥が、ソフトウェアの後続のリリースで再び現れることがあり、通常は変更や更新によって問題が意図せず再導入されます」とJogiは述べています。「この事件は、既知の脆弱性を環境に再導入することを防ぐために徹底した回帰テストの重要な役割を強調しています。」
この脆弱性はリモート競合状態の性質のため重大な障害がありますが、ユーザーは潜在的な脅威に対して最新のパッチを適用することが推奨されます。また、ネットワークベースのコントロールを通じてSSHアクセスを制限し、ネットワークセグメンテーションを強制して不正なアクセスと横移動を制限することも推奨されます。
※注01:CVE-2024-6387は、過去に修正されたCVE-2006-5051という脆弱性が再度現れたことを意味しています。これは、OpenSSHのサーバーコンポーネント(sshd)に存在する競合状態の問題です。このような再発は、コードの変更やアップデートの際に、以前修正された脆弱性が意図せず再導入されることが原因です。
※注02:現在のところ、32ビットのLinux/glibcシステムでの実証が行われていますが、CVE-2024-6387の脆弱性が実際にローカルで不具合を引き起こしたという具体的な実証は確認されていないようです。この脆弱性がmacOSおよびWindowsにも影響を及ぼす可能性があるとはされていますが、これらのプラットフォームでの悪用可能性についてはさらなる分析が必要であり、まだ確認されていない状態です
※注03:非同期シグナル処理は、特定のイベント(例えば、タイムアウトやユーザーの中断操作)が発生したときに、プログラムの通常の実行フローを中断して特定の処理を行うことを指します。この処理は、通常のプログラムの流れとは独立して行われるため「非同期」と呼ばれます。
OpenSSHに関する脆弱性CVE-2024-6387の場合、非同期シグナル処理が問題となっています。具体的には、次のような状況です:
LoginGraceTime: クライアントが120秒以内に認証しない場合、sshdはタイムアウトシグナル(SIGALRM)を発生させます。
非同期シグナル処理: このシグナルが非同期的に処理され、非同期シグナル安全でない方法で実行されます。これにより、競合状態が発生し、リモートコード実行の脆弱性が生じます。
この問題は、JavaScriptの非同期通信とは異なるもので、システムプログラム内の非同期シグナル処理に関連しています。
※注04:実際に秘密鍵がかかったWebサービスが乗っ取られた事件は存在します。以下はいくつかの例です:
GitHubの攻撃(2020年):2020年4月、GitHubは複数のユーザーアカウントが秘密鍵を盗まれた攻撃を受けました。攻撃者は、GitHubアカウントに関連付けられたSSHキーを使用してリポジトリに不正アクセスしました。これにより、攻撃者はリポジトリの内容を変更、削除、盗むことができました。GitHubはすぐに影響を受けたアカウントのSSHキーを無効化し、ユーザーに新しいSSHキーを設定するよう促しました。
SolarWindsの攻撃(2020年):2020年12月、SolarWindsのネットワーク管理ソフトウェアが攻撃を受けました。この攻撃では、攻撃者がSolarWindsのソフトウェアビルドプロセスに侵入し、マルウェアを含む更新を配布しました。結果として、秘密鍵を含む機密情報が盗まれ、攻撃者はこれを利用してさまざまな政府機関や企業のネットワークにアクセスしました。この攻撃は広範な被害をもたらし、サイバーセキュリティ業界に大きな衝撃を与えました。
Codecovの攻撃(2021年):2021年4月、コードカバレッジツールの提供者であるCodecovが攻撃を受けました。攻撃者はCodecovのDockerイメージを改ざんし、秘密鍵や他の機密情報を含む環境変数を盗むために、悪意のあるコードを挿入しました。この改ざんにより、何千ものプロジェクトが影響を受け、攻撃者はこれらのプロジェクトのリポジトリにアクセスすることが可能となりました。攻撃が発覚した後、Codecovはすぐにユーザーに対して通知し、影響を受けた環境変数や秘密鍵を変更するように促しました。
しばらく、「あつまれ右脳派の森」投稿していませんでしたが今後、週1回は投稿していくつもりです。本日は、右脳派が怖い秘密鍵の話をしましたが、避けては通れないものなのでこの話題を取り上げてみました。実装方法は、LLMsを利用してサクッと行えますので恐怖は不要とだけ言っておきます。いずれは、「右脳派のための秘密鍵」という記事も執筆しますね。
この記事が気に入ったらチップで応援してみませんか?