OAuth/OIDC在mobile app生態上是防不勝防的security漏洞

前言

我平時都有留意開做Single Sign On既方法,而之前有看過OAuth2同OpenID Connect(OIDC),我亦都寫過幾個post去討論。
web application上應用OAuth2/OIDC是基本上沒太大安全問題的,但在mobile app上的應用其實就可能對生態構成security漏洞。
 
昨天突然想通了一些東西。
mobie app與web application的分別其實在於agent。

mobie app與web application分別在於agent

web application的use case,agent就是browser(e.g: firefox/chrome)。
而mobile app的use case,agent就是mobile app本身,相對地是不可靠的。
 
打個比喻,如果是web application的use case,而現在你使用一個極可疑的malicious browser去進行OAuth/OIDC flow。
那肯定會有安全問題,因為malicious browser是可以capture你的login password。
(一般情況下user是用正常firefox/chrome就不會有問題,因為它們內置了很多安全機制去保護end user。這就是為什麼web application usage是基本上安全。)
換句話說,只要agent是compromised/malicious,其實就很難做到security protect。因為單單是只要在過程中用到過password,都可能被惡意agent capture,從而出現安全問題。
 

惡意mobile app的可行設計

例如,mobile app就可以這樣做一個惡意app:
mobile app表面上假扮進行OAuth (假設是使用Facebook login),實際上其實是一個模仿facebook login page的假的browser UI。
在login過程中,這mobile app就偷偷的capture user login name/password,並使用proxy方法進行login。
結果就是end user在不知情的情況下login而login password被偷取了。

結論

明白到關鍵位是agent,而mobile agent就是mobile app本身,所以我結論就是,基於desgin問題,OAuth/OIDC那種做法的flow是近乎不可能保障mobile app usage的生態安全。

Leave a Reply

Your email address will not be published.