ToDesktop建置機漏洞

只是想裝個 Cursor 來玩玩,卻意外發現個嚴重的漏洞?

一名資安研究員 xyzeva 在安裝 Cursor 的時候,發現了一個連線到 todesktop[dot]com 的請求,於是就好奇往下追,去看看這是什麼。發現 ToDesktop 是個能夠讓快速讓 web app 變成 desktop app 的服務(其實就是外面包一層 Electron 啦),也一併提供了 installer, auto update 等功能。

因此在安裝 Cursor 時,才會有連線到 ToDesktop 的請求。

經過了一番摸索之後,xyzeva 自己試用了一下 ToDesktop 的服務,做了個簡單的 app,並且在 package.json 的 postinstall 裡面放了一段 reverse shell 的程式碼。

因為 app 最後是在 ToDesktop 的 server build 的,所以 reverse shell 被觸發,xyzeva 成功進入了他們的 builder。結果找著找著就看到 config.prod.json.encrypted 跟 config.prod.json,一打開發現 HSM 的 secret 跟各種 credentials 都在裡面。

拿到這些 credentials 以後,可以自己簽一個合法的 package,然後自動幫有用 ToDesktop 這服務的軟體更新,如 Cursor、ClickUp 或是 Linear 等等。

最後 xyzeva 從 ToDesktop 那邊拿到了 5 千塊美金的賞金,而 Cursor 則另外加碼了 5 萬美金。

整件事情發生在去年 10 月,ToDesktop 被找到漏洞後也在 26 小時內快速修復,然後找資安公司來做 audit,一直到一月底完成,二月底複測結束,因此三月初公開漏洞。

,原文有更多細節,有興趣的可以看看。

話說這種 builder 拿 reverse shell 的操作滿常見的,你在 GitHub Actions 或是 Heroku 之類的也能做到(之前我有試過可以,現在不確定啦),畢竟這些 builder 就是要跑程式碼的,所以會執行任意指令也不意外。

但重點是權限的控管,不能讓這些 builder 有太多敏感資訊,不然就全部都曝光了。這些 builder 的 threat model 應該會是:「假設外人可以執行任意指令,該怎麼防禦?」,例如說弄個 sandbox 或是跑一個沒什麼權限的 container 之類的,而 ToDesktop 忽略了這點,就直接 gg 了。

評論