Repository navigation
This is the last release of egpu-switch. The project continues as
Yby eGPU, which provides GPU switching
and safe eject without depending on all-ways-egpu, plus a desktop app and
additional controls. Its installer removes egpu-switch from Decky. Update
to 0.3.4 if you still use egpu-switch, then migrate to Yby eGPU.
Security fixes
- High: a user-writable file was executed as root. The plugin runs as root
and executedall-ways-egpufrom~/bin(and from any user's
/home/*/bin) every few seconds. Any program running as a user could
replace that file and gain root without a password. The plugin, and the
shutdown hook inextras/, now only run all-ways-egpu when the file and
every folder above it belong to root and nobody else can write to them.
If yours is in~/bin, the panel shows a command to install it
for the whole system. - Medium: root followed a link when saving settings.
settings.json
lives in a folder the user owns; replacing it with a link made root
overwrite arbitrary system files, and the settings screen could read any
JSON file. Settings are now read and written without following links,
through a temporary file, and only the two known options are kept. - Low: fixed file names in
/tmp. The shutdown hook wrote its errors to
predictable files in/tmpas root. It no longer uses/tmp. - Low: Deep rescan could pick a bridge in another PCI domain. On
machines with more than one PCI domain it could reset the wrong bridge. It
now matches the domain too.
These issues were identified during the review for the Yby eGPU release.
Português (Brasil)
Esta é a última versão do egpu-switch. O projeto continua como
Yby eGPU, que mantém a troca de GPU e
a ejeção segura, acrescenta um app do desktop e outros controles, e não
depende do all-ways-egpu. O instalador remove o egpu-switch do Decky durante
a migração. Se você ainda usa o plugin antigo, atualize para a 0.3.4 e
depois migre para o Yby eGPU.
- Alta: o root executava um arquivo que o usuário podia alterar. O
plugin roda como root e executava oall-ways-egpude~/bin(e do
/home/*/binde qualquer usuário) a cada poucos segundos. Qualquer
programa do usuário podia substituir esse arquivo e obter privilégios de root sem senha.
Agora o plugin e o gancho de desligamento emextras/só executam o
all-ways-egpu quando o arquivo e todas as pastas acima dele pertencem ao root e
não permitem escrita por outros usuários. Se o seu estiver em~/bin, o painel mostra
o comando para instalar em um diretório do sistema. - Média: o root seguia um link ao salvar as configurações. O
settings.jsonfica numa pasta do usuário; substituí-lo por um link simbólico fazia o
root sobrescrever qualquer arquivo do sistema, e a tela de configurações
podia ler qualquer arquivo JSON. Agora as configurações são lidas e
gravadas sem seguir links simbólicos. A gravação usa um arquivo
temporário, e apenas as duas opções reconhecidas são mantidas. - Baixa: nomes fixos em
/tmp. O gancho de desligamento gravava erros
em arquivos previsíveis no/tmpcomo root. Não usa mais o/tmp. - Baixa: a Busca profunda podia escolher uma ponte de outro domínio PCI.
A busca agora também confere o domínio PCI.
Español
Esta es la última versión de egpu-switch. El proyecto continúa como
Yby eGPU, que mantiene el cambio de GPU y
la expulsión segura, añade una app de escritorio y otros controles, y no
depende de all-ways-egpu. Su instalador retira egpu-switch de Decky. Si aún
usas el plugin antiguo, actualiza a la 0.3.4 y después migra a Yby eGPU.
- Alta: root ejecutaba un archivo que el usuario podía cambiar. El
plugin se ejecuta como root y ejecutabaall-ways-egpudesde~/bin(y
desde el/home/*/binde cualquier usuario) cada pocos segundos.
Cualquier programa del usuario podía sustituir ese archivo y obtener root
sin contraseña. Ahora el plugin y el gancho de apagado deextras/solo
ejecutan all-ways-egpu cuando el archivo y todas las carpetas por encima
pertenecen a root y nadie más puede modificarlos. Si el tuyo está en
~/bin, el panel muestra el comando para instalarlo en un directorio del
sistema. - Media: root seguía un enlace al guardar los ajustes.
settings.json
está en una carpeta del usuario; sustituirlo por un enlace hacía que root
sobrescribiera cualquier archivo del sistema, y la pantalla de ajustes
podía leer cualquier archivo JSON. Ahora los ajustes se leen y escriben sin
seguir enlaces, mediante un archivo temporal, y solo se conservan las dos
opciones conocidas. - Baja: nombres fijos en
/tmp. El gancho de apagado escribía errores
en archivos predecibles de/tmpcomo root. Ya no usa/tmp. - Baja: la búsqueda profunda podía elegir un puente de otro dominio PCI.
Ahora comprueba también el dominio.
简体中文
这是 egpu-switch 的最后一个版本。 项目以
Yby eGPU 的形式继续,它保留了
egpu-switch 的 GPU 切换和安全弹出功能,增加了桌面应用等功能,并且不再依赖
all-ways-egpu。安装程序会把
egpu-switch 移出 Decky。正在使用 egpu-switch 的用户请立即更新到 0.3.4,并迁移
到 Yby eGPU。
- 高危:root 会执行用户可修改的文件。 插件以 root 身份运行,每隔几秒就会从
~/bin(以及任意用户的/home/*/bin)执行all-ways-egpu。任何以用户身份
运行的程序都能替换该文件并无需密码获得 root 权限。现在插件以及extras/中的
关机钩子,只有在该文件及其所有上级目录都属于 root 且他人无法写入时才会执行
all-ways-egpu。如果你的文件在~/bin,面板会显示将其安装到系统范围的命令。 - 中危:root 保存设置时会跟随链接。
settings.json位于用户拥有的目录中;
将其替换为链接会让 root 覆盖系统中的任意文件,设置界面也能读取任意 JSON
文件。现在读写设置时不跟随链接,通过临时文件写入,并且只保留两个已知选项。 - 低危:
/tmp中的固定文件名。 关机钩子以 root 身份把错误写入/tmp中
可预测的文件。现在不再使用/tmp。 - 低危:深度重新扫描可能选中其他 PCI 域的桥。 现在也会核对域。
Français
Ceci est la dernière version d'egpu-switch. Le projet continue sous le
nom Yby eGPU, qui conserve le basculement
de GPU et l'éjection sûre, ajoute une application de bureau et d'autres
commandes, sans dépendre d'all-ways-egpu. Son installateur retire
egpu-switch de Decky. Si vous utilisez egpu-switch, mettez à jour vers la
0.3.4 maintenant, puis passez à Yby eGPU.
- Élevée : root exécutait un fichier modifiable par l'utilisateur. Le
plugin tourne en root et exécutaitall-ways-egpudepuis~/bin(et
depuis le/home/*/binde n'importe quel utilisateur) toutes les quelques
secondes. N'importe quel programme de l'utilisateur pouvait remplacer ce
fichier et obtenir root sans mot de passe. Le plugin et le hook
d'extinction dansextras/n'exécutent désormais all-ways-egpu que si le
fichier et tous les dossiers au-dessus appartiennent à root et que
personne d'autre ne peut les modifier. Si le vôtre est dans~/bin, le
panneau affiche la commande pour l'installer dans un répertoire système. - Moyenne : root suivait un lien en enregistrant les paramètres.
settings.jsonse trouve dans un dossier de l'utilisateur ; le remplacer
par un lien faisait écraser par root n'importe quel fichier du système, et
l'écran des paramètres pouvait lire n'importe quel fichier JSON. Les
paramètres sont désormais lus et écrits sans suivre de lien, via un
fichier temporaire, et seules les deux options connues sont conservées. - Faible : noms de fichiers fixes dans
/tmp. Le hook d'extinction
écrivait ses erreurs dans des fichiers prévisibles de/tmpen root. Il
n'utilise plus/tmp. - Faible : la recherche approfondie pouvait choisir un pont d'un autre
domaine PCI. Elle vérifie désormais aussi le domaine.
Download: egpu-switch.zip below (Decky: Settings, Developer, Install Plugin from ZIP File).