On Thu, 12 Nov 2020, Mike Tubby via Exim-users wrote:

Here's a proposal for a compromise in an attempt to satisfy these, competing, requirements with a phased approach:

1. Publish a roadmap for Exim - likely things to arrive in 4.95, 4.96, 4.97 ... and that there will be an Exim 5.0 out in roughly XX months.  This doesn't have to be stuck to - its forward looking not a 'promise' but can include item (5) below.

2. Keep the tainted data model as it is now

3. Don't give the user's new untaint methods that fix one thing and potentially break another, e.g. internationalisation

4. Document tainted data more fully:

* what tainted data is
* what can go wrong if you trust it when you shouldn't
* why you need to change
* examples of configurations and recommendations

Ensure the documentation includes the road-signs to the right way to do things to avoid cargo-cult

5. Add a new config variable:

        taint_mode = warn | enforce

which is initially defaults to 'warn' and which bleaches to mainlog/paniclog or even stdout on start warning:

        a) of the perils of tainted data;
b) tells the user this this feature is going to be removed in a future release
        c) points to the documentation (3)
  Eg:
Exim: Configuration uses tainted data which is currently allowed may be dangerous. This will be removed in a future release. For info see https://exim.org/tainted_data.html

At some later release (4.96, 4.97 ?) switch from the default of 'warn' to the default of 'enforce', effectively allowing the user to swim against the tide by switching back to 'warn' if they must.

    Implement the taint_mode with a sun-set, i.e planned removal at Exim 5.0.

6. Implement Jeremy's relatively light weight:

      ${if  tainted{my_suspect_expansion}  {expand_this} {expand_that}}

Which he said would be simple to code and test and allow some workarounds to be implemented for some use cases.

7. Publicity.

Generally good. Thanks Mike.

Some points:

A/ I believe that one reason we have got into this position is that
"suspect" data is currently being used in many ways that the main
developers had not imagined.
*** This means that other people are in a better position then Jeremy etc.
*** to write (at least one pass of) the new documentation.

B/ Given that the likes of Ubuntu are now shipping v4.94,
would it not be reasonable to default to
       taint_mode = enforce
 - anyone who is up to date already has this, so that is least surprise ?
If 4.95 bleats unless taint_mode is explicitly set to something, we will
get some free publicity, and the user will know to set taint_mode = warn
until they have addresses the issue.
The later release (4.96, 4.97 ?) will then merely need to bleat
if taint_mode is set to "warn".
(I am tempted to suggest that this should be a persistent bleat, like the
  Warning: No server certificate defined; will use a selfsigned one.
    Suggested action: either install a certificate or change 
tls_advertise_hosts option
message.)

C/ I see 6. ${if  tainted{ as primarily a debugging feature;
once {expand_this} and {expand_that} are pinned down for an installation,
I believe that {my_suspect_expansion} will usually turn out to be a constant.


--
Andrew C. Aitchison                      Kendal, UK
                   [email protected]
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to