evernote.comにあったDOM Based XSS

先日evernote.comのコードを見ていたら変わった箇所を見つけまして

f:id:ooooooo_q:20161002170513p:plain

url中にstageが含まれているときだけ実行される処理です。試しに実際に実行してみるとステージング環境であることを示す警告文が表示されます。

コード中で変数jdocument.URLの値が代入されていますが、この値がエスケープされずにhtmlが組み立てられています。document.URL(やlocation.href)の値がパーセントエンコードされているかはブラウザによって違いまして、chromeからアクセスしてやるとこうなります。

f:id:ooooooo_q:20161002171239p:plain

XSSですね。

evernote脆弱性情報窓口が設けられいる( セキュリティ問題の報告 | Evernote)のでそちらから報告しました。次の日には返答があって、数日後には修正がリリースされていました。