v0.5.6 #405
nevans
announced in
Announcements
v0.5.6
#405
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
What's Changed
🔒 Security Fix
Fixes CVE-2025-25186 (GHSA-7fc5-f82f-cx69): A malicious server can exhaust client memory by sending
APPENDUID
orCOPYUID
responses with very largeuid-set
ranges.Net::IMAP::UIDPlusData
expands these ranges into arrays of integers.Fix with minor API changes
Set
config.parser_use_deprecated_uidplus_data
tofalse
to replaceUIDPlusData
withAppendUIDData
andCopyUIDData
. These classes store their UIDs asNet::IMAP::SequenceSet
objects (not expanded into arrays of integers). Code that does not handleAPPENDUID
orCOPYUID
responses should not see any difference. Code that does handle these responses may need to be updated.For v0.3.8, this option is not available
For v0.4.19, the default value is
true
.For v0.5.6, the default value is
:up_to_max_size
.For v0.6.0, the only allowed value will be
false
(UIDPlusData
will be removed from v0.6).Fully backward compatible mitigation
Adjust
config.parser_max_deprecated_uidplus_data_size
to limit the maximumUIDPlusData
UID set size.When
config.parser_use_deprecated_uidplus_data == true
, larger sets will crash.When
config.parser_use_deprecated_uidplus_data == :up_to_max_size
, larger sets will useAppendUIDData
orCopyUIDData
.For v0.3,8, this limit is hard-coded to 10,000.
For v0.4.19, this limit defaults to 1000.
For v0.5.6, this limit defaults to 100.
For v0.6.0, the only allowed value will be
0
(UIDPlusData
will be removed from v0.6).Please Note: unhandled responses
If the client does not add response handlers to prune unhandled responses, a malicious server can still eventually exhaust all client memory, by repeatedly sending malicious responses. However,
net-imap
has always retained unhandled responses, and it has always been necessary for long-lived connections to prune these responses. This is not significantly different from connecting to a trusted server with a long-lived connection. To limit the maximum number of retained responses, a simple handler might look something like the following:Added
SequenceSet#each_ordered_number
by @nevans in ✨ AddSequenceSet#each_ordered_number
#386SequenceSet#find_ordered_index
by @nevans in ✨ AddSequenceSet#find_ordered_index
#396SequenceSet#ordered_at
by @nevans in ✨ AddSequenceSet#ordered_at
#397APPENDUID
/COPYUID
, 🗑️ Deprecate UIDPlusData by @nevans in 🔧 Add parser config forAPPENDUID
/COPYUID
, 🗑️ Deprecate UIDPlusData #401Fixed
SequenceSet#append
when its@string
is nil by @nevans in 🐛 FixSequenceSet#append
when its@string
is nil #376#starttls
error from receiver thread by @nevans in 🥅 Re-raise#starttls
error from receiver thread #395Documentation
SequenceSet#cover?
documentation by @nevans in 📚 FixSequenceSet#cover?
documentation #379Other Changes
uid-set
assequence-set
without*
by @nevans in ♻️ Parseuid-set
assequence-set
without*
#393Miscellaneous
Full Changelog: v0.5.5...v0.5.6
This discussion was created from the release v0.5.6.
Beta Was this translation helpful? Give feedback.
All reactions