2024年4月29日から30日にかけてIceshrimpおよびめいすきーで修正されたMisskeyのセキュリティ上の問題を本家においても修正することを目的としたパッチを公開します。公開の経緯およびパッチの詳細については引用元の投稿とそのリンク先のREADMEを参照してください。
QT: https://fedibird.com/@tesaguri/112355977374946818 [参照]
FediverseがDDoSツールになるの、外部の最も修正すべきって意見はわかるけど理念的に最も修正困難な問題だし手のつけようがないのではって気持ちにもなる
もしかしたら<https://registry.ietf.org/ietf-digest-algorithms#SHA256>に何か書いてあったのかも知れないけど、リンクが切れている(というかregistry.ietf.orgとかいう強そうな名前のドメインでも落ちるものなのか……)
ところで`RsaSignature2017`の定義(というかより仕様中でsignature suiteの例として示されていただけの定義だけど……)としては`"digestAlgorithm": "https://registry.ietf.org/ietf-digest-algorithms#SHA256" `としか指定されていたのに対してMastodonの実装ではCreate Verify Hash Algorithmにおける"the message digest algorithm"相当の処理で入力をSHA-256でハッシュしてから16進法表現にエンコードしている(<https://github.com/mastodon/mastodon/blob/1726085db5cd73dd30953da858f9887bcc90b958/app/lib/activitypub/linked_data_signature.rb#L55>)のだけど、この16進法表現の根拠がいまいち分かっていない
古いドラフトの仕様が使われているという点についてはcavage-http-signaturesにも言えることだけど、Linked Data Signaturesは当時のドラフト(<https://github.com/w3c-ccg/ld-signatures/blob/d0af56856684924156a94838f9482a27766bb2be/index.html>)のSecurity Considerations節が空っぽだったという点において微妙さのレベルが一段違うと思う
まあ、Mastodonのドキュメント(<https://docs.joinmastodon.org/spec/security/#ld>)にも書かれているとおり、Linked Data Signaturesというドラフト段階の仕様は必要がないなら実装するべきでないですよね(今言うことか?)
PoCを試みているときに良い感じのLD Signaturesの署名用のツールがないものかとざっと探したところめぼしいものが見当たらなかったので、なら自分で書くかと思って書き始めて途中で正気に戻って一旦放棄したやつです(?)
tesaguri/rsa-signature-2017-rs: [WIP] Rust implementation of `RsaSignature2017` cryptosuite of Linked Data Signatures spec
https://github.com/tesaguri/rsa-signature-2017-rs
はい(?)
けものフレンズ3|おしらせ|(5/1 18:00更新)「のとじま臨海公園水族館」様に対する支援金の寄付実施について|アピリッツ
https://kemono-friends-3.jp/info/detail/010898JaZFaNb6.html
そういえば今さらだけど、情報公開後はCI走らせ放題なのだから、やろうと思えばちゃちゃっと手直ししてテストすることも出来たか。今はもう上流にもマージされているのであれだけど
QT: https://fedibird.com/@tesaguri/112359219184301424 [参照]
私だったら CONTEXTS → PRELOADED_CONTEXTS のリネームも混乱を招くからしないわね。
この場合パッチに不具合があるとかコンフリクトして適用を諦められるってことだけは絶対に避けたいのだわね。
RE: https://fedibird.com/users/tesaguri/statuses/112359224014348867 [参照]
https://gist.github.com/tesaguri/f3c73f81bc000f669fc8adfab316603b#file-hotfix-ghsa-2vxv-pv3m-3wvj-patch-L9
署名以外の処理もするようになったしもはや`LdSignatureService`という命名は相応しくないやろ〜と改名してしまったけど、冷静に考えると脆弱性の修正にそんなしょうもないリファクタリングを抱き合わせるなという話なのだよな……
すべてのMisskey forkのメンテナはとっとと修正してなのだわ
v11: https://github.com/mei23/misskey-v11/commit/0d0a465c057837684633e66364e98c7adb8437c6
v12: https://firefish.dev/firefish/firefish/-/commit/e790d6be90dfd5dc6471b650a54520761bb9d745
v13- や 2024.3.1: https://gist.github.com/tesaguri/f3c73f81bc000f669fc8adfab316603b#file-hotfix-ghsa-2vxv-pv3m-3wvj-patch
RE: https://misskey.m544.net/notes/718f2c5155c26c6aff771e38 [参照]
この方はただの例です