XSF Discussion - 2019-09-11


  1. ralphm

    Daniel: your tweet to upgrade Dino is a bit, let's say, sparse on detail :-D

  2. Daniel

    which is probably a good thing?

  3. ralphm

    I don't know?

  4. ralphm

    Does has it shiny new features, or was there a horrible security issue?

  5. Daniel

    it had all the CVEs. roster injection. carbon injection. mam injection. https://github.com/dino/dino/commits/master

  6. lovetox_

    Does it get a Combo Bonus šŸ˜ƒ

  7. jonasā€™

    :D

  8. ralphm

    Nice.

  9. Daniel

    i mean they fixed it pretty quick.

  10. ralphm

    Daniel: but you didn't want to rub it in?

  11. Daniel

    now someone should probably notify the debian maintainers

  12. Daniel

    ralphm, it's extremly easy to exploit. and someone has exploited the roster one in this muc yesterday

  13. Daniel

    so i donā€™t want to give details

  14. ralphm

    Well, if someone is updating the CVEs, isn't that automatic?

  15. ralphm

    Also, is there a changelog somewhere?

  16. Daniel

    dino hasn't had a release yet

  17. Daniel

    so no there is no changelog

  18. Daniel

    aside from git

  19. jonasā€™

    they should definitely allocate CVEs

  20. Ge0rG

    they, or the researcher who found it?

  21. jonasā€™

    "someone", actually

  22. jonasā€™

    I donā€™t think you need to be affiliated with a project to allocate CVEs

  23. Ge0rG

    yeah, when I find something, I typically allocate the CVEs myself

  24. Daniel

    i'll probably write something down for the three bugs together

  25. Daniel

    i mean it's the same general mistake

  26. Ge0rG

    Nobody reads the Security Considerations

  27. Daniel

    yes

  28. Ge0rG

    is there a bold-red-blinking markup we can use at the top of https://xmpp.org/extensions/xep-0280.html#inbound ?

  29. Daniel

    maybe. if people only read the examples; we should have bad examples

  30. jonasā€™

    Ge0rG, having a thing in xep.dtd / xep.xsl which allows to mark up Important boxes would be neat

  31. Daniel

    i mean explicitly examples showing you what kind of messages to reject

  32. jonasā€™

    stuff like sphinx generates with .. warning::

  33. jonasā€™

    Ge0rG, can you file a thing against xeps/XEP-0001?

  34. jonasā€™

    that wonā€™t help with RFC 6121, but itā€™s something

  35. Ge0rG

    jonasā€™: an issue thing or a PR thing?

  36. Ge0rG

    Daniel: that's actually an excellent idea

  37. Ge0rG

    jonasā€™: https://github.com/xsf/xeps/issues/821

  38. Ge0rG

    Daniel: how about https://op-co.de/tmp/xep-0280.html#example-11

  39. Daniel

    The paragraph above that is also new?

  40. Daniel

    Looks fine

  41. Daniel

    Yeah that's probably a good improvement

  42. Ge0rG

    Daniel: yeah

  43. Ge0rG

    Daniel: but you can't link to paragraphs

  44. Ge0rG

    and I didn't want to link to example 10

  45. Daniel

    Makes you question why that wasn't in there before

  46. Ge0rG

    Daniel: because XEP authors aren't security consultants

  47. Daniel

    Maybe we want to go so far and in the security section say in <strong> *This has been exploited several times*

  48. Daniel

    And link to the CVE

  49. Daniel

    Probably a separate PR

  50. Ge0rG

    it would mark my third PR for 0280 today.

  51. Daniel

    I mean it is absolutely ridiculous that this has struck so many times in three different iterations

  52. Ge0rG

    I suppose it is enough to have a negative example for "received", without one for "sent".

  53. Daniel

    Yes

  54. Daniel

    Hopefully...

  55. Ge0rG

    Daniel: do you have the link to the initial incarnation?

  56. Daniel

    This predates my involvement in xmpp

  57. Daniel

    So no

  58. jonasā€™

    Ge0rG, a PR thing would be even better than an issue thing

  59. Ge0rG

    jonasā€™: yeah, but my work.

  60. Licaon_Kter [cnvrs]

    MattJ Any reason this room does not _warn the user that the discussions are logged_ ?

  61. ralphm

    As for RFCs, I suppose it could be in errata, but then again, who reads those.

  62. Ge0rG

    nobody :(

  63. Daniel

    up until recently i didnā€™t even know they existed

  64. Zash

    Licaon_Kter [cnvrs] looks like it only sends the signal when archiving is enabled or disabled.

  65. Zash

    And also the semantic difference between archiving and logging.

  66. pep.

    Maybe you should have two messages? :P

  67. Zash

    Link is in the subject and I /think/ also in some room metadata.

  68. pep.

    Some clients don't really show subjects in a prominent place anymore :(

  69. Licaon_Kter [cnvrs]

    Zash Subject/Title aside, Converse.js shows them, but will also show_"groupchat logging is now enabled"_ as per https://xmpp.org/extensions/xep-0045.html#enter-logging so, is Prosody not honouring that? Umm https://hg.prosody.im/trunk/file/tip/plugins/mod_muc_mam.lua#l99 maybe

  70. pep.

    he just answered you

  71. Licaon_Kter [cnvrs]

    I, obviously, did not undestand a thing šŸ™‚

  72. pep.

    "when [it] is enabled or disabled."

  73. Zash

    It is missing a thing for when you join

  74. Licaon_Kter [cnvrs]

    Ok, right...

  75. Zash

    Report issue. Patches especially appreciated šŸ™‚

  76. Licaon_Kter [cnvrs]

    True

  77. Zash

    But the public logs are provided by a separate module. Should that one add the tag?

  78. Zash

    IIRC both of them should only let you get logs/archives if you could join the room and get them yourself

  79. lovetox_

    If the user is entering a room in which the discussions are logged to a public archive (often accessible via HTTP), the service SHOULD allow the user to enter the room but MUST also warn the user that the discussions are logged.

  80. lovetox_

    So Zash this explicitly mentions http based logs

  81. lovetox_

    i would argue it does not matter how the server logs, what counts is that is publicly available, and the user should be warned about it

  82. Licaon_Kter [cnvrs]

    FYI, I only noticed this because ejabberd is announcing it every time Converse.js mysteriously dis/reconnects https://github.com/conversejs/converse.js/issues/1697

  83. Ge0rG

    lovetox_: so it's also true for MAM

  84. Daniel

    btw i've requested a CVE. i was a bit unsure on the how given that dino technically had no releases yet; but let's see if it gets accepted

  85. balu_der_baer

    Daniel, Requested a CVE for which issue exactly?

  86. pep.

    It speaks!

  87. Daniel

    balu_der_baer, I put roster, carbons, and mam in one

  88. Ge0rG

    ...in Dino

  89. Daniel

    probbaly not worth creating different ones

  90. Ge0rG

    It would make sense to ask for one for Converse, though.

  91. Daniel

    balu_der_baer, i can credit you on the carbon one

  92. pep.

    Right. JC also just fixed an issue in converse

  93. Ge0rG

    Or is it just the 2017 one revamped?

  94. pep.

    It looks like it

  95. Ge0rG

    pep.: but it was fixed back then

  96. pep.

    In these clients

  97. Daniel

    for converse?

  98. Daniel

    was converse hit back then?

  99. Ge0rG

    pep.: converse was one of the clients, yes

  100. pep.

    heh, ok

  101. balu_der_baer

    I think the converse is the relevant one, given it is actually released software and not some "I compiled code from the internetz and is has bugz"

  102. pep.

    Isn't that the case for all software

  103. Daniel

    balu_der_baer, yes probably. dino is in debian and some other distros tho

  104. Kev

    I think dino has been released hasn't it? It's in Debian and stuff.

  105. Daniel

    and in fairly wide use

  106. Ge0rG

    pep.: I've heard that there is software that you need to type from a book

  107. pep.

    Kev, nope

  108. pep.

    no release

  109. Kev

    pep.: https://packages.debian.org/search?keywords=dino-im - different project?

  110. pep.

    No

  111. pep.

    But no release

  112. Kev

    Then it's been released.

  113. pep.

    No

  114. Daniel

    and that kids is why you dont make packages for git

  115. pep.

    Kev, https://tracker.debian.org/pkg/dino-im

  116. pep.

    look at the version string

  117. Zash

    Hey kids wanna get into a semantics discussion? What is a release?

  118. Kev

    I'm not saying that upstream say it's stable.

  119. Kev

    I'm saying that it has been released. I.e. it is available to users.

  120. pep.

    "It's in Debian so it's released!"

  121. pep.

    Ok let's leave the semantic discussions for later

  122. Kev

    Pretty much the definition of released is that it's available, yes.

  123. pep.

    Upstream hasn't cut a release yet, is all I'm saying.

  124. pep.

    Distributions do whatever they want with it

  125. Daniel

    it is probably worthwhile to get a CVE for. and it has already been requested

  126. Daniel

    so we donā€™t need to argue about it :-)

  127. Kev

    I understand that upstream may not have yet tagged a stable release. Just that that's largely irrelevant to users if they can apt install it.

  128. pep.

    So is it fine if I package it myself for my own use? Can I also say the software has been released? :)

  129. Kev

    I also understand that if someone uploaded it to Debian before upstream said it was ready for use, that sucks for upstream.

  130. pep.

    Or as long as it's published

  131. Ge0rG

    Kev: that sucks for debian

  132. Kev

    That too.

  133. Daniel

    it sucks for everyone

  134. pep.

    Ge0rG, you mean for Debian's users

  135. Kev

    That three.

  136. Daniel

    upstream. debian. the users

  137. Ge0rG

    Software releases are hard. Let's go shopping!

  138. Ge0rG almost wrote "shipping"

  139. Daniel

    am i seeing this correctly that converse has different mam/carbon parsing code for muc vs 1:1

  140. Daniel

    wtf

  141. Daniel

    and it hit only muc because of that

  142. balu_der_baer

    I know that Dino developers tell people to not use the debians "release" build but always use the latest nightly instead. And my guess is that those patches are caused by them preparing for a first real release

  143. balu_der_baer

    Daniel assessing Dino to be vulnerable to the MAM issue predates the commit time of the fix to Dino master by 5 minutes. Either they were super fast, Daniel told them before writing here or they actually knew before šŸ¤”ļø

  144. Ge0rG

    A conspiracy within a conspiracy?

  145. Daniel

    balu_der_baer, we were in here talking about how it is most likely vuln

  146. Daniel

    but i was out for a midnight snack before i could be bothered to actually verify

  147. pep.

    They also have access to this muc :)

  148. Daniel

    and also if you have just before that fixed the roster and carbon issue the mam fix could easily be done in 5 min

  149. Daniel

    it's the exact same lines of code copy pasted

  150. balu_der_baer

    Is anyone filing a CVE for the stanza id bug in Prosody I discovered yesterday?

  151. Daniel

    is it prosody not filtering out?

  152. Daniel

    i didnā€™t catch you mentioning that

  153. Daniel

    so i'm guessing

  154. balu_der_baer

    yes

  155. Daniel

    obvious bugs are obvious

  156. Daniel

    just get one yourself i guess?

  157. balu_der_baer

    I didn't mention any of the bugs, I left this task to you guys.

  158. Daniel

    did it not filter in general? or just under certain conditions

  159. Daniel

    well how would the stanza-id thing manifest itself?

  160. Daniel

    aside from MAM catchup being fucked

  161. balu_der_baer

    I guess as long as nobody tries to use them for anything, it won't...

  162. Daniel

    also there is code to do itā€¦

  163. balu_der_baer

    I leave it to you or any other dev to find out when and why it doesn't work, I am not into Lua

  164. Daniel

    well i'm not yet sure the bug exists

  165. balu_der_baer

    How would one find out?

  166. pep.

    balu_der_baer, hint? around what time?

  167. pep.

    I could go through the logs..

  168. balu_der_baer

    This one maybe?

  169. Daniel

    this room doesnā€™t claim to do the cleaning

  170. Daniel

    as a client you are supposed to parse the sid only if the server announces that

  171. pep.

    I'm somewhat happy poezio didn't display the second message, "Or this one"

  172. pep.

    <body xmlns="broken">Or this one</body>

  173. balu_der_baer

    Daniel, Technically correct.

  174. pep.

    <message xml:lang="en" type="groupchat" to="pep@bouah.net/poezio-C7iY" from="xsf@muc.xmpp.org/balu_der_baer" id="c090def67ff04d4dae5cfc260bf71522"><body>This one maybe?</body><stanza-id xmlns="urn:xmpp:sid:0" by="xsf@muc.xmpp.org" id="2019-09-11-185b3f943380209c" /><stanza-id xmlns="urn:xmpp:sid:0" by="xsf@muc.xmpp.org" id="2019-09-11-a55228b004fa960d" /><origin-id xmlns="urn:xmpp:sid:0" id="c090def67ff04d4dae5cfc260bf71522" /></message> <message xml:lang="en" type="groupchat" to="pep@bouah.net/poezio-C7iY" from="xsf@muc.xmpp.org/balu_der_baer" id="e11708f4ba544d3e8ceee73bf579544d"><body xmlns="broken">Or this one</body><stanza-id xmlns="urn:xmpp:sid:0" by="xsf@muc.xmpp.org" id="2019-09-11-185b3f943380209c" /><origin-id xmlns="urn:xmpp:sid:0" id="e11708f4ba544d3e8ceee73bf579544d" /></message>

  175. pep.

    For reference

  176. Daniel

    so if you find a client that uses this for catchup (or anything) then you have your bug

  177. balu_der_baer

    When a message is archived, the server MUST add an stanza-id element as defined in Unique and Stable Stanza IDs (XEP-0359) [2] to the message, which informs the recipient of where and under what ID the message is stored. When doing this the server MUST follow the business rules defined in XEP-0359.

  178. pep.

    hmm.

  179. pep.

    That first message was cut in poezio.

  180. pep.

    Because of the <stanza-id /> :/

  181. pep.

    <message xml:lang="en" type="groupchat" to="pep@bouah.net/poezio-C7iY" from="xsf@muc.xmpp.org/balu_der_baer" id="b23f6efec2cf4ac2ad23d7da18fb7367"><body>When a message is archived, the server MUST add an <stanza-id /> element as defined in Unique and Stable Stanza IDs (XEP-0359) [2] to the message, which informs the recipient of where and under what ID the message is stored. When doing this the server MUST follow the business rules defined in XEP-0359.</body><stanza-id xmlns="urn:xmpp:sid:0" by="xsf@muc.xmpp.org" id="2019-09-11-e360996b290c9aae" /><origin-id xmlns="urn:xmpp:sid:0" id="b23f6efec2cf4ac2ad23d7da18fb7367" /></message>

  182. balu_der_baer

    I admit, it's funny to see how different clients screw up different things. None of them seems to be really solid about anything so far.

  183. pep.

    indeed

  184. jonasā€™

    le fuck wat

  185. jonasā€™

    balu_der_baer, which client is that?

  186. pep.

    version string says Movim 0.15

  187. jonasā€™

    nice

  188. jonasā€™

    report an issue against movibm

  189. Zash

    There's the @by. This server needs some upgrades, but that part looks correct?

  190. balu_der_baer

    jonas, openssl s_client

  191. jonasā€™

    report an issue against movim

  192. pep.

    heh

  193. balu_der_baer

    Was using Gajim before, but it's XML console does too many sanity checks for doing such evil things

  194. pep.

    Maybe poezio's /rawxml doesn't :-Ā°

  195. jonasā€™

    Iā€™ll just leave now

  196. Daniel

    how is <body>foo <bar/> something</body> supposed to render?

  197. Kev

    It's not, because that's illegal.

  198. Daniel

    not render the entire message?

  199. Kev

    The server is allowed to bounce it, even. But if it gets through to a client, anything's fair game, I think.

  200. flow

    that's what I would do, and as server close the client session (of course configurable, so that if you really want to support broken clients)

  201. balu_der_baer

    The body element MUST NOT contain mixed content (as defined in Section 3.2.2 of [XML]).

  202. flow

    balu_der_baer, IIRC this is not even mixed content

  203. Kev

    flow: It's not?

  204. flow

    maybe it is

  205. Kev

    If it's not then my understanding of mixed content is off.

  206. flow

    I just though thtat mixed content is text content + element

  207. flow

    and not text content + element + text content

  208. balu_der_baer

    An element type has mixed content when elements of that type may contain character data, optionally interspersed with child elements.

  209. flow

    luckily there is a reference where I can lookup this and refresh my memory

  210. flow

    or I let balu_der_baer do the work ;)

  211. MattJ

    afaik mixed just means multiple types are used (both element and text nodes), it doesn't mean a specific order or number of nodes

  212. Kev

    That's certainly how the XMPP specs have used the term, yes.

  213. flow

    yep, convinced, and we don't do that in xmpp

  214. Daniel

    i mean cutting your own c2s when your server sends you this is probably not ideal

  215. flow

    nobody suggested this

  216. Daniel

    no. i was just thinking out loud if i need to do something different in Conversations

  217. Kev

    Daniel: No, especially as servers are allowed to send you crap. But I don't think we're suggesting that.

  218. balu_der_baer

    Daniel, You need to fix the <body xmlns="broken"> thing

  219. Daniel

    balu_der_baer, already made a note

  220. pep.

    I also opened issues in poezio.

  221. pep.

    Though that's probably in slixmpp

  222. flow

    background? implementations do not consider the namespace of body elements?

  223. larma

    I have the feeling its super productive if random people just push random stanzas in xsf@ šŸ˜‰

  224. pep.

    let's do that more often

  225. Ge0rG

    > None of them seems to be really solid about anything so far. Nobody has complained about yaxim so far. But don't even try to put different xml:langs into the game ;)

  226. MattJ

    An ancient one is simply putting in multiple <body> (same namespace and xml:lang)

  227. MattJ

    Some clients would render the first, some the last

  228. Ge0rG

    yeah, having multiple elements with the same name in any kind of hashmap is a well known security issue

  229. balu_der_baer

    āš  Your client renders a first body when it shouldn't

  230. MattJ

    What should it render?

  231. balu_der_baer

    Nothing, it's an invalid message

  232. mathieui

    I think a few clients have a history of trying to fix received namespaces to work around very old bugs

  233. pep.

    Why do we try to keep compat with broken stuff? :(

  234. pep.

    Then we in turn we end up broken

  235. flow

    pep., some do, some avoid workarounds for broken implementations

  236. Kev

    You don't have a lot of choice dealing with broken stuff.

  237. pep.

    I wish we'd do that as a collective effort to push broken stuff away

  238. Kev

    At least not in an open ecosystem.

  239. flow

    I am in the latter camp FWIW

  240. pep.

    I also am

  241. Kev

    You might not try to 'fix up' the broken content, but you have to deal with it.

  242. flow

    Kev, I don't think this is true.

  243. pep.

    Kev, you do, you can just ignore them

  244. Kev

    pep.: Which is dealing with it.

  245. pep.

    Yes, while some others try to keep compat

  246. MattJ

    When we began Prosody, many of the other servers were "broken" in various ways... nobody would have used Prosody if we hadn't added workarounds for them

  247. flow

    Kev, sounded more like you meant that we don't have a choice besides adding workarounds into our code

  248. Kev

    flow: Yes, that's right.

  249. MattJ

    Not being able to s2s to 99% of the existing network was not an option :)

  250. pep.

    MattJ, now that you're a bit more notorious, here's your time :)

  251. Kev

    Like when ejabberd's PEP module sent tonnes of spurious messages, and if you wanted to avoid annoying your users you had to do something about them.

  252. MattJ

    Right, I'm just pointing out that you can't just make that your blanket stance towards issues like this

  253. Kev

    (ignore them, in fact, but it took code to ignore them)

  254. Ge0rG

    Is there consensus that a client MUST NOT render any bodies from a message that contains multiple bodies?

  255. Ge0rG

    (assuming equal xml:lang)

  256. Kev

    Ge0rG: You mean multiple bodies in the stream namespace, without distinguishing xml:lang, which might itself come from the stream?

  257. flow

    MattJ, true, it is always a per case decission, but to often that decission is "just add a workaround"

  258. MattJ

    In Prosody our policy is to avoid workarounds, and if that's not feasible then we add the workaround with a 'COMPAT' comment that explains when it was added and why (referencing bug reports, etc.)

  259. Zash

    pep.: Right when we're a bit behind on compliance features in core? Are you working for P1? ;)

  260. Ge0rG

    Kev: yes

  261. Kev

    In which case, no, I don't think there's anything in 612[01] that suggests a client would have to do that.

  262. MattJ

    and then we periodically review these and remove old ones that are no longer needed (as much?)

  263. pep.

    Zash, :P

  264. Ge0rG

    Kev: I'm pretty sure it's illegal, and the question arises which of the bodies will end up rendered

  265. flow

    Ge0rG, what would make it illegal?

  266. Kev

    flow: 612[01] rules do.

  267. flow

    Kev, multiple bodies with the same xml:lang?

  268. Kev

    Yes.

  269. flow

    ahh right, it's in rfc6121 5.2.3

  270. Ge0rG

    https://xmpp.org/rfcs/rfc6121.html#message-syntax-body

  271. flow

    couldn't find a rule in rfc6120 though

  272. Kev

    6120 just says to use the rules in 6121.

  273. Ge0rG

    but Ā§5.2.3 doesn't contain a statement on how to handle violations

  274. flow

    most things do not contain a statement on how to handle violations

  275. flow

    but yes, not showing a body at all appears sensible, probably even if there is a unique body-xmllang for your xmllang

  276. Ge0rG

    This is the opposite of "make everything you can to show the message content"

  277. MattJ

    https://tools.ietf.org/html/draft-iab-protocol-maintenance-03

  278. flow

    MattJ, \o/

  279. pep.

    this

  280. flow

    yep, this

  281. Ge0rG

    I hate this document.

  282. MattJ reject's Ge0rG's message

  283. Ge0rG

    It only makes sense in a closed system.

  284. Ge0rG

    With a dozen of actively used XMPP implementations, and a tail distribution of less widely used ones, how am I supposed to know that blocking "invalid" messages won't break the interop with some of them?

  285. MattJ

    It probably will

  286. MattJ

    But if everyone agreed to be strict, that tail would soon be fixed (or rightly let die)

  287. flow

    The question is if the outcome is better than being liberal in what to accept

  288. MattJ

    And not everyone has to agree to be strict, just the dominant players

  289. pep.

    Just like when people went TLS

  290. MattJ

    Prosody fixed many client bugs by being more strict in what it accepted than any of the existing servers

  291. pep.

    Except dominant players didn't.. at the time

  292. pep.

    (gmail)

  293. MattJ

    and we don't even go very far

  294. Ge0rG

    MattJ: but I don't have any leverage on those implementations. And people will blame me for the bugs

  295. MattJ

    I feel your pain, many of us have experienced that

  296. MattJ

    and as I said, we have put in (clearly marked) workarounds for things like that

  297. lovetox_

    what is the problem about body with different namespace? so what i dont check the namespace of body if i dont have to, this is certainly no security issue

  298. pep.

    Ge0rG, or on deployments..

  299. MattJ

    while simultaneously trying to get it fixed

  300. pep.

    lovetox_, I can include a message that only gajim users will see and not others

  301. lovetox_

    yeah and? its a feautre i would say

  302. pep.

    Is it?

  303. flow

    lovetox_, I am not sure if I can't be exploited somehow. The main problem is that implementations treat an element as body when it is not

  304. MattJ

    lovetox_, it's a potential human security issue - if people disagree on what to render for a message, the logs will be showing one thing, clients will be showing another

  305. flow

    But I can only come up with very constructed scenarious how this could cause an security issue

  306. MattJ

    despite it being a pretty poor messaging application that can't agree on how to render a text message :)

  307. flow

    Like a bot which accepts commands via <body/> and a screening service checking that the commands in <body/> are safe

  308. MattJ

    XSF board meeting logs could all be faked by board members, and someone will put <body>+1</body><body>-1</body> to make people think they voted one way on a contentious issue, but the chair would see them voting a different way

  309. MattJ

    Consistency is good, inconsistency is bad

  310. flow

    word

  311. MattJ

    Consistency in a distributed open network isn't always easy

  312. MattJ

    But if we at least specify the right way to do things, that's a great start

  313. MattJ

    Right now nobody can even claim any particular client is buggy, because there is no correct decision about what to render (which may include nothing)

  314. MattJ

    (or an error)

  315. MattJ

    I'll note that even excluding potentially-illegal <body> constructs, this issue will still exist for multiple <body> with different xml:lang (I can show different versions of the same message to different languages, they don't have to say the same thing)

  316. MattJ

    But at least in that case a client could indicate to the user that other versions of the message exist, and allow them to view them

  317. Daniel

    Mhh I now have uncommitted code that skips messages with body of the same language. Not really sure if I should commit that. I mean it's definitely illegal. And it probably won't happen on accident

  318. Ge0rG

    flow: do I need to pull a CVE number for Smack delivering the first of multiple equally xml-langed bodies?

  319. Daniel

    Ge0rG: is that a security issue?

  320. Ge0rG

    Daniel: what MattJ wrote. <body>+1</body><body>-1</body>

  321. Ge0rG

    https://logs.xmpp.org/xsf/2019-09-11#2019-09-11-869b4f1282d0a054

  322. Ge0rG

    Daniel: if there is only one implementation rendering the _last_ body from that list, it is a security issue

  323. jonasā€™

    Ge0rG, what else are you supposed to do?

  324. Kev

    That's a user confusion/unreliability issue. I'm not convinced it's a security issue.

  325. jonasā€™

    aioxmpp will take one, which one is officially undefined (but it will be the lastmost in the stanza)

  326. Ge0rG

    jonasā€™: tear down s2s!

  327. Daniel

    for ever!

  328. jonasā€™

    Ge0rG, seriously though. what should I do as a client library?

  329. jonasā€™

    send back an error?

  330. jonasā€™

    I see how this is a problem, I just donā€™t know the correct course of action

  331. Ge0rG

    jonasā€™: me neither

  332. Daniel

    that will get you kicked from the muc lol

  333. flow

    and presence leak

  334. flow

    (potential)

  335. MattJ

    Kev, I'm surprised that in the environments you're involved in, you don't see user confusion as a security (or safety) issue

  336. Daniel

    jonasā€™, i just opted for ignoring it

  337. Daniel

    will happen infrequently enough to not be a real issue

  338. MattJ

    Especially if you add enforcement or auditing tools to the mix, which might disagree about which <body> to use/allow

  339. Ge0rG

    MattJ: maybe because it's scoped to the sending user.

  340. jonasā€™

    flow, uh--- thatā€™s an interesting one, I think you can make aioxmpp auto-reply to a message if you violate the schema hard enough

  341. Ge0rG

    If somebody wants to play mind tricks with you, the impact is limited to what you'd believe them

  342. flow

    jonasā€™, take the stanzas out of the stream, send an error back if the sending entity is subscribed to your presence and log an error

  343. pep.

    Why has it been specified that a MUC should kick us on message @type=error btw?

  344. Ge0rG

    pep.: yes.

  345. jonasā€™

    Daniel, so you drop the entire stanza if there is more than one <body/> with same-language?

  346. Daniel

    because if your session dies?

  347. Daniel

    jonasā€™, yes

  348. jonasā€™

    flow, yeah, no, the part which sends errors back wouldnā€™t know about that type of stuff

  349. pep.

    Ge0rG, am I onto something?

  350. flow

    jonasā€™, I never said it is easy ;)

  351. Daniel

    jonasā€™, i mean no; i return the body as null. it might run through other paths

  352. jonasā€™

    Daniel, right

  353. Ge0rG

    pep.: I was going to elaborate, but Daniel came first

  354. jonasā€™

    for all languages or only for the buggy one, Daniel?

  355. pep.

    if my session dies?

  356. Daniel

    good question šŸ™‚ no for all messages

  357. flow

    jonasā€™, remember when we talked about providing a callback to the user which informs him what exactly went where wrong in the incoming processing chain?

  358. Ge0rG

    pep.: yes, the MUC needs to kick you out if your client silenty disconnected

  359. jonasā€™

    flow, exists, but that is not an error condition yet

  360. pep.

    But what if my client doesn't silently disconnect and I'm just trying to point out errors to others

  361. jonasā€™

    and Iā€™m not sure what type of error condition it should be

  362. Ge0rG

    pep.: send a PM

  363. pep.

    @type=error?

  364. Ge0rG

    pep.: yes, those won't get you kicked IIRC

  365. pep.

    I see

  366. Ge0rG

    I have no idea how clients will behave ;)

  367. jonasā€™

    Ge0rG, so auto-reply woudlnā€™t get me kicked either since that would go to the full JID

  368. pep.

    I guess this + ignoring a message should be good

  369. jonasā€™

    Ge0rG, so auto-reply from the library woudlnā€™t get me kicked either since that would go to the full JID

  370. Ge0rG

    pep.: presence leak

  371. pep.

    rrr

  372. pep.

    Can you stop finding issues

  373. Ge0rG

    So can we now decide whether it's a security issue or not?

  374. Ge0rG

    pep.: no

  375. Ge0rG

    life would be boring otherwise. Also, blame balu_der_baer

  376. pep.

    But that's probably going in the logs anyway and not actually visible by the user.

  377. Daniel

    I'll "fix it" in that i will ignore it in the future but i wont rush out another release

  378. pep.

    I would like if a client would tell me "There is an error" (and aggregate them) "please report that to the dev"

  379. Ge0rG

    Daniel: can you rush out releases again? Or is Play store still imposing multi-day delays?

  380. Daniel

    yes i could

  381. Daniel

    was meaning to tweet that

  382. Daniel

    i fixed the PS issue

  383. Daniel

    but i was doing so much tweeting lately

  384. Ge0rG

    My other app is broken on Android 10 because Google finally removed the deprecated Apache HttpClient library which is used by... the Google Maps v1 library.

  385. Ge0rG

    Daniel: as much as @xmpp?

  386. Daniel

    not as annoying as @xmpp

  387. Daniel

    my tweets are super high quality

  388. Ge0rG

    I've been struggling to convey this message to the person responsible, for some days now.

  389. jonasā€™

    doesnā€™t someone else have access to that account and can single-handedly change the password?

  390. pep.

    I think we'd rather fix this socially

  391. Ge0rG

    jonasā€™: nobody knows who that "someone else" is

  392. Daniel

    access yes. canā€™t change the pw though

  393. pep.

    Not technically

  394. Ge0rG

    pep.: full agreement here.

  395. Kev

    Which account what where?

  396. Daniel

    i mean sometimes i do tweet on @xmpp. but when i do it's only the best tweets

  397. Ge0rG

    Maybe I should just stop trying though, I'm probably the least empathetic person to attempt it

  398. Ge0rG

    Kev: twitter.com/xmpp

  399. pep.

    Daniel, of course

  400. jonasā€™

    Ge0rG, Daniel, actually I think we just need to agree on *which* of the multiple bodies to show and itā€™s a non-issue, right?

  401. Ge0rG

    jonasā€™: right

  402. Kev

    Is that the XSF's one? I thought I had credentials for the XSF Twitter (although 1password is failing me)

  403. Daniel

    well rfc says it's illegal. so just dropping it is easier?

  404. Ge0rG

    Kev: yes

  405. Kev

    I wonder why I don't currently have it.

  406. Ge0rG

    Daniel: I'm sure some clients/bots will end up sending a default body and one in an explicit language, and the explicit language accidentally being the default one

  407. flow

    jonasā€™, coming up with a selection algorithm could be hard

  408. Daniel

    so we know it's not Kev whos doing the annoying tweetsā€¦

  409. jonasā€™

    flow, "first"

  410. flow

    jonasā€™, first in XML?

  411. Ge0rG

    LinkedHashMap to the rescue!

  412. jonasā€™

    flow, eys

  413. jonasā€™

    flow, yes

  414. flow

    jonasā€™, what if "first" is different per recipient

  415. jonasā€™

    flow, how is that supposed to happen?

  416. flow

    nothing gurantees that the order of the elements is stable when a stanza passes a hop

  417. jonasā€™

    flow, the order of elements with the same namespace-uri/local-name pair?

  418. jonasā€™

    I think weā€™d be in trouble already if that was violated.

  419. flow

    especially the order of those elements yes

  420. Kev

    Hmm. Looks like my tweetdeck doesn't have it either. I'm finding this very confusing.

  421. pep.

    > Ge0rG> Daniel: I'm sure some clients/bots will end up sending a default body and one in an explicit language, and the explicit language accidentally being the default one Let's agree to fix these bots?

  422. flow

    jonasā€™, like where?

  423. jonasā€™

    flow, [thinking ...]

  424. jonasā€™

    flow, forms?

  425. Ge0rG

    Kev: escalate to the A-team?

  426. jonasā€™

    itā€™s not strictly required there, but would be a major UX pain if the elements were reordered there

  427. flow

    are child elements of <x/>

  428. flow

    I am taking just about first level child elements of stanzas

  429. jonasā€™

    flow, oh, youā€™re only talking direct children of the stanza?

  430. jonasā€™

    huh

  431. jonasā€™

    why would that follow different rules?

  432. flow

    well mostly, for forms the order is actually important

  433. flow

    for first level stanza childs it is usually not

  434. Kev

    Right. I have control of @xmpp.

  435. Kev

    Awaiting further orders :)

  436. jonasā€™

    change the password until someone has found the person spamming newsletter ads on it ;)

  437. flow

    I believe it to be at least unspecified that it has to be stable when processing a stanza, and while most implementations may keep the order, we should not depend on unspecified behavior

  438. Kev

    Changing the password won't help, people are granted access via tweetdeck.

  439. Kev

    I mean, unless it's genuinely compromised.

  440. pep.

    Kev, you can probably access analytics though? I think that came up yesterday in commteam@

  441. jonasā€™

    looks more like "well meant but went too far"

  442. Ge0rG

    jonasā€™: I know who that person is

  443. pep.

    And they're not hiding it either

  444. Kev

    If someone from Board tells me to, I'll strip access down in tweetdeck.

  445. Daniel

    i think it has stopped anyway

  446. pep.

    Daniel, no it hasn't, it won't, read commteam@ :)

  447. Ge0rG

    Kev: yeah, can you check analytics for the number of new followers vs. gone followers since September 3rd?

  448. Kev

    No clue, can I?

  449. Ge0rG

    regarding the twitter activity, there was some wiki acitivty: https://wiki.xmpp.org/web/index.php?title=Special:RecentChanges&days=1&from=

  450. Ge0rG

    Kev: it was said to be on https://analytics.twitter.com

  451. jonasā€™

    https://wiki.xmpp.org/web/CommTeam/Newsletter_Twitter_campaign

  452. Daniel

    i'm confused

  453. Kev

    I do not believe I can get past stats on follower counts.

  454. Ge0rG

    Bummer.

  455. Kev

    28 day summary sees tweet count up, impressions up, mentions up, profile visits down 17%, followers I think stable, unless I'm misreading, or unless it's not giving the info.

  456. Ge0rG

    Kev: thanks

  457. Ge0rG

    In that case, it looks like the spam strategy is working out

  458. Daniel

    assuming this are good metricsā€¦

  459. Kev

    I can only report what's in front of me.

  460. ralphm

    For clarity, as discussed in commteam@, those news letter tweets were sent by nyco. Some of the conversation might have been a bit harsh on him, as he is just trying to help.

  461. Ge0rG

    I'm very sorry that I hit the wrong notes in trying to talk to him :(

  462. ralphm

    To be honest, I was the one raising the issue in that room, and here before that, but I think we can take a lesson in seeing things from other perspectives, as well trying out things.

  463. ralphm

    In the mean while, should you have interesting stuff that could be (re-)tweeted from @xmpp, do let them know.

  464. Kev

    I don't think I've (deliberately, at least) passed any judgement other than offering to do what I'm told.

  465. ralphm

    Scheduled tweets interspersed with other stuff would already be a lot better.

  466. ralphm

    Kev: not calling anyone out specifically. And not even just on this topic.

  467. Kev

    Ah, my stats were September.

  468. Daniel

    yes. we actually have a lot of things going on in the community to increase # of tweets w/o repeating ourselves

  469. ralphm

    I assume everyone tries their best.

  470. Kev

    So for August we lost followers, and for July we gained (more) followers.

  471. Kev

    In fact, as far back as we've got stats, August is the only time we've lost followers rather than gaining.

  472. Daniel

    also 'we' probably react more sensitive to obvious advertisment than a regular person would

  473. Ge0rG

    Daniel: or without uttering things that look like cheap SEO

  474. Ge0rG

    Or that.

  475. Kev

    I'm back in 2017, and we've gained double-digits of followers each month, other than losing them in August.

  476. Kev

    I'm going to stop looking at stats now.

  477. jonasā€™

    how about re-tweeting https://twitter.com/iNPUTmice/status/1171678611897835520 ?

  478. Ge0rG

    jonasā€™: it lacks hashtags

  479. Daniel

    :-)

  480. Daniel

    i literally loled

  481. Ge0rG

    speaking of high-quality content

  482. jonasā€™

    #thatshouldhaveacve?

  483. Daniel

    jonasā€™, fwiw i usually RT my own tweets with xmpp if i consider them neutral and quality enough

  484. Ge0rG

    cheap self-promotion!

  485. Ge0rG

    :D

  486. Daniel

    good morning you should update dino did not make my own quality standards

  487. jonasā€™

    I like it actually

  488. ralphm

    Had Daniel's mentioned that you should because of security issues, I would have retweeted it right away.

  489. jonasā€™

    thatā€™s not to diminish dino, but itā€™s the kind of near-sarcastic security black humor Iā€™m into

  490. Daniel

    to my defense I did wrote that before i had coffee

  491. jonasā€™

    thatā€™s not to diminish dino, but itā€™s the kind of near-sarcastic security black humor Iā€™m into w.r.t. announcements

  492. ralphm

    Noted. Daniel: don't šŸ¦ before ā˜•

  493. pep.

    Well on that note, you should also update converse. Maybe we can have a tweet with all of them.

  494. pep.

    And then retweet! When we get CVEs assigned

  495. pep.

    All PR is good PR right

  496. jonasā€™

    FTR, Docker Hub is an awful thing

  497. jonasā€™

    > Created 44 minutes ago > Queue time 1 minute > Duration 0 min

  498. jonasā€™

    > Logs are not available yet

  499. jonasā€™

    what kind of infrasturcture is this?

  500. Kev

    A free one?

  501. mathieui

    A terrible one

  502. pep.

    Ge0rG, re MUC & errors / presence leak, a client could theoretically (not saying I'm going to do it) buffer these error messages going out, and only send them when the user sends chatstates or messages in the MUC.

  503. pep.

    What about chat markers btw, are they also used in MUC? receipts are this I know. Isn't that a good enough presence leak already?

  504. ralphm

    Why would you send errors after a while? A server is likely not going to have anything it wants to do at that point?

  505. pep.

    Sending error to the participant jid, in hope that that gets logged by the clients and there's some kind of hint displayed to the user to actually contact devs. (Yes I'm pretty hopeful)

  506. pep.

    By that time the user could be gone for sure

  507. pep.

    Surelike they could be gone when I connect and fetch messages

  508. pep.

    Just like they could be gone when I connect and fetch messages

  509. ralphm

    Correlation is not fun with random long delays, maybe.

  510. pep.

    hmm

  511. pep.

    True

  512. pep.

    But then people shout "presence leak"

  513. Daniel

    what is a presence leak?

  514. Daniel

    i previously thought of it as a resource leak

  515. pep.

    Daniel, you connect, your client fetches archive from MUC, finds an error and attempts to send that to the participant jid responsible for it. You're then effectively telling them you just came online

  516. pep.

    (or that you're somehow available)

  517. Daniel

    in a group chat?

  518. ralphm

    Is presence leak really a thing for MUC (as opposed to MIX)?

  519. Daniel

    didnā€™t you just did the same by joining?

  520. ralphm

    This

  521. pep.

    I wasn't the one to shout "presence leak"!

  522. pep.

    :)

  523. pep.

    But yeah, I actually agree. let me dismiss that issue then

  524. pep.

    Maybe combined with MSN? One of your clients didn't notice, the other connects and you send these errors. But then oh well

  525. ralphm

    Now, in theory, for MIX this is a bit different. There, sending presence can be optional.

  526. ralphm

    But then you might have markers or somesuch.

  527. pep.

    It's fine I'm not concerned about MIX for now, poezio doesn't have an implementation :)

  528. ralphm

    This is the XSF channel though, and not jdev šŸ¤£

  529. pep.

    heh

  530. pep.

    So you can do MIX PR just fine? :P

  531. jonasā€™

    Kev, (moving this from council@), but what stops me from sending you a random type=error (think spam)?

  532. jonasā€™

    if you make swift show a popup and interrupt the user, thatā€™s bad design IMO

  533. flow

    Daniel> i previously thought of it as a resource leak It is the same, but "presence leak" is the term rfc6120 uses

  534. ralphm

    I guess that also dismisses most of the recent discussions on Unicode and security issues in implementations. šŸ˜ƒ

  535. Daniel

    yes. but by that definition sending chat markers does not leak your resource

  536. Daniel

    chat markers leak that you are present

  537. Daniel

    but that's not what the term means

  538. Daniel

    (at least that what i've thought)

  539. Kev

    jonasā€™: I never said anything about popups (Swift policy is to never trigger popups from protocol).

  540. Kev

    But if you start receiving errors from someone, it'll tell you in the chat log with that person.

  541. jonasā€™

    Kev, that, I think, is fine

  542. jonasā€™

    even with CC-all-the-errors

  543. jonasā€™

    it shows that something you did on your phone went wrong and that you might want to pay attention (essentially)

  544. Kev

    But not if it's bare-JID errors.

  545. flow

    > Daniel> chat markers leak that you are present Depends on the situation i'd say. Client should usually not send stanzas to other clients that are otherwhise unable to determine if you are online, that's what I'd call a "presence leak".

  546. lovetox

    i dont understand the benefit of the token XEP

  547. lovetox

    it says something about that the password can be stolen

  548. jonasā€™

    lovetox, maybe on-list?

  549. lovetox

    but a token is the same, if its stolen, i can change the account password

  550. jonasā€™

    I havenā€™t read it yet and I have to go AFK now

  551. lovetox

    at least its nice that the xep gives the user some knowledge about what devices have access to the account

  552. Daniel

    You could simply not allow that

  553. lovetox

    you mean the server?

  554. lovetox

    so how would then someone change his password

  555. Daniel

    Login properly

  556. Ge0rG

    tokens are opaque and properly randomized; also they are not often stored on a stick-it note ;)

  557. Ge0rG

    there is also very much value in one-time tokens to on-board a new device to your account

  558. Ge0rG

    without having a password in a URL or QR code

  559. lovetox

    but this is not about one-time tokens, so why are you mention it?

  560. lovetox

    because its also a "token"?

  561. lovetox

    its basically a password replacement that has absolutley the same propertys, full access to the account

  562. lovetox

    so as i said i think it adds value because you know what devices are in use, it does not really provide any additional security

  563. Zash

    Hm? Per-device passwords?

  564. Daniel

    Per device passwords

  565. lovetox

    and it was always weird for me that the register xep does not have an option where the server can demand your current password

  566. Zash

    You somehow logged into the account

  567. lovetox

    yeah ..

  568. Daniel

    I mean per device passwords is not necessarily a bad thing. I don't know if the xep is a good implementation of that

  569. Daniel

    I haven't read it yet

  570. Daniel

    But I wouldn't dismiss per device passwords on principle

  571. Zash

    I wonder if you can hijack the authzid for something like that

  572. lovetox

    i didnt dismiss it Daniel if you got that from what i said

  573. lovetox

    the XEP talks a bit about security

  574. lovetox

    so thats what i questioned

  575. lovetox

    its definitly nice to know what device are connected and beeing able to remotley log them off and revoke them

  576. Daniel

    > its definitly nice to know what device are connected and beeing able to remotley log them off and revoke them Yes

  577. Ge0rG

    I wouldn't be opposed to tokens that have limited permissions behind, like not being allowed to change the password or to issue further tokens; also a limit to one connection per token

  578. Daniel

    All that

  579. Link Mauve

    lovetox, in SASL EXTERNAL with client certs (XEP-0257 IIRC), it is said that if the user tries to change their password, they should get an error and then asked for the previous password first.

  580. Ge0rG

    Yes, with a data form

  581. Link Mauve

    In the non-error part of an error iq. ;_;

  582. Daniel

    > Yes, with a data form Data forms are definitely in the top five of my favorite forms

  583. larma

    I think auth tokens could be reusing RFC7628 and in general be more OAuth compatible

  584. larma

    Oh, and XEP-0235

  585. pep.

    oh, TIL

  586. Daniel

    oh they gave me three CVE

  587. Kev

    Maybe it's a special offer on Wednesdays.

  588. flow

    can't get enough of that wonderful CVEs

  589. Zash

    Gotta catch them all!

  590. Ge0rG

    They need to motivate the six digit numbers!

  591. pep.

    Do you win something if you get there first?