[tahoe-lafs-trac-stream] [tahoe-lafs] #2037: cloud/S3 backend fails to redact ProductToken and UserToken from S3 error messages
tahoe-lafs
trac at tahoe-lafs.org
Fri Jul 26 01:40:04 UTC 2013
#2037: cloud/S3 backend fails to redact ProductToken and UserToken from S3 error
messages
-------------------------+-------------------------------------------------
Reporter: daira | Owner: daira
Type: defect | Status: assigned
Priority: normal | Milestone: soon
Component: unknown | Version: 1.9.0-s3branch
Resolution: | Keywords: security logging s3 cloud-backend
Launchpad Bug: | ticket999-S3-backend
-------------------------+-------------------------------------------------
Changes (by daira):
* status: new => assigned
Old description:
> Here's an example of LeastAuthority.com secrets being leaked in an S3
> error message (I've replaced the actual secrets with
> "THIS_SHOULD_NOT_BE_HERE" for this bug report):
> {{{
> [Failure instance: Traceback: <class
> 'lae_automation.endtoend.CheckFailed'>:
> Error for 107.22.17.1: could not create test file: [Failure instance:
> Traceback (failure with no frames):
> <class 'allmydata.mutable.common.NotEnoughServersError'>: ('Publish ran
> out of good servers, last failure was:
> [Failure instance: Traceback (failure with no frames): <class
> \'foolscap.tokens.RemoteException\'>:
> <RemoteException around \'[CopiedFailure instance: Traceback from remote
> host -- Traceback (most recent call last):\n
> File "/usr/local/lib/python2.6/dist-
> packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/tcp.py",
> line 277, in connectionLost\n
> protocol.connectionLost(reason)\n
> File "/usr/local/lib/python2.6/dist-
> packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/web/client.py", line
> 191, in connectionLost\n
> self.factory._disconnectedDeferred.callback(None)\n
> File "/usr/local/lib/python2.6/dist-
> packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/defer.py",
> line 362, in callback\n
> self._startRunCallbacks(result)\n
> File "/usr/local/lib/python2.6/dist-
> packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/defer.py",
> line 458, in _startRunC\n
> \n-- TRACEBACK ELIDED --\n\n
> client/base.py", line 46, in error_wrapper\n
> raise fallback_error\n
> allmydata.storage.backends.s3.s3_common.TahoeS3Error: (\'400\', \'400 Bad
> Request\',
> \'<?xml version="1.0" encoding="UTF-8"?>\\n
> <Error><Code>InvalidToken</Code>
> <Message>The provided token is malformed or otherwise invalid.</Message>
> <RequestId>266AB3D40D3E8F00</RequestId><HostId>IXcXMiM5tH07dLaANbZsgKe4rqkFF7yMBmfGlhWqZfdd9i6FqUiuUcsgEc6cmrAW</HostId>
> <Token-1>{ProductToken} THIS_SHOULD_NOT_BE_HERE </Token-1>
> <Token-0>{UserToken} THIS_SHOULD_NOT_BE_HERE </Token-0>
> </Error>\')\n
> ]\'>\n]', None)
> }}}
> (The storage server is running ticket999-S3-branch, but the problem also
> occurs for the current 1819-cloud-merge branch.)
New description:
Here's an example of !LeastAuthority.com secrets being leaked in an S3
error message (I've replaced the actual secrets with
"THIS_SHOULD_NOT_BE_HERE" for this bug report):
{{{
[Failure instance: Traceback: <class
'lae_automation.endtoend.CheckFailed'>:
Error for 107.22.17.1: could not create test file: [Failure instance:
Traceback (failure with no frames):
<class 'allmydata.mutable.common.NotEnoughServersError'>: ('Publish ran
out of good servers, last failure was:
[Failure instance: Traceback (failure with no frames): <class
\'foolscap.tokens.RemoteException\'>:
<RemoteException around \'[CopiedFailure instance: Traceback from remote
host -- Traceback (most recent call last):\n
File "/usr/local/lib/python2.6/dist-
packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/tcp.py",
line 277, in connectionLost\n
protocol.connectionLost(reason)\n
File "/usr/local/lib/python2.6/dist-
packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/web/client.py", line
191, in connectionLost\n
self.factory._disconnectedDeferred.callback(None)\n
File "/usr/local/lib/python2.6/dist-
packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/defer.py",
line 362, in callback\n
self._startRunCallbacks(result)\n
File "/usr/local/lib/python2.6/dist-
packages/Twisted-11.1.0-py2.6-linux-i686.egg/twisted/internet/defer.py",
line 458, in _startRunC\n
\n-- TRACEBACK ELIDED --\n\n
client/base.py", line 46, in error_wrapper\n
raise fallback_error\n
allmydata.storage.backends.s3.s3_common.TahoeS3Error: (\'400\', \'400 Bad
Request\',
\'<?xml version="1.0" encoding="UTF-8"?>\\n
<Error><Code>InvalidToken</Code>
<Message>The provided token is malformed or otherwise invalid.</Message>
<RequestId>266AB3D40D3E8F00</RequestId><HostId>IXcXMiM5tH07dLaANbZsgKe4rqkFF7yMBmfGlhWqZfdd9i6FqUiuUcsgEc6cmrAW</HostId>
<Token-1>{ProductToken} THIS_SHOULD_NOT_BE_HERE </Token-1>
<Token-0>{UserToken} THIS_SHOULD_NOT_BE_HERE </Token-0>
</Error>\')\n
]\'>\n]', None)
}}}
The storage server is running ticket999-S3-backend, but the problem also
occurs for the current 1819-cloud-merge branch. (The latter redacts
{{{SignatureDoesNotMatch}}} errors but not {{{InvalidToken}}} errors.)
--
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2037#comment:1>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list