[DNSOP] Re: Comments from IETF Last Call about draft-ietf-dnsop-structured-dns-error

Paul Wouters <paul@nohats.ca> Tue, 06 May 2025 13:53 UTC

Return-Path: <paul@nohats.ca>
X-Original-To: dnsop@mail2.ietf.org
Delivered-To: dnsop@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id A52032560059; Tue, 6 May 2025 06:53:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -4.398
X-Spam-Level:
X-Spam-Status: No, score=-4.398 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=nohats.ca
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O2Vazc1XPF4M; Tue, 6 May 2025 06:53:14 -0700 (PDT)
Received: from mx.nohats.ca (mx.nohats.ca [193.110.157.85]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 98525256002D; Tue, 6 May 2025 06:53:14 -0700 (PDT)
Received: from localhost (localhost [IPv6:::1]) by mx.nohats.ca (Postfix) with ESMTP id 4ZsKbs4NfyzCt5; Tue, 6 May 2025 15:53:13 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nohats.ca; s=default; t=1746539593; bh=tEo5XD6wzdsvIrwEg6F9KxP6t7RiEMJHWnse8Jw+Hm0=; h=Date:From:To:cc:Subject:In-Reply-To:References; b=dXK/YpO77lrPWcdu6z9JidLetiWwffjkNds9K7HMx4MIkzBzlbFLakq/8lqiTqHVE TI9Hrb4X0FcW0pyAG+hy3xvx2tWGoRgWVnLSXMkivmtNyI6syBqNEFMr/K5SPJV8g1 glz03EI7LkpyLCw37nLxwvq/7a9IsikREB2g986E=
X-Virus-Scanned: amavisd-new at mx.nohats.ca
Received: from mx.nohats.ca ([IPv6:::1]) by localhost (mx.nohats.ca [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 4zuD9UUgdQ5v; Tue, 6 May 2025 15:53:11 +0200 (CEST)
Received: from bofh.nohats.ca (bofh.nohats.ca [193.110.157.194]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.nohats.ca (Postfix) with ESMTPS; Tue, 6 May 2025 15:53:11 +0200 (CEST)
Received: by bofh.nohats.ca (Postfix, from userid 1000) id 0F9DB15065DA; Tue, 06 May 2025 09:53:10 -0400 (EDT)
Received: from localhost (localhost [127.0.0.1]) by bofh.nohats.ca (Postfix) with ESMTP id 09DD515065D9; Tue, 06 May 2025 09:53:10 -0400 (EDT)
Date: Tue, 06 May 2025 09:53:09 -0400
From: Paul Wouters <paul@nohats.ca>
To: tirumal reddy <kondtir@gmail.com>
In-Reply-To: <CAFpG3gfqa4DD5qRGiz-x20AmpqZeHS3bLc5qyh6jf=EMfDvpbA@mail.gmail.com>
Message-ID: <a39cdd21-b128-73b3-4445-d03c31bb8096@nohats.ca>
References: <PH0PR11MB49666C9FAA1DC4C04EB7AEDBA98E2@PH0PR11MB4966.namprd11.prod.outlook.com> <aBjCctAUGms4Tqil@nic.fr> <be02a1b9-99f7-a603-c7b7-ce009850f245@nohats.ca> <CAFpG3gfqa4DD5qRGiz-x20AmpqZeHS3bLc5qyh6jf=EMfDvpbA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Message-ID-Hash: JAEZAQLNG524MVT5PPV6A6ZJ6OGB2PN3
X-Message-ID-Hash: JAEZAQLNG524MVT5PPV6A6ZJ6OGB2PN3
X-MailFrom: paul@nohats.ca
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-dnsop.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: Stephane Bortzmeyer <bortzmeyer=40nic.fr@dmarc.ietf.org>, "Eric Vyncke (evyncke)" <evyncke=40cisco.com@dmarc.ietf.org>, "dnsop@ietf.org" <dnsop@ietf.org>, last-call@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [DNSOP] Re: Comments from IETF Last Call about draft-ietf-dnsop-structured-dns-error
List-Id: IETF DNSOP WG mailing list <dnsop.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/dnsop/2zka9Lm711Mslk3s7N9-Ixawc-U>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dnsop>
List-Help: <mailto:dnsop-request@ietf.org?subject=help>
List-Owner: <mailto:dnsop-owner@ietf.org>
List-Post: <mailto:dnsop@ietf.org>
List-Subscribe: <mailto:dnsop-join@ietf.org>
List-Unsubscribe: <mailto:dnsop-leave@ietf.org>

On Tue, 6 May 2025, tirumal reddy wrote:

>       I am not sure why a JSON object for a browser would produce a more
>       "meaingful error message" than one that is possible with RFC 8914 ?
> 
> It is designed for clients to interpret and render meaningful, user-friendly messages. This approach has already seen adoption, such as in AdGuard’s DNS SDE
> extension, which shows how structured DNS error reporting can enhance end-user communication.  

I disagree. An ENUM can be handled by browsers to display text in the
locality of the user. This can just fling up a free text English
message, that you expect browsers to validate for potential harm
before displaying to the user. You are subcontracting out the
security risks you are introducing.

> The risks associated with displaying attacker-provided contact details are already addressed in the draft
> (see https://www.ietf.org/archive/id/draft-ietf-dnsop-structured-dns-error-15.html#section-10.2) The draft explicitly states that displaying the "c" field is not
> mandatory and outlines conditions under which it may be shown. While a home admin or IT department may already know the resolver’s contact details, other users on
> the network often do not. Providing contact information in structured form improves ease-of-use, allowing users to report filtering errors without having to
> independently search for their ISP’s or administrator’s support details. 

Ease of use for which users? Please tell me which of these users will
use this contact information:

1) Paul using a mobile phone, maybe connected to wifi or LTE.
2) Paul using a mobile phone, at home using a default CP from his ISP
3) Paul using a mobile phone, at home using his own stuff - he is a geek
4) Paul using a mobile phone, at starbucks, mall or airplane
5) Paul using a mobile phone, as BYOD at work
6) Paul using a mobile phone, in his hotel room
7) Paul using a Desktop at home
8) Paul using a Desktop at work

