blob: 43b24bed24eb0ab803233b8aa2b0babbf0840fb3 [file] [log] [blame] [view]
David Brown37f8afd2017-09-12 10:59:39 -06001# MCUboot Release Notes
2
3- Table of Contents
4{:toc}
5
Andrzej Puzdrowski69344632020-10-30 15:36:49 +01006## Version 1.7.0
7
8The 1.7.0 release of MCUBoot adds support for Equal slots (direct-xip)
9upgrade mode, RAM loading upgrade mode, hardening against hardware level
10fault injection and timing attacks and single image mode.
11There are bug fixes, and associated imgtool updates as well.
12
13### About this release
14
15- Added possibility to enter deep sleep mode after mcuboot app execution
16 for cypress platform.
17- Added hardening against hardware level fault injection and timing attacks.
18- Introduced Abstract crypto primitives to simplify porting.
19- Added RAM-load upgrade mode.
20- Renamed single-image mode to single-slot mode.
21- Allow larger primary slot in swap-move
22- Fixed boostrapping in swap-move mode.
23- Fixed issue causing that interrupted swap-move operation might brick device
24 if the primary image was padded.
25- Abstracting mcuboot crypto functions for cleaner porting
26- Droped flash_area_read_is_empty() porting API.
27- boot/zephyr: Added watchdog feed on nRF devices.
28 See `CONFIG_BOOT_WATCHDOG_FEED` option.
29- boot/zephyr: Added patch for turning off cache for Cortex M7 before
30 chain-loading.
31- boot/zephyr: added option to relocate interrupts to application
32- boot/zephyr: clean ARM core configuration only when selected by user
33- boot/boot_serial: allow nonaligned last image data chunk
34- imgtool: added custom TLV support.
35- imgtool: added possibility to set confirm flag for hex files as well.
36- imgtool: Print image digest during verify.
37
David Brown342e8752020-04-15 10:57:28 -060038## Version 1.6.0
39
40The 1.6.0 release of MCUboot adds support for the PSOC6 platform,
41X25519 encrypted images, rollback protection, hardware keys, and a
42shared boot record to communicate boot attestation information to
43later boot stages. There are bug fixes, and associated imgtool
44updates as well.
45
46### About this release
47
48- Initial support for the Cypress PSOC6 plaformt. This platform
49 builds using the Cypress SDK, which has been added as submodules.
50- CBOR decoding in serial recovery replaced by code generated from a
51 CDDL description.
52- Add support for X25519 encrypted images.
53- Add rollback protection. There is support for a HW rollback counter
54 (which must be provided as part of the platform), as well as a SW
55 solution that protects against some types of rollback.
56- Add an optional boot record in shared memory to communicate boot
57 attributes to later-run code.
58- Add support for hardware keys.
59- Various fixes to work with the latest Zephyr version.
60
61### Security issues addressed
62
63- CVE-2020-7595 "xmlStringLenDecodeEntities in parser.c in libxml2
64 2.9.10 has an infinite loop in a certain end-of-file situation." Fix
65 by updating a dependency in documentation generation.
66
David Brown82c5f7c2020-05-05 15:47:30 -060067### Zephyr-RTOS Compatibility
68
69This release of MCUboot works the Zephyr "master" at the time of the
David Brown50d24a52020-05-22 10:23:42 -060070release. It was tested as of has 1a89ca1238. When Zephyr v2.3.0 is
71released, there will be a possible 1.6.1 or similar release of Zephyr
David Brown82c5f7c2020-05-05 15:47:30 -060072if needed to address any issues. There also may be branch releases of
73MCUboot specifically for the current version of Zephyr, e.g.
74v1.6.0-zephyr-2.2.1.
75
Fabio Utzigef7fbd72020-02-05 12:43:23 -030076## Version 1.5.0
77
78The 1.5.0 release of MCUboot adds support for encrypted images using
79ECIES with secp256r1 as an Elliptic Curve alternative to RSA-OAEP. A
80new swap method was added which allows for upgrades without using a
81scratch partition. There are also lots of bug fixes, extra simulator
82testing coverage and some imgtool updates.
83
84### About this release
85
86- TLVs were updated to use 16-bit lengths (from previous 8). This
87 should work with no changes for little-endian targets, but will
88 break compatibility with big-endian targets.
89- A benchmark framework was added to Zephyr
90- ed25519 signature validation can now build without using mbedTLS
91 by relying on a bundled tinycrypt based sha-512 implementation.
92- imgtool was updated to correctly detect trailer overruns by image.
93- Encrypted image TLVs can be saved in swap metadata during a swap
94 upgrade instead of the plain AES key.
95- imgtool can dump private keys in C format (getpriv command), which
96 can be added as decryption keys. Optionally can remove superfluous
97 fields from the ASN1 by passing it `--minimal`.
98- Lots of other smaller bugs fixes.
99- Added downgrade prevention feature (available when the overwrite-based
100 image update strategy is used)
101
102### Known issues
103
104- TLV size change breaks compatibility with big-endian targets.
105
David Brown4d0c5fa2019-10-08 09:57:31 -0600106## Version 1.4.0
107
108The 1.4.0 release of MCUboot primarily adds support for multi-image
109booting. With this release, MCUboot can manage two images that can be
110updated independently. With this, it also supports additions to the
111TLV that allow these dependencies to be specified.
112
113Multi-image support adds backward-incompatible changes to the format
114of the images: specifically adding support for protected TLV entries.
115If multiple images and dependencies are not used, the images will be
116compatible with previous releases of MCUboot.
117
118### About this release
119
David Brownd7581772019-10-15 12:00:25 -0600120- Fixed CVE-2019-5477, and CVE-2019-16892. These fix issue with
121 dependencies used in the generation of the documentation on github.
David Brown4d0c5fa2019-10-08 09:57:31 -0600122- Numerous code cleanups and refactorings
123- Documentation updates for multi-image features
124- Update imgtool.py to support the new features
David Brownd7581772019-10-15 12:00:25 -0600125- Updated the mbed TLS submodule to current stable version 2.16.3
126- Moved the mbed TLS submodule from within sim/mcuboot-sys to ext.
127 This will make it easier for other board supports to use this code.
128- Added some additional overflow and bound checks to data in the image
129 header, and TLV data.
130- Add a `-x` (or `--hex_addr`) flag to imgtool to set the base address
131 written to a hex-format image. This allows the image to be flashed
132 at an offset, without having to use additional tools to modify the
133 image.
David Brown4d0c5fa2019-10-08 09:57:31 -0600134
Szymon Janc7fea8462019-07-04 14:45:52 +0200135## Version 1.3.1
136
137The 1.3.1 release of MCUboot consists mostly of small bug fixes and updates.
138There are no breaking changes in functionality. This release should work with
139Mynewt 1.6.0 and up, and any Zephyr `master` after sha
140f51e3c296040f73bca0e8fe1051d5ee63ce18e0d.
141
142### About this release
143
144- Fixed a revert interruption bug
145- Added ed25519 signing support
146- Added RSA-3072 signing support
147- Allow ec256 to run on CC310 interface
148- Some preparation work was done to allow for multi image support, which
149 should land in 1.4.0. This includes a simulator update for testing
150 multi-images, and a new name for slot0/slot1 which are now called
151 "primary slot" and "secondary slot".
152- Other minor bugfixes and improvements
153
David Brownb1d15a72019-01-22 16:22:08 -0700154## Version 1.3.0
155
156The 1.3.0 release of MCUboot brings in many fixes and updates. There
157are no breaking changes in functionality. Many of the changes are
158refactorings that will make the code easier to maintain going forward.
159In addition, support has been added for encrypted images. See [the
160docs](encrypted_images.md) for more information.
161
162### About this release
163
164- Modernize the Zephyr build scripts.
165- Add a `ptest` utility to help run the simulator in different
166 configurations.
167- Migrate the simulator to Rust 2018 edition. The sim now requires at
168 least Rust 1.32 to build.
169- Simulator cleanups. The simulator code is now built the same way
170 for every configuration, and queries the MCUboot code for how it was
171 compiled.
172- Abstract logging in MCUboot. This was needed to support the new
173 logging system used in Zephyr.
174- Add multiple flash support. Allows slot1/scratch to be stored in an
175 external flash device.
176- Add support for [encrypted images](encrypted_images.md).
177- Add support for flash devices that read as '0' when erased.
178- Add support to Zephyr for the `nrf52840_pca10059`. This board
179 supports serial recovery over USB with CDC ACM.
180- imgtool is now also available as a python package on pypi.org.
181- Add an option to erase flash pages progressively during recovery to
182 avoid possible timeouts (required especially by serial recovery
183 using USB with CDC ACM).
184- imgtool: big-endian support
185- imgtool: saves in intel-hex format when output filename has `.hex`
186 extension; otherwise saves in binary format.
187
Fabio Utzig3c939012018-06-25 13:26:32 -0300188## Version 1.2.0
189
190The 1.2.0 release of MCUboot brings a lot of fixes/updates, where much of the
191changes were on the boot serial functionality and imgtool utility. There are
192no breaking changes in MCUBoot functionality, but some of the CLI parameters
193in imgtool were changed (either removed or added or updated).
194
195### About this release
196
197- imgtool accepts .hex formatted input
198- Logging system is now configurable
199- Most Zephyr configuration has been switched to Kconfig
200- Build system accepts .pem files in build system to autogenerate required
201 key arrays used internally
202- Zephyr build switched to using built-in flash_map and TinyCBOR modules
203- Serial boot has substantially decreased in space usage after refactorings
204- Serial boot build doesn't require newlib-c anymore on Zephyr
205- imgtool updates:
206 + "create" subcommand can be used as an alias for "sign"
207 + To allow imgtool to always perform the check that firmware does not
208 overflow the status area, `--slot-size` was added and `--pad` was updated
209 to act as a flag parameter.
210 + `--overwrite-only` can be passed if not using swap upgrades
211 + `--max-sectors` can be used to adjust the maximum amount of sectors that
212 a swap can handle; this value must also be configured for the bootloader
213 + `--pad-header` substitutes `--included-header` with reverted semantics,
214 so it's not required for firmware built by Zephyr build system
215
216### Known issues
217
218None
219
Fabio Utzig49045cc2018-01-09 15:56:29 -0200220## Version 1.1.0
221
Carles Cufi90eda802018-01-29 18:33:20 +0100222The 1.1.0 release of MCUboot brings a lot of fixes/updates to its
Fabio Utzig49045cc2018-01-09 15:56:29 -0200223inner workings, specially to its testing infrastructure which now
224enables a more thorough quality assurance of many of the available
225options. As expected of the 1.x.x release cycle, no breaking changes
226were made. From the tooling perpective the main addition is
227newt/imgtool support for password protected keys.
228
229### About this release
230
231- serial recovery functionality support under Zephyr
232- simulator: lots of refactors were applied, which result in the
233 simulator now leveraging the Rust testing infrastructure; testing
234 of ecdsa (secp256r1) was added
235- imgtool: removed PKCS1.5 support, added support for password
236 protected keys
237- tinycrypt 0.2.8 and the mbed-tls ASN1 parser are now bundled with
238 mcuboot (eg secp256r1 is now free of external dependencies!)
239- Overwrite-only mode was updated to erase/copy only sectors that
240 actually store firmware
241- A lot of small code and documentation fixes and updates.
242
243### Known issues
244
245None
246
David Brown37f8afd2017-09-12 10:59:39 -0600247## Version 1.0.0
248
Carles Cufi90eda802018-01-29 18:33:20 +0100249The 1.0.0 release of MCUboot introduces a format change. It is
David Brown37f8afd2017-09-12 10:59:39 -0600250important to either use the `imgtool.py` also from this release, or
251pass the `-2` to recent versions of the `newt` tool in order to
252generate image headers with the new format. There should be no
253incompatible format changes throughout the 1.x.y release series.
254
255### About this release
256
257- Header format change. This change was made to move all of the
258 information about signatures out of the header and into the TLV
259 block appended to the image. This allows
260 - The signature to be replaced without changing the image.
261 - Multiple signatures to be applied. This can be used, for example,
262 to sign an image with two algorithms, to support different
263 bootloader configurations based on these image.
264 - The public key is referred to by its SHA1 hash (or a prefix of the
265 hash), instead of an index that has to be maintained with the
266 bootloader.
267 - Allow new types of signatures in the future.
268- Support for PKCS#1 v1.5 signatures has been dropped. All RSA
269 signatures should be made with PSS. The tools have been changed to
270 reflect this.
271- The source for Tinycrypt has been placed in the MCUboot tree. A
272 recent version of Tinycrypt introduced breaking API changes. To
273 allow MCUboot to work across various platforms, we stop using the
274 Tinycrypt bundled with the OS platform, and use our own version. A
275 future release of MCUboot will update the Tinycrypt version.
276- Support for some new targets:
277 - Nordic nRF51 and nRF52832 dev kits
278 - Hexiwear K64
279- Clearer sample applications have been added under `samples`.
Fabio Utzig4dce6aa2018-02-12 15:31:32 -0200280- Test plans for [zephyr](testplan-zephyr.md), and
281 [mynewt](testplan-mynewt.md).
David Brown37f8afd2017-09-12 10:59:39 -0600282- The simulator is now able to test RSA signatures.
283- There is an unimplemented `load_addr` header for future support for
284 RAM loading in the bootloader.
285- Numerous documentation.
286
287### Known issues
288
289None
290
291## Version 0.9.0
292
Carles Cufi90eda802018-01-29 18:33:20 +0100293This is the first release of MCUboot, a secure bootloader for 32-bit MCUs.
David Brown37f8afd2017-09-12 10:59:39 -0600294It is designed to be operating system-agnostic and works over any transport -
295wired or wireless. It is also hardware independent, and relies on hardware
296porting layers from the operating system it works with. For the first release,
297we have support for three open source operating systems: Apache Mynewt, Zephyr
298and RIOT.
299
300### About this release
301
302- This release supports building with and running Apache Mynewt and Zephyr
303 targets.
304- RIOT is supported as a running target.
305- Image integrity is provided with SHA256.
306- Image originator authenticity is provided supporting the following
307 signature algorithms:
308 - RSA 2048 and RSA PKCS#1 v1.5 or v2.1
309 - Elliptic curve DSA with secp224r1 and secp256r1
310- Two firmware upgrade algorithms are provided:
311 - An overwrite only which upgrades slot 0 with the image in slot 1.
312 - A swapping upgrade which enables image test, allowing for rollback to a
313 previous known good image.
314- Supports both mbed-TLS and tinycrypt as backend crypto libraries. One of them
315 must be defined and the chosen signing algorithm will require a particular
316 library according to this list:
317 - RSA 2048 needs mbed TLS
318 - ECDSA secp224r1 needs mbed TLS
319 - ECDSA secp256r1 needs tinycrypt as well as the ASN.1 code from mbed TLS
320 (so still needs that present).
321
322### Known issues
323
324- The image header and TLV formats are planned to change with release 1.0:
325 https://runtimeco.atlassian.net/browse/MCUB-66