The purpose of jailing an Xorg application is to prevent it from accessing @/tmp/X11/X0 and /tmp/X11/X0 and then re-using its MIT-MAGIC-COOKIE to steal from other apps that are connected to the X server
Um ... não? Se você ler, por exemplo este guia ,
The sandbox replaces the regular X11 server with Xpra or Xephyr server. This prevents X11 keyboard loggers and screenshot utilities from accessing the main X11 server.
Assim, o propósito de se prender um aplicativo X é impedir completamente que ele acesse o servidor principal e, em vez disso, permitir que ele acesse um servidor proxy. Mesmo que o aplicativo tente truques com o servidor proxy, isso não afetará o servidor principal.
Não sei exatamente qual cenário você descreveu, mas qualquer aplicativo X que tenha acesso ao servidor principal de alguma forma, mesmo que a autorização inicial com cookies do MIT não tenha sido feita pelo próprio aplicativo, pode fazer truques nesse servidor, como chave registrando ou acessando outras janelas. Não precisa falhar para fazer isso. Então, fazer a autorização inicial para o aplicativo e, em seguida, impedi-lo de nova autorização não ajuda de forma alguma.
Você possivelmente esqueceu que o ponto principal de iniciar o aplicativo preso de uma maneira particular é fazer com que ele acesse um servidor proxy X?
Editar
I'm just trying to understand what EXACTLY firejail's doing different from traditional xauth/.Xauthority to make the jailed app secure.
Firejail está mostrando ao aplicativo um proxy de servidor X e está impedindo que o aplicativo acesse o servidor X principal. Isso é tudo. O mecanismo xauth tradicional é exatamente o mesmo, tanto entre o aplicativo quanto o proxy X, e entre o proxy X e o servidor X principal. (E sim, é claro que o proxy X precisa acessar o servidor principal, ou, precisa haver um programa que possa acessar tanto o servidor X principal quanto o proxy X. Mas esses programas são > confiável , ao contrário do aplicativo).
and is then relying on Namespaces and to prevent that cookie from being compromised.. and as an added measure hiding the Xorg socket.
Não. O ponto dos namespaces é tornar os terminais de comunicação do servidor X principais inacessíveis. Como em "eles não existem". Não está realmente "escondendo" nada ("está lá, mas você não pode ver"). Não está mais lá, no que diz respeito ao aplicativo preso. Da mesma forma, um contêiner do Docker usa namespaces para fingir que os aplicativos no contêiner estão sendo executados em um ambiente completamente diferente.
Não ter o aplicativo preso ver os terminais de comunicação do servidor X principal já seria suficiente, mas é claro que não há razão para que o aplicativo preso veja cookies MIT válidos para o servidor X principal.
Os pipes nomeados não têm nada a ver com isso. Nem tem falhas. Nem o modo como o mecanismo de autenticação X funciona.