Re: [xmpp] IQ Handling vulnerabilities

Dave Cridland <dave@cridland.net> Sun, 09 February 2014 19:30 UTC

Return-Path: <dave@cridland.net>
X-Original-To: xmpp@ietfa.amsl.com
Delivered-To: xmpp@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 314751A0545 for <xmpp@ietfa.amsl.com>; Sun, 9 Feb 2014 11:30:59 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.521
X-Spam-Level:
X-Spam-Status: No, score=0.521 tagged_above=-999 required=5 tests=[BAYES_40=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6auJZ2SGaur4 for <xmpp@ietfa.amsl.com>; Sun, 9 Feb 2014 11:30:57 -0800 (PST)
Received: from mail-oa0-x22d.google.com (mail-oa0-x22d.google.com [IPv6:2607:f8b0:4003:c02::22d]) by ietfa.amsl.com (Postfix) with ESMTP id 721511A0443 for <xmpp@ietf.org>; Sun, 9 Feb 2014 11:30:57 -0800 (PST)
Received: by mail-oa0-f45.google.com with SMTP id i11so6555780oag.4 for <xmpp@ietf.org>; Sun, 09 Feb 2014 11:30:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cridland.net; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=eYr2aQjz2lapQlqx3sdRUlUu5R5MTmCMqpjSB3YsTFQ=; b=VYyypO6JM33DMwBQHuQNcvhAkKaMkj1c4gHPLEk+MUqd0AhslpESeAFhfGAGktdkzj QZ121ra1PbCZjuDwQE7YH3LhOwqMyklDcDcaFeHYvTSPW7OLV/O76yrVs4GGoMWPRpw0 8NI3anbOnxP4eWR6DnLYVM1eRdOoWplwY8kIs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=eYr2aQjz2lapQlqx3sdRUlUu5R5MTmCMqpjSB3YsTFQ=; b=HviK5yv2SBOaIvUVugKR1C3haaWH6xOPnv8Ki7Rve6Ja9Fs67QkQk5z3Mi4yn+D8Rh 7NxE4uEmo+NxEVgD13rEpeM+8mprPAkV6EPlZ5nG3QKBQnOY7amtBgnKxqM84LONx9SM 0DmlDP71UmHDwuNCaQFYx5igGCaSxh9ZyMH08REfzhWwNmGt+vkfzc04+Qxqck6PZcoP VVJHVo27w+taIrFgDg5diucZXuLN0W32Is0hthBffyZVjQzo6iH2h6EGtnJAamYvNnUg j3xYIFIaTMQWpOpMWtsgjsFope3cYeuiLALqz+CpvrK4hLatp4l//me7aBlzkkl6kOtv eozg==
X-Gm-Message-State: ALoCoQl6kPnkHeQ3QNpXg2d/llMgckqkSIUS6zZht0T78undDkWZeSJlbxFrhT5dFMezysTfM5nc
MIME-Version: 1.0
X-Received: by 10.60.229.4 with SMTP id sm4mr23538667oec.9.1391974257270; Sun, 09 Feb 2014 11:30:57 -0800 (PST)
Received: by 10.60.55.138 with HTTP; Sun, 9 Feb 2014 11:30:57 -0800 (PST)
In-Reply-To: <12420410-2615-4A32-8998-AFF19D4EF7BC@xnyhps.nl>
References: <CAOb_FnxS-dMT85N7LHj5M9JWk3pL85=ugrDqaT7j5d28HBr0Cw@mail.gmail.com> <CF194491.38AD3%jhildebr@cisco.com> <2F5E925F-021D-408E-91D9-3CC5BEB6BEC6@nostrum.com> <48F4D361-4403-47E6-862D-FBDDDEBCC642@xnyhps.nl> <CF1A369C.38BE2%jhildebr@cisco.com> <CAKHUCzyCwKbmnUoXLHW=XzYbiFrcg-dQsDojGUnA-_r3qK+_Vg@mail.gmail.com> <12420410-2615-4A32-8998-AFF19D4EF7BC@xnyhps.nl>
Date: Sun, 09 Feb 2014 19:30:57 +0000
Message-ID: <CAKHUCzw6r4vZOHmLm62YgQAj72EjiXbqc8ZShC4=pJ5gxff31w@mail.gmail.com>
From: Dave Cridland <dave@cridland.net>
To: Thijs Alkemade <thijs@xnyhps.nl>
Content-Type: multipart/alternative; boundary="001a1136286025ef8704f1fe43a1"
Cc: Ben Campbell <ben@nostrum.com>, XMPP Working Group <xmpp@ietf.org>
Subject: Re: [xmpp] IQ Handling vulnerabilities
X-BeenThere: xmpp@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: XMPP Working Group <xmpp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/xmpp>, <mailto:xmpp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/xmpp/>
List-Post: <mailto:xmpp@ietf.org>
List-Help: <mailto:xmpp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 09 Feb 2014 19:30:59 -0000

On Sun, Feb 9, 2014 at 2:13 PM, Thijs Alkemade <thijs@xnyhps.nl> wrote:

>
> On 7 feb. 2014, at 16:50, Dave Cridland <dave@cridland.net> wrote:
>
> > What are the attacks possible against an entity using predictable stanza
> ids, but which otherwise acts properly (ie, checks to/from on responses,
> etc)?
> >
> > I'm a bit confused - if an entity isn't checking the to/from of the
> responses, then sure there's a slew of attacks possible. If it *also* has
> predictable ids, then the attacks are easier - but they're the same
> attacks. Aren't they?
>
> The least far-fetched scenario I can think of: you're offering a file
> transfer
> to someone's MUC room nick. The person disconnects, someone else takes
> their
> nick and intercepts the file transfer by guessing the 'id' that was used.
> This
> is also a scenario where a per-address counter will not protect you.
> (Though a
> better fix is probably to cancel all pending queries to participants when
> you
> see them disappear from the room...)
>
>
Ah! Nice one.

FWIW, it's possible to hide a offline/online event by DOSsing the original
server then spoofing it, which is hard work but practical given DNS spoofed
dialback.

Also, there's a bunch of MUC-replacement attacks, I suspect, that don't
involve having to predict a stanza id.


> > I'm not saying that we shouldn't generally recommend unpredictable ids -
> it seems relatively simple and causes little harm - but cryptographically
> secure ones seems overkill, and I'm always nervous of imposing unneeded
> drains on the entropy store of a system.
> >
> > Also, I've mentioned this elsewhere, but I'll mention it here too: much
> of the XMPP community seems focussed on clients exhibiting this class of
> bug, and attacks against those clients. I strongly suspect that not all
> servers are immune to this, and the attacks on servers are likely to be
> just as fascinating.
>
> I'm trying to think of a situation where the server sends a iq 'get' to the
> client, but I don't really know any. A lot of iq 'set's, where the server
> informs the client of something (and probably doesn't really care whether
> that
> results in an 'error' or 'result'), but nothing where the server wants to
> know
> something from the client. Could you give an example?
>
>
As Waqas says, there's a bunch of cases. It gets worse if the server is
running optimization-related intercepts, such as disco caching, I suspect.
I think there are interesting cases around an XMPP-level file-transfer
proxy (for anti-virus, or SI/Jingle translation) for example.

I'd hope Kev's example is way off, though - I suspect that servers ignore
the XEP-0199 reply stanza and just look for activity on the socket.

Dave.