Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ubuntu 24.04でリリース版がそのままで動作しなくなっている #2071

Closed
1 of 3 tasks
madosuki opened this issue May 9, 2024 · 6 comments · Fixed by #2141
Closed
1 of 3 tasks

Ubuntu 24.04でリリース版がそのままで動作しなくなっている #2071

madosuki opened this issue May 9, 2024 · 6 comments · Fixed by #2141
Labels
OS:linux バグ 初心者歓迎タスク 初心者にも優しい簡単めなタスク

Comments

@madosuki
Copy link
Contributor

madosuki commented May 9, 2024

不具合の内容

[42692:0509/122607.595572:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_VOICEVRBrJKy/chrome-sandbox is owned by root and has mode 4755.
zsh: trace trap (core dumped)  ~/.voicevox/VOICEVOX.AppImage

Ubuntu 24.04でリリース版例えば0.19.1を実行すると上記のエラーが出て起動できなくなっています.
これは24.04からは一般ユーザーにuser namespaceを作らせないというのをAppArmorの制御機能で行っているためで,Electron内部で使用しているchrome-sandboxが影響を受けて動かなくなるようです.
ref: electron/electron#41066

ワークアラウンドとしては--no-sandboxをつけるかsudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0するか

# vim:syntax=apparmor

#include <tunables/global>

profile VOICEVOX /home/{,**}/.voicevox/VOICEVOX.AppImage flags=(unconfined) {
  userns,
}

みたいな内容のプロファイルを作って/etc/apparmor.d/に配置するかぐらいです今のところは.
全体で無効化するのは微妙な感じなので--no-sandboxつけるかプロファイルを書くのがおすすめです.

現象・ログ

再現手順

Ubuntu 24.04でリリース版のVoiceVoxを起動する.

期待動作

[42692:0509/122607.595572:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_VOICEVRBrJKy/chrome-sandbox is owned by root and has mode 4755.
zsh: trace trap (core dumped)  ~/.voicevox/VOICEVOX.AppImage

のようなエラーが出ず正常に起動すること.

VOICEVOXのバージョン

0.19.1

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

Ubuntu 24.04 x86-64

その他

@sabonerune
Copy link
Contributor

Linuxはあまり詳しくないのですがAppimage形式は実行ファイルを自由に動かせるのでプロファイルも微妙な予感がします。

https://www.electron.build/configuration/appimage
executableArgsというのがあるが使えるのだろうか?
仮に使えても全ての環境でsandboxが無効化されてしまうのはセキュリティ的によくないと思いますが。


そういえば直接関係ないがsandbox: falseのまま放置されている。

sandbox: false, // TODO: 外しても問題ないか検証して外す

@madosuki
Copy link
Contributor Author

プロファイルを適用しても23.10以前の挙動になるだけなので特に問題ないとは思っていますが,私はAppImage詳しくないので--appimage-extractオプションででファイルを展開してそれに対してプロファイルを適用するのが丸いかもしれない.

sandbox: false,昔は有効にしていても特に問題無かったのですがどこかのタイミングでウィンドウ生成できなくなってしまっていて原因を調査する必要があります.

@aoirint
Copy link
Member

aoirint commented May 10, 2024

なるほど、Ubuntu 24.04のセキュリティ機能によって、Electron/Chromiumのセキュリティ機能が動かなくなることで動作しない、という問題みたいですね...。

electron/electron#41066 の返信でリンクが張られているUbuntu 24.04のリリースノートにいくらかの説明があるみたいです。

AppArmorのプロファイル設定については、設定するためにroot権限が必要で、ユーザがroot昇格できるか、管理者に設定を依頼することが必要になるという懸念点があると思います。
リリースノートに挙げられているGoogle ChromeやDiscordなどの一般的なアプリケーションについては、OSがプロファイルをプリインストールすることで問題を回避しているということだと思います。

Electronの--no-sandbox起動引数でElectronがuser namespace機能を使わないようにする選択肢では、ユーザのroot昇格が不要ですが、Electron/Chromiumのサンドボックス機能が無効になるという懸念点があります。

既存コードのsandbox: falseについては、Electron 20から既定で有効化されるようになったElectronのレンダラープロセスのサンドボックス化を無効化するもので、VOICEVOXがElectron 20に更新した #1002 の時点で導入されているようですが、それ以前に明示的にsandbox: trueにしていた頃があるかもです。

インストーラで--no-sandbox起動引数を追加する場合、以下で*.desktopファイルのExecをすでに編集しているので、ここで--no-sandboxを足すという形になるかなと思います。

sed "s/Exec=.*/Exec=${ESCAPED_APP_DIR}\/${APPIMAGE} %U/" "${DESKTOP_FILE}" > _

@Hiroshiba
Copy link
Member

@madosuki issue作成と詳しい紹介ありがとうございます!
@sabonerune @aoirint 議論&意見とても助かります!!

いただいたURLをいろいろ見て回ってみました。今のところの議論をまとめるとこうでしょうか?

  • ubuntu24からセキュリティ強化され、sandboxでユーザー名前空間を使うときにプロファイルとやらが必須になった
  • 回避策は3つ
    • プロファイルを作る
      • セキュリティ面では一番良い
      • sudo権限が必要
      • 理想的にはインストール先パスに応じてプロファイルの内容も変える
    • 起動引数--no-sandbox
      • 楽ではある
      • sandboxが無効になってしまう
    • sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0を実行してもらう
      • ユーザー側で対処できる
      • せっかくセキュリティ強化されたのにubuntu23の仕様に戻っちゃう

提案としては、起動時引数として--no-sandboxを付けてしまい、TODOとしてプロファイル周りの解決を目指す or electron-builder側の対応を待つというのとかどうでしょう。
セキュリティ面でリスクはありつつも、まあ以前と同じだし大丈夫かなというのと、少し様子をみて半年後くらいには別の迂回作ができてることを期待している感じです。

この流れで一旦良さそうなら、--no-sandbox起動引数の追加のPRを募集したいです 🙏

@aoirint
Copy link
Member

aoirint commented May 23, 2024

ありがとうございます。--no-sandbox起動引数を追加する方針でいいと思います。

@Hiroshiba
Copy link
Member

ということでプルリクエスト募集中です!!

たぶんbuild/installer_linux.shファイルに起動引数--no-sandboxを付け、--no-sandboxはセキュリティ的に最適ではないので直すというTODOコメントを残す感じかなと!

結構簡単にできそうなので、もしよかったら 🙏 🙏 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS:linux バグ 初心者歓迎タスク 初心者にも優しい簡単めなタスク
Projects
None yet
4 participants