本文へスキップ
MameTechNews
バックエンド

Gitea 28.0.0、組み込みSSHとSQLiteの未認証ログインを修正

## POINTS

  • 影響は組み込みSSHとSQLiteの併用。公式rootlessイメージはこの二つが既定で固定されている。
  • 修正版は28.0.0。OpenSSH前面、SSH証明書、HTTP署名、PostgreSQLの構成は対象外。
  • 成功すると被害者の秘密鍵なしで、その人が届くリポジトリへgit over SSHで読み書きできる。

Giteaは10月6日、組み込みのSSHサーバとSQLiteを同時に使っているインスタンスで、未認証の遠隔の攻撃者が、RSA公開鍵を登録した任意の利用者としてSSHログインできる欠陥を公開した。影響は1.27.3以前、修正版は28.0.0。GitHub上の深刻度はCriticalで、CVSS 3.1は9.1である。

原因は、提示された鍵を「ssh-rsa 」で始まる文字列の前方一致で探していることにある。SQLiteのLIKEはASCIIの大文字小文字を区別しないため、公開されている鍵と文字の大小だけが違う鍵が、本人の鍵として扱われる。被害者の秘密鍵は使われない。ログインに成功すると、その利用者が届く非公開リポジトリ、組織のリポジトリ、共同編集のリポジトリへ、git over SSHで読み書きできる。サーバのログは、通常の鍵ログインに見える。

公式のrootlessコンテナイメージは、組み込みSSHとSQLiteの両方を固定しており、設定を変えていなくても影響を受ける。OpenSSHを前面に置く構成、SSH証明書、HTTP署名認証、PostgreSQLは対象外である。PostgreSQLではLIKEが大文字小文字を区別するためだ。該当イメージを使っているなら、公開されている鍵の一覧をインターネットから取れる前提で、28.0.0へ上げる。上げるまでの間は、組み込みSSHを外へ出さない。