08:30:04
icon

しかしこれ、Activity Streamsとしては妥当でもActivityPubとしては副作用を伴う操作を通知するための`inbox`を特定できないのが困るか。
うーん、`endpoints`プロパティは任意のオブジェクトに持たせても良いものとしません?(?)

12:58:06
2024-09-07 12:40:28 Posting らりお・ザ・何らかの🈗然㊌ソムリエ lo48576@mastodon.cardina1.red
icon

規格上はそうなのだが、現実に拡張データはすべて (署名まわりのあれこれとかもたぶん含めて) JSON-LD セマンティクスで付与されるので、そこに問題がある

12:58:08
2024-09-07 12:41:39 Posting らりお・ザ・何らかの🈗然㊌ソムリエ lo48576@mastodon.cardina1.red
icon

つまり吐く方は特定の構造を決め打ちで吐くのでも良いのだが、読む方が JSON-LD 非対応で特定の構造のみに対応してしまうと、「本当は嘘の署名があるのに、署名がないと認識して素通ししてしまう」みたいなアカン現象を発生させるおそれがあるのでセキュリティリスクになる

12:58:12
icon

nvd.nist.gov/vuln/detail/CVE-2
> Mastodon before 3.3.2 and 3.4.x before 3.4.6 has incorrect access control because it does not compact incoming signed JSON-LD activities. (JSON-LD signing has been supported since version 1.6.0.)

13:08:32
icon

まあ基本的に送信側としては利用する全てのタームを`@context`で定義しておけば十分で(これはそこまで難しくない)、受信側としてはRDFベースの署名を無視する方針なら特にセキュリティ上の問題はないはず。
オブジェクトの署名を無視しても一応`id`のURIをfetchすればオブジェクトの真正性は検証できるし(非効率だけど)。Pleromaとかがinbox forwardingをそのように処理しているという話を聞いた覚えがある

13:14:13
icon

Add tests for CVE-2022-24307 by ClearlyClaire · Pull Request #17733 · mastodon/mastodon
github.com/mastodon/mastodon/p
テストケースに攻撃の具体例がある

Web site image
Add tests for CVE-2022-24307 by ClearlyClaire · Pull Request #17733 · mastodon/mastodon
13:31:51
icon

具体的なJSONシリアリゼーションでなくRDFデータセットを署名することで、例えばJSON-LDで送られてきたオブジェクトを署名を保ったままCBOR-LDに変換できちまうんだ。すごい! 実際にそんなことをしている実装があるのかは知らんけど!

13:52:02
2024-05-02 18:40:33 Posting tesaguri 🦀🦝 tesaguri@fedibird.com
icon

まあ、Mastodonのドキュメント(<docs.joinmastodon.org/spec/sec>)にも書かれているとおり、Linked Data Signaturesというドラフト段階の仕様は必要がないなら実装するべきでないですよね(今言うことか?)

13:52:11
icon

はい

13:57:05
icon

どうしてもRDFデータセットを署名したいならVerifiable Credentials Data Integrityが勧告になるのを待って`eddsa-rdfc-2022` cryptosuiteあたりを使うのが理想的なやり方かな。
まあFEP-8b32 (Object Integrity Proofs)ではJSONベースの`eddsa-jcs-2022`が推奨されているのだけど

14:01:24
icon

FEP-8b32はJSONベースの署名を埋め込みオブジェクトで上手く動作させるために`object`タームの定義をオーバーライドしてセマンティクスにも手を入れているけど(<codeberg.org/fediverse/fep/src>)、Activity StreamsオブジェクトをRDFとして扱っている実装(`rdf-pub`がそうだっけ?)との互換性が気になっている

18:14:57
icon

@hongminhee フォーク元のMastodonのバージョンが編集機能が実装されるより以前のものだったらしいです
QT: fedibird.com/@noellabo/1108028
[参照]

Web site image
のえる (@noellabo@fedibird.com)
Web site image
投稿の参照(1件) by tesaguri 🦀🦝 (@tesaguri@fedibird.com)
18:37:13
icon

RUSTSEC-2024-0370: proc-macro-error: proc-macro-error is unmaintained › RustSec Advisory Database
rustsec.org/advisories/RUSTSEC
セキュリティ的な問題はあまりなさそうだけど、`syn` v2対応の見込みがないのは確かに困るな

RUSTSEC-2024-0370: proc-macro-error: proc-macro-error is unmaintained › RustSec Advisory Database
18:37:30
icon

まあ私の場合は元々自前のユーティリティがあって、それをほぼdrop-inで`proc-macro-error`に置き換えただけなので、最悪それを元に戻すだけで済みそうだけど

18:42:06
icon

Use `proc-macro-error` crate · tesaguri/oauth1-request-rs@c03480f
github.com/tesaguri/oauth1-req
55 additions and 88 deletionsか。まあコード量としては許容範囲か。
`proc-macro-crate`の"dummy implementations"機能にも新たに依存しているけど、これは普通に自前で同様のことが出来そうかな

Web site image
Use `proc-macro-error` crate ?? tesaguri/oauth1-request-rs@c03480f
18:46:45
icon

正直`proc_macro_error`属性マクロが具体的に何をしているのかよく把握していなかったので、処理が明示的だったという点でむしろ自前APIの方が良かったまであるかもしれない

18:57:37
icon

Don't leak a TokenStream in Ctxt::emit_errors. by eddyb · Pull Request #2 · tesaguri/oauth1-request-rs
github.com/tesaguri/oauth1-req
(空の)`TokenStream`を`forget`するという操作でCraterに引っかかった思い出

Web site image
Don''t leak a TokenStream in Ctxt::emit_errors. by eddyb ?? Pull Request #2 ?? tesaguri/oauth1-request-rs
19:30:47
icon

github.com/tesaguri/oauth1-req
コンパイルテストの意図であえて`&String::new()`としていたのがClippyで`""`にするように警告されるな(それはそう)

Web site image
oauth1-request-rs/oauth1-request-derive/src/method_body/helper.rs at 2a9ff26f05baba9ec7f2075d77d3a67189bbbff1 ?? tesaguri/oauth1-request-rs
20:06:27
icon

誤操作でFirefoxの`permissions.sqlite`を消してしまった……

20:11:16
icon

`Profiles`ディレクトリの外で`sqlite3 permissions.sqlite`して間違ったわガハハと言いながら`rm permissions.sqlite`しつつ`Profiles`ディレクトリに`pushd`して、そこで`^Rperm^J`してしまい、はい

20:13:43
icon

まあ消したのが`storage.sqlite`などでなく`permissions.sqlite`だったのは不幸中の幸いか。設定を元に戻すのが面倒くさいけど……

20:36:59
icon

`myna.go.jp`とかいう、Cookieを拒否するだけで無限リダイレクトするWebサイトなあ……

23:15:16
icon

@silverpill Ah, that's good to know! Thank you!