unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#37196: 27.0.50; auth-source no longer obfuscates passwords
@ 2019-08-27 10:29 Lars Ingebrigtsen
  2019-09-20 20:05 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2019-08-27 10:29 UTC (permalink / raw)
  To: 37196


Emacs got a better pretty printer for compiled code sometime over the
last few years, and that means that the obfuscator that auth-source uses
no longer works.  (It puts the password into a closure.)

With the following in ~/.authinfo

machine foo.bar login zot password foobar

we get

(auth-source-search :max 1 :host "foo.bar")
=> ((:host "foo.bar" :user "zot" :secret #[0 "<binary>" [("foobar") (nil)] 3]))

with the "foobar" clearly printed out.  This should be fixed by
obfuscating the password in a different way.

Similarly, the printed representation of auth-source-netrc-cache also
has the password in clear text now.



In GNU Emacs 27.0.50 (build 27, x86_64-pc-linux-gnu, GTK+ Version 3.22.11)
 of 2019-08-23 built on marnie
Repository revision: b4065de33cf397b80e15c22740d34b4a03cfdc17
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11902000
System Description: Debian GNU/Linux 9 (stretch)


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no






^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#37196: 27.0.50; auth-source no longer obfuscates passwords
  2019-08-27 10:29 bug#37196: 27.0.50; auth-source no longer obfuscates passwords Lars Ingebrigtsen
@ 2019-09-20 20:05 ` Lars Ingebrigtsen
  2019-09-20 20:13   ` Lars Ingebrigtsen
  0 siblings, 1 reply; 3+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-20 20:05 UTC (permalink / raw)
  To: 37196

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Emacs got a better pretty printer for compiled code sometime over the
> last few years, and that means that the obfuscator that auth-source uses
> no longer works.  (It puts the password into a closure.)
>
> With the following in ~/.authinfo
>
> machine foo.bar login zot password foobar
>
> we get
>
> (auth-source-search :max 1 :host "foo.bar")
> => ((:host "foo.bar" :user "zot" :secret #[0 "<binary>" [("foobar") (nil)] 3]))
>
> with the "foobar" clearly printed out.  This should be fixed by
> obfuscating the password in a different way.

I have now done this --

(auth-source-search :max 1 :host "foo.bar")
=> ((:host "foo.bar" :user "zot" :secret #[0 "..." [(103 112 112 99 98 115) (nil) apply string mapcar 1-] 6]))

It's not exactly super-secret, but I think that's as far as we can get
here.  I briefly considered having a per-session nonce stored in memory,
and then using an encryption primitive to obfuscate the data (that would
mean that anybody mistakenly mailing these around wouldn't be able to
root out the password without having access to the running Emacs
instance).

Hm.  Now that I typed that, it strikes me that this should be rather
trivial to do with gnutls-symmetric-encrypt on systems where that is
available.  I'll give it a go...

> Similarly, the printed representation of auth-source-netrc-cache also
> has the password in clear text now.

This was already OK.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#37196: 27.0.50; auth-source no longer obfuscates passwords
  2019-09-20 20:05 ` Lars Ingebrigtsen
@ 2019-09-20 20:13   ` Lars Ingebrigtsen
  0 siblings, 0 replies; 3+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-20 20:13 UTC (permalink / raw)
  To: 37196

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Hm.  Now that I typed that, it strikes me that this should be rather
> trivial to do with gnutls-symmetric-encrypt on systems where that is
> available.  I'll give it a go...

Fortunately I remembered that I had already written all this symmetric
encryption stuff in a separate project, so I just cut and paste a bit.

(I mean, the encryption primitives are already in Emacs, but actually
using them requires a bit of typing...)

(auth-source-search :max 1 :host "foo.bar")
=> ((:host "foo.bar" :user "zot" :secret #[0 "..." ["Ng==-26GRPWrYlJnQAE+8gaEDcg==-DThpcRwaAi5ZBXQZC0rC3g==" (nil) auth-source--deobfuscate] 3]))

There.  That's better.  It does leak that the password is 6 characters
long, though, but that's a lot less leaky than ... it was before.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-09-20 20:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-27 10:29 bug#37196: 27.0.50; auth-source no longer obfuscates passwords Lars Ingebrigtsen
2019-09-20 20:05 ` Lars Ingebrigtsen
2019-09-20 20:13   ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).