症状(重大)
- inbox の stored XSS:
page.url を escapeHtml 後に <a href> へ入れているが、javascript: スキームはエスケープでは防げない。page.url = \"javascript:...\" の payload を受信すると、inbox でリンククリック時に receiver オリジンで実行される
- GitHub issue body の markdown 注入:
| Page | [label](${page.url}) | の URL 部が生埋めで、) 等を含む URL で markdown が崩れ任意の markdown を注入できる。コメント・element text の複数行 blockquote も \``` で崩せる
対応案
- href / markdown link に使う URL は
http(s): のみ許可(不一致はプレーンテキスト表示)
- markdown link の URL は
< > で囲む([label](<url>))か encode する
- テスト:
javascript: URL の payload → inbox HTML に href として出ないこと
対象: server/receive.js の renderInbox / gitHubIssueBody
症状(重大)
page.urlをescapeHtml後に<a href>へ入れているが、javascript:スキームはエスケープでは防げない。page.url = \"javascript:...\"の payload を受信すると、inbox でリンククリック時に receiver オリジンで実行される| Page | [label](${page.url}) |の URL 部が生埋めで、)等を含む URL で markdown が崩れ任意の markdown を注入できる。コメント・element text の複数行 blockquote も\``` で崩せる対応案
http(s):のみ許可(不一致はプレーンテキスト表示)<>で囲む([label](<url>))か encode するjavascript:URL の payload → inbox HTML に href として出ないこと対象:
server/receive.jsのrenderInbox/gitHubIssueBody