Tell me in which of these scenarios the contact info should be
displayed. Then do the same for Paul, now elderly at 90 years of
age, and not really understanding how is phone or desktop connects
to the internet at all.

>       The text "malware present for 23 days" and "example.net Filtering Service"
>       could have already been placed in the EXTRA-TEXT field as per RFC8914.
> 
>
>       The draft further states:
>
>               Whether the information provided in the "j" name is meaningful
>               or considered as garbage data (including empty values) is local
>               to each IT teams. 
> 
>
>       The draft seems the cherry-pick whether the content is meant for
>       endusers ("to eliminate the need to "spoof" block pages for HTTPS
>       resources") or when it is meant for IT teams. I think IT teams can
>       figure out who admins a DNS resolver on a certain IP already. The
>       non-admins are just vulnerable to misinformation.
> 
> 
> Relying solely on the EXTRA-TEXT field to carry "j" would prevent carrying other structured fields intended for both IT admins and end-users. This is precisely why
> separating structured information into dedicated fields is necessary to allow selective display to end-users and logging for IT admins.

I am fine with more enum's helping categorize why an answer is withheld.
I am having a problem with the EXTRA-TXT.

If an IT admin cannot find out who is responsible for a DNS filter, they
should probably switch DNS filter vendors. Worse, if their DNS service
providing this is compromised, they can't even trust it anyway. They
need to use their own resources and documentation, and not the network
provided one. I think claiming this is useful for non-endusers is just
not realistic. Which leaves us with endusers which means anything
displayed can and will be abused by attackers to manipulate vulnerable
endusers.

I see the main concern from an ISP being "It looks like we are broken
but we are merely following instructions (from government or the
commercial serivce opted in by the enduser) to filter/block a DNS
request".

So for that, ENUMs are enough and save to convey. And browsers can
translate enums for the user. Eg:

FILTERED_BY_DEVICE_REGULATORY
FILTERED_BY_DEVICE_USER_OPTIN_ADULT
FILTERED_BY_DEVICE_USER_OPTIN_ADBLOCKER
FILTERED_BY_ISP_REGULATORY
FILTERED_BY_ISP_USER_OPTIN_MALWARE

etc.


>
>       And this:
>
>               This approach thus avoids the need to install a local root
>               certificate authority on those IT-managed devices.
>
>       Is clearly targetting endusers.
> 
>
>       I believe this document is actually harmful to endusers, with no
>       meaningful gains for IT teams. If I was a browser vendor, I would
>       only allow displaying i18n text for EDE enums.
> 
> 
> please elaborate how it is harmful to end-users.

I've tried to explain this two times now. I hope this helps. Note that
it might also be helpful to read the below text where I explain how
Mark was trying to reduce the harm caused by your draft, but how I feel
it is still (too) dangerous to use freefom text ask Mark proposed.

Paul

> Cheers,
> -Tiru
>  
> 
>
>       Now Mark Nottingham does a fair attempt at trying to contain the
>       problem of display free text for the enduser in draft-nottingham-public-resolver-errors
>       by constraining the EXTRA-TEXT to just two IDs that map to a DNS
>       provider and an incidence number. But that will lead us back to
>       attacker induced spoof pages, eg:
>
>       The network / attacker does a:
>
>       - redirecting major IPs port 53 to itself (eg 1.1.1.1, 8.8.8.8, 9.9.9.9)
>          (and block DoT, DoH, DoQ)
>       - issuing DHCP DNS servers to itself.
>       - transparently run all port 53 through its own resolver.
>
>       then:
>
>       - Use a globally trusted ID from the DNS Resolver Identifier Registry, eg
>          the one from Google DNS.
>       - Generate a filtered response with Extended DNS Error Code 17 (see [RFC8914])
>          and an EXTRA-TEXT field containing:
>
>          {
>            "ro": "GoogleDNS", // or whatever they would have registered at IANAA
>            "inc": "abc123" // or whatever format Google DNS would use
>          }
>
>       Let's assume Google DNS has registered the template:
>
>           https://resolver-report.dns.google.com/filtering-incidents/{inc}
>
>       then additionally:
>
>       - resolve resolver-report.dns.google.com to itself.
>       - generate some self signed cert for resolver-report.dns.google.com
>       - publish malicious / advertising content on any URL on resolver-report.dns.google.com
> 
>
>       Since captive portals have already desensitized users into accepting
>       spoofed pages, this will still trick a percentage of users into going
>       to a malicious site (even if one cannot make it clickable, the text
>       can lure people to open a new tab/window and type in the name of the
>       website conveyed in the error msg, eg "visit www.fbi-arrests.io to
>       avoid an arrest warrant for trying to browse illegal content").
>
>       Furthermore, the incidents number can be customized for tracking or
>       deanonimising a user (eg one using Private Relay / MASQ). It would be
>       much better from a privacy perspective to only allow the QNAME to be
>       the incident number.
>
>       Note also that RFC 8914 warns of the dangerous of EXTRA-TEXT causing DNS
>       fragmentation when messages are used that are too long.
>
>       Mark's draft also causes more centalization of "well known/trusted DNS
>       servers".
> 
>
>       I would suggest that instead of these solutions, draft-ietf-dnsop-structured-dns-error
>       restricts itself to extend the ENUMs to cover most cases, and leave the
>       user / browsers to try and give more details errors, without the IETF
>       centralizing it using an IANA Registry. I would like it to deprecate
>       EXTRA-TEXT.
>
>       If some kind of extra text option is _really_ needed, then extend RFC
>       9606 resinfo with a template field that points to the resolver operators
>       extended error website, that browsers can use by filling in the template
>       URI with only the QNAME as option so it is guaranteed each user trying
>       to go to the same blocked domain gets the same error message and cannot
>       be deanonimized or tracked.
>
>       Paul
>
>       _______________________________________________
>       DNSOP mailing list -- dnsop@ietf.org
>       To unsubscribe send an email to dnsop-leave@ietf.org
> 
> 
>