[Dovecot] Accessing plain text password from memory
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Thank you for your help,
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
On 2013-12-13 15:37, Stanislas SABATIER wrote:
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Thank you for your help,
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
If you enable auth_debug you can also enable auth_debug_passwords and that will show the plaintext password in the logfile when the user connects. I can't say I would recommend it though.
/A
On 13.12.2013, at 16.37, Stanislas SABATIER <s.sabatier@pobox.com> wrote:
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Assuming you you're using passdb sql and userdb prefetch and you want to access the password in imap/pop3/etc process, you can do:
password_query = '%w' as userdb_password, ...
Then the password will be available the same way as plugin { password } would be available (mail_user_plugin_getenv()).
You could also write a passdb plugin you could access the password directly from auth_request->mech_password.
Thanks for the info, I'll dig this option.
Regards, Stan.
Le 13 déc. 2013 à 15:47, Timo Sirainen <tss@iki.fi> a écrit :
On 13.12.2013, at 16.37, Stanislas SABATIER <s.sabatier@pobox.com> wrote:
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Assuming you you're using passdb sql and userdb prefetch and you want to access the password in imap/pop3/etc process, you can do:
password_query = '%w' as userdb_password, ...
Then the password will be available the same way as plugin { password } would be available (mail_user_plugin_getenv()).
You could also write a passdb plugin you could access the password directly from auth_request->mech_password.
Hi Timo,
thanks for the answer. I'm working on a plug in with an similar architecture.
Is there also a way to pass that plain password to a mail filter script? Obviously, the %w option as mail filter script argument does not work.
Kind regards, Philipp
On 13/12/13 15:47, Timo Sirainen wrote:
On 13.12.2013, at 16.37, Stanislas SABATIER <s.sabatier@pobox.com> wrote:
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Assuming you you're using passdb sql and userdb prefetch and you want to access the password in imap/pop3/etc process, you can do:
password_query = '%w' as userdb_password, ...
Then the password will be available the same way as plugin { password } would be available (mail_user_plugin_getenv()).
You could also write a passdb plugin you could access the password directly from auth_request->mech_password.
Quoting Stanislas SABATIER <s.sabatier@pobox.com>:
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
Hi Stan,
I hope you're not trying to copy Lavabit. Saying you don't have
access to mailbox contents on your own equipment would be a flat out
lie.
- You have the password in memory. Simply set the debug flags and
you can retrieve the password, as Lavabit did, to decrypt the mailbox.
Their claim of 'our policy is not to run in debug mode, therefore we
can't access your data' is not actually a form of security. - SMTP is in plain text. After the existing mail is read, any
incoming or outgoing mail is easily CC'd to a 'monitoring' mailbox
based on SMTP Auth or RCPT TO.
If it's not mailbox encryption, sorry (you have no idea how much I
detest that Lavabit guy for his lies), but if it is then it's nothing
more than a programming exercise.
Rick
Hi rick,
I DO want to encrypt/decrypt mails on the fly without «lying » to my customers.
It's better to have encrypted mail that are difficult to decrypt than plain text files within plain text folders. (Yes, it would be possible to get the user password on the fly, but my system is not design this way)
I agree that it's not panacea, but it's better than no encryption at all. Isn't it ?
As soon as a new email protocol will be available, I'll be the first to switch to it !
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
2013/12/13 Stanislas SABATIER <s.sabatier@pobox.com>
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Thank you for your help,
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
As long as you're not claiming that you can't access the data, then I
won't get uppity :)
Though I honestly don't see any advantage to the approach you're
taking. It was useless for Lavabit, it's a poor method that's not
going to fair any better under anyone else's watch. Why not just zip
all the files up and rename the extension? That'll be 'difficult' to
defeat too, and the plugins already exist. A rogue agent with local
access will be able to access the mailboxes, encrypted or not. Are you
running a FAM? Centralized SIEM? If not, they just set the debug flag
and reload the service without you ever even knowing.
IMHO, your time is better spent creating a PGP plugin that uses public
keys to encrypt the email contents.
Of course you lose indexing and searches.. It's just _not_ going to
be secure if a local service can decrypt the data.
I agree the core problem is SMTP. I'd be willing to use a new email
protocol as well, but I don't have high hopes from 'that' group. It's
like they've got Einstein and PT Barnum...
Rick
Quoting Stanislas SABATIER <s.sabatier@pobox.com>:
Hi rick,
I DO want to encrypt/decrypt mails on the fly without «lying » to my customers.
It's better to have encrypted mail that are difficult to decrypt than plain text files within plain text folders. (Yes, it would be possible to get the user password on the fly, but my system is not design this way)
I agree that it's not panacea, but it's better than no encryption at all. Isn't it ?
As soon as a new email protocol will be available, I'll be the first to switch to it !
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
2013/12/13 Stanislas SABATIER <s.sabatier@pobox.com>
Is there a way to retrieve the client's password in plain text from memory ?
I don't store the password in plain text in my postgreSQL but I need it when the client is connected to make crypto computation.
If I write a plugin to do the job, how could I retrieve the plain text password from master ?
Thank you for your help,
Regards, Stan.
Stanislas SABATIER s.sabatier@pobox.com
2013/12/13 Rick Romero <rick@havokmon.com>
(…)
IMHO, your time is better spent creating a PGP plugin that uses public keys to encrypt the email contents. Rick
That's exactly what I'm doing. Inbound mails are all encrypted with each
client's public key.
Then, clients can either decrypt mails on their own personal computer, or have their mails decrypted on-the-fly server side. In the later case, I store an encrypted private key for each client. To open the private key, I need client's password.
Stan
Quoting Stanislas SABATIER <s.sabatier@pobox.com>:
2013/12/13 Rick Romero <rick@havokmon.com>
(…)
IMHO, your time is better spent creating a PGP plugin that uses public keys to encrypt the email contents. Rick
That's exactly what I'm doing. Inbound mails are all encrypted with each
client's public key.
Then, clients can either decrypt mails on their own personal computer, or have their mails decrypted on-the-fly server side. In the later case, I store an encrypted private key for each client. To open the private key, I need client's password.
Stan
Oh! I feel so much better now :)
Rick
participants (6)
-
Alan McGinlay - SICS
-
Philipp Brüll
-
Rick Romero
-
Stanislas SABATIER
-
Stanislas SABATIER
-
Timo Sirainen