integrity failure in mutable retrieve (SDMF+MDMF) in 1.9.0 #1654
Labels
No Label
0.2.0
0.3.0
0.4.0
0.5.0
0.5.1
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
1.0.0
1.1.0
1.10.0
1.10.1
1.10.2
1.10a2
1.11.0
1.12.0
1.12.1
1.13.0
1.14.0
1.15.0
1.15.1
1.2.0
1.3.0
1.4.1
1.5.0
1.6.0
1.6.1
1.7.0
1.7.1
1.7β
1.8.0
1.8.1
1.8.2
1.8.3
1.8β
1.9.0
1.9.0-s3branch
1.9.0a1
1.9.0a2
1.9.0b1
1.9.1
1.9.2
1.9.2a1
LeastAuthority.com automation
blocker
cannot reproduce
cloud-branch
code
code-dirnodes
code-encoding
code-frontend
code-frontend-cli
code-frontend-ftp-sftp
code-frontend-magic-folder
code-frontend-web
code-mutable
code-network
code-nodeadmin
code-peerselection
code-storage
contrib
critical
defect
dev-infrastructure
documentation
duplicate
enhancement
fixed
invalid
major
minor
n/a
normal
operational
packaging
somebody else's problem
supercritical
task
trivial
unknown
was already fixed
website
wontfix
worksforme
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Reference: tahoe-lafs/trac-2024-07-25#1654
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is the ticket where we will track the details of a failure of assurance of integrity. For now, here is the announcement:
Attachment 1.9.0-integrity-fail-warning.txt.asc (10253 bytes) added
fixed formatting of announcement, removed pubkeys, removed signature wrapper (not verifiable here)
In changeset:d10f260f36a9da6f:
In changeset:d10f260f36a9da6f:
Dear Tahoe-LAFS Users:
On 08-Jan-2012, Tahoe-LAFS core member Kevan Carstensen (author of the
MDMF code) discovered a serious bug in v1.9.0 (the current stable
release) that allows attackers to corrupt downloads of mutable files in
certain cases. We've released Tahoe-LAFS v1.9.1 which removes this
vulnerability. All users are encouraged to upgrade immediately to
v1.9.1, or to downgrade to v1.8.3.
v1.9.0 was released about two months ago. As far as we know, ArchLinux
is the only distribution to have packaged v1.9.0 (the others are still
on v1.8.3, which is safe). So if you get your Tahoe-LAFS through a
non-ArchLinux package, you're probably fine. If you build it yourself,
you should upgrade.
In Tahoe, files are encrypted, and then encoded into multiple redundant
shares. Integrity-checking information (Merkle hash trees) are included
in the shares to detect corruption. When downloading, these hashes are
checked before combining the shares in the decoder, which generates
ciphertext that can be decrypted into the original file. Mutable files
have two sets of hash trees, the "share hash tree" (which covers all
shares), and the "block hash trees" (which sit under the share-hash-tree
and cover the individual blocks that make up each share, one block per
128KiB segment of the original file).
The new mutable downloader released in v1.9.0, which supports both the
old-style SDMF format and the new MDMF format, has a bug in which the
share-hash-tree check is accidentaly bypassed when the Merkle hash tree
is already fully populated. This doesn't normally occur, but shares can
contain additional hash-tree nodes beyond the ones they strictly need.
An attacker could modify one share to include the entire tree, then
change the block data in the remaining shares. They would need to update
the block-hash-trees in those doctored shares, but because of the bug,
these tree roots will not be compared against the share hash tree.
The attacker is thus able to control the input to the ZFEC decoder for
all but the first share received (which must have valid block data).
This gives them the ability to flip bits of the plaintext without
triggering the CorruptShareError exceptions that share corruption would
normally produce, causing corrupted plaintext to be delivered to an
unwitting client.
To exploit this bug, the attacker must be able to deliver multiple
modified shares to your client, in a particular order: this means they
must control one or more of your storage servers.
Note that this does not directly reveal the plaintext to the attacker
(this is an integrity failure, not a confidentiality failure). However,
"encryption without authentication" is never a safe state of affairs,
and can frequently be exploited to reveal information about the
plaintext (perhaps by inducing observable failures by flipping bits in
messages of a known format). In addition, clients which read corrupted
data as part of a read-modify-write operation (such as directory
modifications) may then write the corrupted data back out to the file,
making the corruption persist even after the client has been fixed.
v1.9.1 fixes this by removing the accidental "if" clause, making the
share-hash-tree check unconditional.
The specific bug is in source:src/allmydata/mutable/retrieve.py,
Retrieve._validate_block, around the call to
share_hash_tree.set_hashes(), and was introduced in git revisionid
ac3b2647dd2c45cd1ddbf5b130ee5a780c66c73b with the MDMF-capable
downloader rewrite around 01-Aug-2011. The bug was first present in
shipping code in Tahoe-LAFS-1.9.0, on 30-Oct-2011. It was fixed in
commit [9b4b03a474a2c9050c8347459ab6698839be7288], shipped in
Tahoe-LAFS-1.9.1 on 12-Jan-2012. We are continuing to audit the 1.9.x
mutable downloader code to search for other potential bugs.
pkgsrc also packaged 1.9.0. (However, pkgsrc isn't a "distribution", in that it is not a Linux kernel and a group of user-space programs. Instead, it is a packaging system that supports multiple operating systems.)
The tahoe-lafs entry in pkgsrc was updated about 2011-01-13T0115Z to 1.9.1.
placeholderto integrity failure in mutable retrieve (SDMF+MDMF) in 1.9.0I got mail from Kurt Seifried kseifried@redhat.com saying to use CVE-2012-0051 to denote this vulnerability.