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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
What's Changed
🔒 Security Fix
Fixes CVE-2025-25186 (GHSA-7fc5-f82f-cx69): A malicious server can exhaust client memory by sending
APPENDUIDorCOPYUIDresponses with very largeuid-setranges.Net::IMAP::UIDPlusDataexpands these ranges into arrays of integers.Fix with minor API changes
Set
config.parser_use_deprecated_uidplus_datatofalseto replaceUIDPlusDatawithAppendUIDDataandCopyUIDData. These classes store their UIDs asNet::IMAP::SequenceSetobjects (not expanded into arrays of integers). Code that does not handleAPPENDUIDorCOPYUIDresponses 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(UIDPlusDatawill be removed from v0.6).Mitigate with backward compatible API
Adjust
config.parser_max_deprecated_uidplus_data_sizeto limit the maximumUIDPlusDataUID 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 useAppendUIDDataorCopyUIDData.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(UIDPlusDatawill 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-imaphas 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_numberby @nevans in ✨ AddSequenceSet#each_ordered_number#386SequenceSet#find_ordered_indexby @nevans in ✨ AddSequenceSet#find_ordered_index#396SequenceSet#ordered_atby @nevans in ✨ AddSequenceSet#ordered_at#397APPENDUID/COPYUID, 🗑️ Deprecate UIDPlusData by @nevans in 🔧 Add parser config forAPPENDUID/COPYUID, 🗑️ Deprecate UIDPlusData #401Fixed
SequenceSet#appendwhen its@stringis nil by @nevans in 🐛 FixSequenceSet#appendwhen its@stringis nil #376#starttlserror from receiver thread by @nevans in 🥅 Re-raise#starttlserror from receiver thread #395Documentation
SequenceSet#cover?documentation by @nevans in 📚 FixSequenceSet#cover?documentation #379Other Changes
uid-setassequence-setwithout*by @nevans in ♻️ Parseuid-setassequence-setwithout*#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