Jakého scénáře se chyba týká
Chyba se týká prostředí, kde server nedůvěřuje přímo jednotlivému uživatelskému veřejnému klíči, ale důvěřuje CA klíči, který může podepisovat SSH uživatelské certifikáty.
Princip zranitelnosti SplitSSHell
V postiženém scénáři server důvěřuje CA klíči uvedenému v authorized_keys například takto:
cert-authority,principals="root" ssh-ed25519 AAAA...CA_KEY...
Server tím říká:
Přijmu certifikát podepsaný touto CA, pokud obsahuje povolený principal root.
Chyba spočívala v tom, že principal z certifikátu mohl být chybně interpretován jako seznam hodnot oddělených čárkou.
Například certifikát s principalem:
deploy,root
měl být správně vyhodnocen jako jeden řetězec:
"deploy,root"
A tedy jako něco jiného než:
"root"
Zranitelná logika ho ale mohla rozdělit podle čárky:
deploy
root
A část root pak přijmout jako platný principal.
Výsledkem mohlo být, že certifikát, který neměl opravňovat k přístupu jako root, byl za určitých podmínek chybně přijat.
Zjednodušeně:
povolený principal na serveru: root
principal v certifikátu: deploy,root
správně: neshoda
chybně: shoda, protože se našel fragment root
Nejde tedy o prolomení šifrování ani o chybu běžných SSH klíčů. Problém je v nesprávném porovnání textového pole principal při práci s SSH certifikáty.