Damus
洪 民憙 (Hong Minhee) :nonbinary: profile picture
洪 民憙 (Hong Minhee) :nonbinary:
@洪 民憙 (Hong Minhee) :nonbinary:

An intersectionalist, feminist, and socialist living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in #TypeScript, #Haskell, #Rust, & #Python. They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. #TypeScript, #Haskell, #Rust, #Python 等으로 自由 소프트웨어 만듦.

#國漢文混用體 #한국어 (#朝鮮語) #English #日本語

Relays (1)
  • wss://relay.ditto.pub – read & write

Recent Notes

愛知 philo · 5w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqdlt8skfq67hwt8fycg65a8jlm82j9j9zg8su76me567f5htzpxgsu2zdus Great job, and thank you for coming to COSCUP! I want to express my grat...
wakest ⁂ · 4w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqdlt8skfq67hwt8fycg65a8jlm82j9j9zg8su76me567f5htzpxgsu2zdus so glad to hear this went well! Was it recorded?
silverpill · 6w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpq5xsduy5pll5s9ve25gwsz046jm58jmdpt5gawzxnx2xwa9eqfeesacvhgs We are building a tool that checks whether an implementation supports a...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
ActivityPub assumes content is text/html by default when mediaType isn't specified, whether the object is a Note or an Article. Misskey does something different, for reasons I still don't fully understand. It stores its internal representation as MFM, its own markup language. Between Misskey instances, it sends that through a separate _misskey_content property rather than content itself. When talking to non-Misskey software, it converts HTML into MFM.

The trouble is that MFM can represent much less than HTML. If another implementation sends HTML that has no clean MFM equivalent, the formatting comes out mangled in Misskey.

I keep wondering why Misskey didn't just store HTML, like Mastodon and most other implementations do, or at least kept both the source markup and the rendered HTML side by side. I know storing only HTML can lose some MFM features too. I still don't understand why Misskey chose the format that can represent less.
洪 民憙 (Hong Minhee) :nonbinary: profile picture
The more I work on Hollo, the more its Mastodon-compatible API feels like a straitjacket. I chose it for a practical reason: people could use existing clients, and I wouldn't have to build a frontend too. I still think that was the right call at the time.

The problem is that clients can only expose what Mastodon's API represents. I keep coming up with ideas, then asking whether the API has anywhere to put them. If it doesn't, I have no way to get the feature in front of users.

ActivityPub API (so-called “C2S”) might be the eventual answer, but it doesn't help much today. I don't know of any clients Hollo users could realistically use with it, and adoption is still limited.

So I keep coming back to the idea that Hollo will need a frontend of its own. I'd keep the Mastodon API for existing apps. I'm not especially eager to take on a whole frontend, but I don't see another way to try ideas that don't fit Mastodon's model.
11
nostrich · 9w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 Several platforms have extensions or variations of the mastodon api that I and some others try to accommodate, but it depends how well they're documented (gotosocial, mitra, neodb, plero...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
#Mastodon's #ActivityPub inbox treats object types in tiers. Note and Question are supported directly. A second tier, Article, Page, Image, Audio, Video, and Event, gets converted to a title, a summary, and a link; content itself doesn't show. Anything outside both tiers is dropped on delivery, which is a large part of why so much of the fediverse federates as Note regardless of what the object actually is.

mastodon/mastodon#24079 asks for content to show up whenever it's present and the mediaType is supported, independent of type. Open since 2023, and as far as the thread shows, no core team engagement beyond one offhand remark that they're not happy with the status quo either.

Reading the issue text closely, it's a bit ambiguous whether it covers the drop tier or only the convert-to-title-and-link tier. I left a comment asking for clarification, since the fix looks very different depending on the answer.

If you build on ActivityPub, a comment or a reaction there is worth more than another workaround.

#fedidev #fediverse
13
silverpill · 9w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 Added a comment https://github.com/mastodon/mastodon/issues/24079#issuecomment-4938693508
〽️ɪɢᴜᴇʟ 🔜 GodotFest · 9w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 this reads like "here are some technical reasons that justify for us to create a competitor spec but we will just shoehorn 90% of Bluesky accounts onto a single instance anyways" When y...
zunda · 12w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 はい。 https://github.com/zunda/mitome.in/pull/192 でも問題は見つけてないのですが、僕はReactにもVueにも疎くて、正式版にならない理由も分からな...
silverpill · 12w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 When two implementations don't federate, the slow part is usually figuring out where the exchange broke: signing, JSON-LD processing, WebFinger, or something less obvious. DrFed's first...
silverpill · 13w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpq4m5mtm90njtvnfethdhsy4svharvsyr7kep4dws6y9kvdn8sj96szxw028 That gap could allow outbound requests to ranges such as carrier-grade NAT, benchmark...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
@silverpill The dangerous case is not that every one of those ranges is equally exploitable. For example, the documentation ranges are mostly a correctness signal.

The real concern is that this function is an SSRF boundary. Once Fedify decides “this URL is public enough to fetch,” the request is made from the server's network, not from the attacker's network.

A realistic example would be a Fedify server running in an environment where 100.64.0.0/10 is used for provider, VPN, Kubernetes, or internal service networking. If an attacker can put a URL like https://100.64.0.10/... in a remote ActivityPub object or media URL, and Fedify classifies that address as public, the Fedify server may send a request to something only reachable from inside that deployment. That could be an internal HTTP service, proxy, metadata endpoint, admin panel, or just a host that reveals reachability through timing or errors.

Similar reasoning applies to ranges like 198.18.0.0/15 in lab or benchmarking networks, and to IPv6 translation/tunneling prefixes where an address can map back to a private IPv4 destination.

So I would not phrase it as “documentation or multicast addresses are always practical SSRF targets.” The issue is that a security check whose job is to allow only public internet destinations was accepting addresses that are not public internet destinations. For SSRF mitigation, that should fail closed: allow globally routable public addresses, reject the rest.
1
silverpill · 13w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 >So I would not phrase it as “documentation or multicast addresses are always practical SSRF targets.” But could they be, even in theory? I found that 100.64.0.0/10 is indeed used ...