RyotaK
RyotaK
@ThexXTURBOXx @JamieSlome I'm terribly sorry, I completely missed this thread. I've submitted the report on huntr.dev, so you should receive the email from them within few days.
Can I request CVE number for this vulnerability?
Hello @jackycute Thank you for your reply. I've requested CVE number to MITRE Corporation. Regards, RyotaK
> とりあえずコンテキストの共有ですが、現在の server/web/views あたりの構造(どのようにバックエンドが HTML を生成してフロントエンドのアセットを配信するか)は [aoi 時代からのもの](https://github.com/misskey-dev/misskey/blob/b3f42e62af698a67c2250533c437569559f1fdf9/src/web/app/base.pug)からあまり大胆に手を加えていないまま今日に至るので、大胆な変更もやぶさかでなく、見直しの自由度は高いです。 様々な方法を検討してみたのですが、以下のような理由で大幅な変更は行わずにJavaScriptファイルを外部に分ける形での対応が良さそうでした。 #### nonceを用いたCSP `@fastify/helmet` を用いることによりdecoratorを使って動的なnonceの付与ができそうではあるが、この手法を使った場合毎回HTMLレスポンスが動的に変化してしまうため、キャッシュなどの観点から考えると望ましくない #### ハッシュを用いたCSP テンプレートエンジンを変更し、動的にインラインスクリプトのハッシュ値を計算できると嬉しいという点はありつつ、[`@fastify/view`がサポートしているテンプレートエンジン](https://github.com/fastify/point-of-view/blob/7a99ffb44afdda43980d308700bb730caec80a16/index.js#L13)の中に当該の機能を持つものが無さそう (あるにはあるが、結局外部のファイルへ分割してそのファイルのハッシュ値を計算しているため、これを行う事によるメリットがあまり無い) > 例えば >> 最後のもののみintegrity属性を設定しているので、ここだけ例外的にハッシュを使用する形にしても良さそう > >は、ひとまず OpenAPI のドキュメントが見られる状態になることを目的としてシンプルに組み上げていたり(#4351)しているだけで、そもそも特段 CDN で切り出している理由はない認識です。 こちらのドキュメントに関してなのですが、どうやら 3a7182bfb5734599321fc03ea77c48b4dbc326d5 で参照していたエンドポイントが削除されているようで、どこからも参照されていない状態になっているようでした。...
Misskey.io上で確認された限りだと、UUID以外に指定されているものだと32文字が最低だったため、修正案2で32文字制限をかけると良さそう
> これクライアント側の表示ってどうなります? ボタンは押せますが、押しても何も反応しない状態になります (ボタンを押せなくするのは #10238 で対応しています)
おそらくこれ? https://bugs.mojang.com/browse/MC-95649
https://github.com/webpack/webpack/blob/c181294865dca01b28e6e316636fef5f2aad4eb6/lib/runtime/GlobalRuntimeModule.js#L29 これを読んだ限りではCSPが有効化されていた場合の例外処理もされていそう?なので実は`unsafe-eval`いらないかもしれない
> 多分 unsafe-eval 外しても問題ないと思います([なんなら Content-Security-Policy と Content-Security-Policy-Report-Only を一旦併用して雑に洗い出し](https://www.w3.org/TR/CSP2/#processing-model)ても良いかも) 明日試してみます!
misskey.ioの村上さんにお願いしてCSP関連のログをご提供いただけることになったので、一旦`Content-Security-Policy-Report-Only`のみをmisskey.ioで有効化してログを確認した上で、改めて`Content-Security-Policy`を有効化する方向にしようと思います!