jdev - 2025-10-30


  1. singpolyma

    > it's going to be a case by case basis, but the default should be if you don't understand something or why someone would be sending it to you, do not respond except that we have a safe and specified response you can always send. because you *do* understand "this is an iq" and there is 100% of the time a safe response to an iq (iq error service-unavailable)

  2. moparisthebest

    that can't possibly be true, also if it was you still wouldn't want to respond every time what if some remote thing malfunctions and starts sending you IQ requests 100 times per second? You should keep replying forever?

  3. moparisthebest

    https://googleprojectzero.blogspot.com/2020/08/exploiting-android-messengers-part-3.html is what I was looking for, just a dozen or so of the many vulns caused by exchanging data with attackers without human interaction

  4. singpolyma

    Literally everything works this way yes. if you send an HTTP request to an HTTP server it always replies too. this isn't a security hole it's just functioning as intended...

  5. singpolyma

    if you send an http server random garbage then no promises. but we're not talking about random garbage we're talking about a valid iq request

  6. moparisthebest

    > Literally everything works this way yes. if you send an HTTP request to an HTTP server it always replies too. this isn't a security hole it's just functioning as intended... since when? Literally never been the case, unless you think IP blocking and such doesn't work?

  7. moparisthebest

    literally the advice most are following with AI scraping is DO NOT send a response, just close the connection right? *technically* an RFC violation but still the right thing to do

  8. singpolyma

    also not in any way related to what we're discussing here...

  9. singpolyma

    blocking is a whole different thign

  10. moparisthebest

    so you just want me to word it a different way? responses to IQ requests you don't expect/understand should be blocked

  11. singpolyma

    But there's no such thing as "an iq request you don't understand"

  12. singpolyma

    that's my point

  13. moparisthebest

    or expect*

  14. singpolyma

    at this point you seem to just be ignoring the topic so I'm gonna stop trying to reason with you

  15. moparisthebest

    if a user blocks someone should the client still respond to their IQs ?

  16. moparisthebest

    what "topic" ? I haven't changed it from the start

  17. singpolyma

    > if a user blocks someone should the client still respond to their IQs ? The client can't even get their iqs in this case

  18. singpolyma

    > what "topic" ? I haven't changed it from the start The topic is making a testing script to check that a client behaves sensibly such as by replying to disco info requests and other basic things

  19. moparisthebest

    >> if a user blocks someone should the client still respond to their IQs ? > The client can't even get their iqs in this case oh you mean the server side blocking, sure if the server supports (btw does a server reply to an IQ from a blocked user since it won't route it?) what about client-side blocking though? eg your server doesn't support or in MUCs

  20. moparisthebest

    > an occupant wants to send an IQ stanza to another user in a semi-anonymous room, the sender can direct the stanza to the recipient's occupant JID and the service SHOULD forward the stanza to the recipient's real JID. hmm '45 says SHOULD here... what happens if it doesn't? what replies? or does this violate the RFC :)

  21. singpolyma

    sure. You could debate what it should do in such a case. But that doesn't change what it will do in the normal case. which means a test script is possible

  22. moparisthebest

    we talk about different stuff all the time in here, clearly the topic has long since changed from that lol, sure some basic test script could be shared by clients

  23. moparisthebest

    now back to the "silently and automatically handling or replying to potentially malicious input from internet strangers is dangerous and should be avoided" topic...

  24. moparisthebest

    I'm starting to think instead of trying to convince people that problems exist I should just write easy to run PoCs and share them publicly... easier for sure, probably more effective

  25. kapad

    1 / 2 / 3

  26. kapad Thu Oct 30 03:43:20 EET 2025 | Time: ~17min | Participants: 5 + 95 | Results: 100% - nothing , 0% - something

  27. kapad what a fact...

  28. kapad

    1st, the reason it triggered me to say something: ``` so not responding can't actually break anything that isn't already broken ```

  29. kapad

    ...pure science, pure wisdom !

  30. kapad

    now, what about my experiment, and the `fact`,

  31. kapad

    said some nonce, and while someone could say: - kapad, go to sleep... - ~ 0.16666666666 - or anything

  32. kapad

    the real results, were: ... (nothing)

  33. kapad

    So, are we gonna build programs, apps, clients, internet itself the way human feel and act, or we gonna try to change user to act to what some business model wish to ?

  34. moparisthebest

    kapad, what was the experiment ?

  35. kapad

    ... noboby have to answer anyway, to anything. That is what people do

  36. moparisthebest

    I'm not sure what you are saying

  37. kapad

    well, i said: `1/2/3`, but none gave a f*ck to say something, ( i would did the same of course )

  38. kapad

    if of course say something more interesting, maybe someone answer

  39. kapad

    so people choose, and react to what they interesting in, and don't feel forced to react to anything

  40. moparisthebest

    oh right, well obviously I agree, but the RFC doesn't say anyone has to respond to messages, it does say IQs MUST be responded to but yea obviously I disagree

  41. kapad

    i also think, we sometimes what a server HAVE to do, and what a client. while in action things are bidirectional, in the process of protocol there are strictly roles, what is a `server` and what is a `client`.

  42. kapad

    i also think, we sometimes have to define, what is a server HAVE to do, and what a client. while in action things are bidirectional, in the process of protocol there are strictly roles, what is a `server` and what is a `client`.

  43. kapad

    also, in my nginx, when someone ( probably a python script ) says: `http://server.tld/` i really dont bother and i return a `444` ( empty response/close connection). That human behaviour, have save a lot resources, and in long term the scanning and the crawling rates have decreased. So obvious, maybe not all, but a lot a `playing` scanners dont find me interesting and ignore me from their lists

  44. kapad

    does my above behaviour, brokes things. Maybe in theory, but in real life what browser in 2025 would did a http request. The only possible scenario is a crawler script. so, really dont care to be polite, or to say `301 https://server.tld' please....

  45. kapad

    does my above behaviour, broke things ? Maybe in theory, but in real life what browser in 2025 would did a http request. The only possible scenario is a crawler script. so, really dont care to be polite, or to say `301 https://server.tld' please....

  46. kapad

    and in xmpp, especially while people using their mobiles, things are more important, there is bandwidth, people pay. i mean the `official tension` should be sensitive with such things, and not with a `flood the world with stanzas` approach

  47. snit

    > does my above behaviour, broke things ? Maybe in theory, but in real life what browser in 2025 would did a http request. The only possible scenario is a crawler script. so, really dont care to be polite, or to say `301 https://server.tld' please.... i still make plain http requests all the time lmao; its definitely not "the only possible scenario"

  48. kapad

    `flood with stanzas` was an expression a person used some years before, in @disroot room, while try to describe how serious things can be. for example, as in his case, open your mobile and have 1000 messages, and your device crashed. is not a good experience, and i'd expected a `serious` client to `protected` me even if i'm part of shitty rooms...

  49. kapad

    snit: you should care to use https, even if not something important, i think it would be nice, users build an `ethic` that encryption is not something special, but something simple that i have to use it anyway

  50. kapad

    also, is cheap in resources, a free of charge for servers

  51. kapad

    lastly, as of the script that testing things, Yes, it would be nice but not only the users, but also the `xmpp heads` in their site, to take this `script`, and **they** to test the clients they want, their new versions, their features, and publish the result in an official page, so users could select their clients, but also developers advertise their products ( in relation to the script ), and so how serious or not serious they are.

  52. kapad

    On the other hand, an online tool and `come users leak you data`, it's an approach that personally think that just sucks, is not responsible at all, and dont promote the idea of what xmpp should be or how to be used.

  53. kapad

    that's all._

  54. moparisthebest

    here's one: ``` <iq id='jn3h8g65' to='muc@whatever/nick' type='set'> <open xmlns='http://jabber.org/protocol/ibb' block-size='4096' sid='i781hf64' stanza='iq'/> </iq> ``` what should a client do when it gets this ?

  55. moparisthebest

    cheogram: no response OH NO BROKEN RFC dino: ``` <iq id='jn3h8g65' xml:lang='en' type='error'><error type='modify'><not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' xml:lang='en'>unexpected IBB connection</text></error></iq> ``` psi: ``` <iq id='jn3h8g65' xml:lang='en' from='ash@code.moparisthe.best/qy' type='error' to='mytorrentflux@burtrum.org/mGKQ9uWRS8yy'> <error type='cancel' code='403'> <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Rejected</text> </error> </iq> ```

  56. moparisthebest

    cheogram: no response OH NO BROKEN RFC dino: ``` <iq id='jn3h8g65' xml:lang='en' type='error'><error type='modify'><not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas' xml:lang='en'>unexpected IBB connection</text></error></iq> ``` psi: ``` <iq id='jn3h8g65' xml:lang='en' type='error' '> <error type='cancel' code='403'> <forbidden xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> <text xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>Rejected</text> </error> </iq> ```

  57. kapad

    ...the protocol says: you should return something

  58. moparisthebest

    when sent some data over ibb anyway, cheogram is silent again, dino & psi both send: error with <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>, presumably this means I made them do a lookup, if version info told me their map/database impl told me they had some type of vuln this could get fun, all because these clients are *by default* silently handling messages and responding

  59. kapad

    i think if the client advertise the xep it should reply, otherwise could ignore.

  60. kapad

    tested in psi get also the `cancel` response even if both users uses psi and disco list the `ibb`. While in a room that query users is not allowed get the `<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" xml:lang="en">Queries to the conference members are not allowed in this room</text>`...

  61. kapad

    but i would consider a good client: if the client advertise the xep it should reply, otherwise could ignore.

  62. kapad

    ...and after this, a more good client to give user the option to ignore/reject things according to his/her needs._

  63. moparisthebest

    anyway singpolyma and whoever else might be interested, this is a perfectly fine amount of data to be able to pull from every muc participant in a few seconds and I should just post the source or ? https://www.moparisthebest.com/jdev.xml (I redacted to/from) also trivial to slightly modify the script to send a ~100 byte disco#info to each JID on an interval (a few times a second?) and get a ~2900 byte response constantly and silently, we could call it the secret-muc-participant-battery-and-bandwidth-killer ? 💀

  64. moparisthebest

    hmm maybe I could grep out all the unique iq examples from all the XEPs and just send them all, could get even more interesting

  65. singpolyma

    Info and version lots of stuff expects to work in MUC so yes this seems mostly expected?

  66. singpolyma

    It's yet another of the nice things we have today that GC3 proposes to kill due to it being unreliable

  67. MattJ

    Yet GC3 adds nice things in return, like persistent routing to offline participants 🙂

  68. MattJ

    So to me it means some things will change, but we don't have to lose anything permanently. Some kind of negotiation to allow full JID communication seems like a sensible thing to have.

  69. singpolyma

    Yeah I'm not meaninging to say the way things are is ideal, since the IQ stuff only sort of works in MUC anyway and is a mess. I'm just thinking out loud about stuff we may want to have an answer for

  70. moparisthebest

    I think it's not the routing that is the problem. The problem is the invisible automatic responses

  71. singpolyma

    > I think it's not the routing that is the problem. The problem is the invisible automatic responses You keep saying this but then you point to responses we want as though they are the issue

  72. moparisthebest

    and you can still have them if you want them, just not silently with no indication to anyone except when they notice their battery dead or mobile data depleted

  73. moparisthebest

    but on a different note, clearly much of this info shouldn't be sent at all, client, platform, Linux kernel version? These help attackers and no one else

  74. singpolyma

    You're free to not implement that xep if you don't want it 🙂

  75. moparisthebest

    ? you seem to be missing all the points

  76. singpolyma

    I'd be happy if you got to the point instead of observing things functioning as designed

  77. moparisthebest

    and that design is broken and vulnerable and must be fixed

  78. singpolyma

    Wrong

  79. theTedd

    It's more a question of where you set your paranoia threshold

    👍 1
  80. singpolyma

    > It's more a question of where you set your paranoia threshold 👍

  81. moparisthebest

    there are a few distinct problems with some overlap: 1. invisibly+automatically sending data to attackers by default is bad. Instead it should be on a strictly need-to-know basis. If you don't have a *reason* to respond you should not. 2. Sending sensitive personally identifying info should never be done silently and automatically to whoever asks. Both for pervasive tracking privacy reasons, and security reasons (I can just look for people still vulnerable to X and target them) 3. Even if you somehow believe all of the above is fine, it enables quickly and silently draining the battery and data from anyone, silently, with no way to block, by default.

  82. moparisthebest

    > It's more a question of where you set your paranoia threshold no it's nothing at all to do with paranoia

  83. moparisthebest

    these aren't some theoretical problems that only the NSA can pull off, it only requires a script kiddy a few minutes to write it from scratch, or if no one else thinks it's a problem I can just release my 30 minutes of work ?

  84. moparisthebest

    real long term fixes are more important than public MUCs being a living hell temporarily /shrug

  85. x

    > anyway singpolyma and whoever else might be interested, this is a perfectly fine amount of data to be able to pull from every muc participant in a few seconds and I should just post the source or ? > https://www.moparisthebest.com/jdev.xml (I redacted to/from) > > also trivial to slightly modify the script to send a ~100 byte disco#info to each JID on an interval (a few times a second?) and get a ~2900 byte response constantly and silently, we could call it the secret-muc-participant-battery-and-bandwidth-killer ? 💀 being able to ratelimit version queries is probably a good feature

  86. theTedd

    Rate-limiting all responses isn't a bad idea (could be more relaxed with known/select contacts)

  87. x

    also this is a way to spam users without having voice

  88. moparisthebest

    remember very recently when scammers found out they could send muc invites over muc and many clients would automatically join, revealing their jid to the attacker?

  89. moparisthebest

    that's just one of many, playing whack-a-mole blocking one at a time is the wrong approach, the right approach is blocking everything as default, and special casing the allows

  90. singpolyma

    > Rate-limiting all responses isn't a bad idea (could be more relaxed with known/select contacts) anyone with your full jid is a select/known contact

  91. moparisthebest

    that's not right, especially for all the ones sent over muc to your full jid ?

  92. moparisthebest

    public semi-anonynous muc

  93. singpolyma

    As said many times this is generally considered a bug in MUC

  94. moparisthebest

    what is? who's fixing it and where

  95. singpolyma

    GC3 is fixing it

  96. moparisthebest

    what's it fixing specifically? and only for clients that support GC3 or also current MUC ?

  97. singpolyma

    GC3 groups will never route IQ or message to the full jid of a participant

  98. moparisthebest

    where's the current working spec? I seem to only have https://matthewwild.co.uk/uploads/xmpp-gc3-jan-2025.pdf in my browser history

  99. MattJ

    There isn't a canonical spec right now

  100. moparisthebest

    regardless in the meantime clients need fixes, and maybe server modules can help out?