gitbucket1.8バージョンreadmeについてmdのXSSホール


最近,gitbucketをプロジェクト開発におけるコード管理ツールとして利用している.gitbucket:gitbucketはgithubインタフェースを模したコード管理ツールです.scala言語で開発され、jgitオープンソースツールを使用してgitコマンドを管理および操作し、軽量レベルのメモリデータベースh2データベース(jarパッケージ1つ)を内蔵しています.このプロジェクトの更新は比較的速く、現在の最近のバージョンは1.11に達しています.
1.8バージョンを使用すると、XSSの脆弱性に遭遇しました.プロジェクトを作成し(あまり正式にする必要はありません)、READMEを作成します.mdファイル.README.mdファイルにxss攻撃文:">alert(1)<"を追加し、アイテムをアップロードします.ユーザーがアップロードしたアイテムにアクセスすると、ブラウザはjavascriptコマンド:alert(1)を解析します.
XSSに攻撃されないようにgitbucketでREADMEをmdファイルの内容をユーザのブラウザに渡す前にREADME.mdの内容をhtmlの内容に変換し、例えば「」を「"」に変換する.など.
READMEを読み出す.mdのプログラムファイルファイルはapp/RepositoryViewerController.fileList.FileListメソッドにはREADMEを取得する方法がある.mdファイルの内容の方法:
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)

アップエスケープメソッドを追加するには、次の手順に従います.
 
 
StringUtil.convertFromByteArray(JGitUtil.getContent(Git.open(getRepositoryDir(repository.owner, repository.name)), file.id, true).get)
              .replace("&", "&amp;").replace(">", "&gt;").replace("<", "&lt;").replace("\"", "&quot;")

以前のプロジェクト、READMEに再アクセスします.mdは「>alert(1)<」を表示し、javascriptは実行されません.
 
安全を大切にし、XSSから離れる