SSH について

The vulnerability, which is a signal handler race condition in OpenSSH’s server (sshd), allows unauthenticated remote code execution (RCE) as root on glibc-based Linux systems; that presents a significant security risk. This race condition affects sshd in its default configuration.

セキュアシェル(SSH)はネットワーク経由で安全にシェルアクセスするプロトコルです。

SSH 実装として OpenSSHプロジェクトによるクライアント向けの ssh とサーバー向けの sshd が多くの環境で利用されています。

Windows環境で利用される putty は SSH プロトコルを実装した SSH クライアントプログラムの一つです(putty はSSH以外にもtelnetなど様々なプロトコルに対応しています)。

SSHの認証方式として以下があります。

GitHub.com のレポジトリでもSSHの公開鍵認証が利用されています。

About SSH - GitHub Docs

SSH認証と regreSSHion の関係

OpenSSHのsshdは、クライアントが接続を試み、LoginGraceTime で指定した時間内に認証が成功しないと、 SIGALRM というアラーム式のシグナルが非同期に呼び出されます。

今回の regreSSHionでは、glibcを利用したLinuxにおいて、このシグナルハンドラー内の処理に脆弱性がありました。

回避策の一つとして紹介されている LoginGraceTime=0 は、このログイン試行のタイムアウト機能を無効化し、SIGALRM が呼び出さないようにするというものです。

コンテナへのシェルアクセス

SSHはサーバーの運用やトラブルシュートなどのために古くから利用されています。

コンテナでは、コンテナランタイムがDockerの場合は docker exec、Container Runtime Interface (CRI)互換なランタイムの場合は crictl exec でシェルアクセス可能です。

$ docker exec -it mycontainer /bin/sh
bin   dev   etc   home  proc  root  sys   tmp   usr   var

AWSが提供するコンテナオーケストレーターのECSの場合、ECS Exec という同等の機能が提供されています。

$ aws ecs execute-command --cluster cluster-name \
    --task task-id \
    --container container-name \
    --interactive \
    --command "/bin/sh"