blob: 00bb6261e805a64acc7450f88bcbd67f153c4021 [file] [log] [blame] [view]
Francesco Servidio5bc98322021-11-03 13:19:22 +01001# MCUboot release notes
David Brown37f8afd2017-09-12 10:59:39 -06002
3- Table of Contents
4{:toc}
5
David Brownd2dfa1b2023-03-17 10:50:43 -06006## Version 1.10.0
7
8The 1.10.0 release of MCUboot contains...
9
10### About this release
11
12- Various fixes to boot serial.
13- Various fixes to the mbed target.
14- Various fixes to the Espressif native target.
15- Various fixes to the Zephyr target.
16- Workflow improvements with Zephyr CI.
17- Add multi image support to the espressif esp32 target.
18- Improvements and corrections to the simulator.
19- Improve imgtool, including adding 3rd party signing support.
20- Various fixes to the mynewt target.
21- Various fixes to the nuttx target.
22- Dates to dependencies for doc generation.
23- Add downgrade prevention for modes using swap.
24- Various general fixes to the boot code.
25- Prefer swap move on zephyr if the scratch partition is not enabled.
26- Upgrade fault-injection hardening, improving cases injections are detected.
27- Add a new flash api `flash_area_get_sector`, along with support for each
28 target, that replaces `flash_area_sector_from_off`. This is a step in cleaning
29 up the flash API used by MCUboot.
30
31### Security fixes
32
33There are no security vulnerabilities reported on the MCUboot code for this
34release. There have been several updates to the dependencies in the Ruby code
35used to generate the documentation. This should only affect users that generate
36their own documentation.
37
David Browneaa8b312022-01-19 10:46:01 -070038## Version 1.9.0
39
40The 1.9.0 release of MCUboot contains various bug fixes, improves
41support on some recent targets, and adds support for devices with a
42write alignment larger than 8.
43
44This change introduces a potentially incompatible change to the format
45of the image trailer. If `BOOT_MAX_ALIGN` is kept at 8, the trailer
46format does not change. However, to support larger write alignments,
47this value can be increased, which will result in a different magic
48number value. These targets were previously unsupported in MCUboot,
49so this change should not affect any existing targets. The change has
50been tested with a `BOOT_MAX_ALIGN` up to 32 bytes.
51
52### About this release
53
54- Add native flash encryption to Espressif targets
55- Numerous documentation improvements
56- Increase coverage of large images in the simulator
57- Add stm32 watchdog support
58- Add support for the `mimxrt685_evk` board
59- Add support for "partial multi-image booting"
60- Add support for clear image generation with encryption capability to
61 imgtool
David Brownb32ff6d2022-02-09 23:18:19 -070062- Fix Zephyr when `CONFIG_BOOT_ENCRYPTION_KEY_FILE` is not defined
63- Remove zephyr example test running in shell. The Go version is
64 primary and much more featureful.
65- imgtool: make `--max-align` default reasonable in most cases.
David Brownc657cbe2022-03-01 14:17:19 -070066- Implement the mcumgr echo command in serial boot mode
David Browneaa8b312022-01-19 10:46:01 -070067
68### Security fixes
69
David Brownae355102021-08-27 13:15:16 -060070## Version 1.8.0
71
72The 1.8.0 release of MCUboot contains numerous fixes, and adds support
73for the NuttX RTOS, and the Espressif ESP32 SDK.
74
75### About this release
76
77- Add support for the NuttX RTOS.
78- Add support for the Espressif ESP32 SDK.
79- `boot_serial` changed to use cddl-gen, which removes the dependency
80 on tinycbor.
81- Add various hooks to be able to change how image data is accessed.
82- Cypress supports Mbed TLS for encryption.
83- Support using Mbed TLS for ECDSA. This can be useful if Mbed TLS is
84 brought in for another reason.
85- Add simulator support for testing direct-XIP and ramload.
86- Support Mbed TLS 3.0. Updates the submodule for Mbed TLS to 3.0.
Francesco Servidio582367c2021-10-20 15:36:45 +020087- Enable direct-xip mode in Mbed-OS port.
Francesco Servidio4ff0c182021-10-20 15:27:16 +020088- extract `bootutil_public` library, a common interface for MCUboot
David Brownae355102021-08-27 13:15:16 -060089 and the application.
90- Allow to boot primary image if secondary one is unreachable.
91- Add AES256 image encryption support.
92- Add Multiimage boot for direct-xip and ram-load mode.
David Brown0779f4f2021-08-27 13:15:16 -060093- Cargo files moved to top level, now `cargo test` can be run from the
94 top level directory.
95- Fault injection tests use updated TF-M.
96- Thingy:53 now supports multi-image DFU.
David Brown29099e12021-10-12 09:52:18 -060097- ram load and image encryption can be used together, allowing the
98 entire contents of flash to always remain encrypted.
David Brownae355102021-08-27 13:15:16 -060099
100### Security fixes
101
102- [GHSA-gcxh-546h-phg4](https://github.com/mcu-tools/mcuboot/security/advisories/GHSA-gcxh-546h-phg4)
103 has been published. There is not a fix at this time, but a caution
104 to be sure to follow the instructions carefully, and make sure that
105 the development keys in the repo are never used in a production
106 system.
107
Andrzej Puzdrowski69344632020-10-30 15:36:49 +0100108## Version 1.7.0
109
Francesco Servidio4ff0c182021-10-20 15:27:16 +0200110The 1.7.0 release of MCUboot adds support for the Mbed-OS platform,
Andrzej Puzdrowskie7596612020-11-10 14:54:41 +0100111Equal slots (direct-xip) upgrade mode, RAM loading upgrade mode,
112hardening against hardware level fault injection and timing attacks
113and single image mode.
Andrzej Puzdrowski69344632020-10-30 15:36:49 +0100114There are bug fixes, and associated imgtool updates as well.
115
116### About this release
117
Andrzej Puzdrowskie7596612020-11-10 14:54:41 +0100118- Initial support for the Mbed-OS platform.
Francesco Servidio4ff0c182021-10-20 15:27:16 +0200119- Added possibility to enter deep sleep mode after MCUboot app execution
Andrzej Puzdrowski69344632020-10-30 15:36:49 +0100120 for cypress platform.
121- Added hardening against hardware level fault injection and timing attacks.
122- Introduced Abstract crypto primitives to simplify porting.
123- Added RAM-load upgrade mode.
124- Renamed single-image mode to single-slot mode.
125- Allow larger primary slot in swap-move
126- Fixed boostrapping in swap-move mode.
127- Fixed issue causing that interrupted swap-move operation might brick device
128 if the primary image was padded.
Francesco Servidio4ff0c182021-10-20 15:27:16 +0200129- Abstracting MCUboot crypto functions for cleaner porting
Andrzej Puzdrowski69344632020-10-30 15:36:49 +0100130- Droped flash_area_read_is_empty() porting API.
131- boot/zephyr: Added watchdog feed on nRF devices.
132 See `CONFIG_BOOT_WATCHDOG_FEED` option.
133- boot/zephyr: Added patch for turning off cache for Cortex M7 before
134 chain-loading.
135- boot/zephyr: added option to relocate interrupts to application
136- boot/zephyr: clean ARM core configuration only when selected by user
137- boot/boot_serial: allow nonaligned last image data chunk
138- imgtool: added custom TLV support.
139- imgtool: added possibility to set confirm flag for hex files as well.
140- imgtool: Print image digest during verify.
141
Francesco Servidio5bc98322021-11-03 13:19:22 +0100142### Zephyr-RTOS compatibility
Andrzej Puzdrowskia8e12da2020-11-25 15:59:22 +0100143
David Brownfe0bfcf2021-05-14 10:12:10 -0600144This release of MCUboot works with the Zephyr "main" at the time of the
Andrzej Puzdrowskia8e12da2020-11-25 15:59:22 +0100145release. It was tested as of has 7a3b253ce. This version of MCUboot also
146works with the Zephyr v2.4.0, however it is recommended to enable
147`CONFIG_MCUBOOT_CLEANUP_ARM_CORE` while using that version.
148
David Brown342e8752020-04-15 10:57:28 -0600149## Version 1.6.0
150
151The 1.6.0 release of MCUboot adds support for the PSOC6 platform,
152X25519 encrypted images, rollback protection, hardware keys, and a
153shared boot record to communicate boot attestation information to
154later boot stages. There are bug fixes, and associated imgtool
155updates as well.
156
157### About this release
158
159- Initial support for the Cypress PSOC6 plaformt. This platform
160 builds using the Cypress SDK, which has been added as submodules.
161- CBOR decoding in serial recovery replaced by code generated from a
162 CDDL description.
163- Add support for X25519 encrypted images.
164- Add rollback protection. There is support for a HW rollback counter
165 (which must be provided as part of the platform), as well as a SW
166 solution that protects against some types of rollback.
167- Add an optional boot record in shared memory to communicate boot
168 attributes to later-run code.
169- Add support for hardware keys.
170- Various fixes to work with the latest Zephyr version.
171
172### Security issues addressed
173
174- CVE-2020-7595 "xmlStringLenDecodeEntities in parser.c in libxml2
175 2.9.10 has an infinite loop in a certain end-of-file situation." Fix
176 by updating a dependency in documentation generation.
177
Francesco Servidio5bc98322021-11-03 13:19:22 +0100178### Zephyr-RTOS compatibility
David Brown82c5f7c2020-05-05 15:47:30 -0600179
David Brownfe0bfcf2021-05-14 10:12:10 -0600180This release of MCUboot works the Zephyr "main" at the time of the
David Brown50d24a52020-05-22 10:23:42 -0600181release. It was tested as of has 1a89ca1238. When Zephyr v2.3.0 is
182released, there will be a possible 1.6.1 or similar release of Zephyr
David Brown82c5f7c2020-05-05 15:47:30 -0600183if needed to address any issues. There also may be branch releases of
184MCUboot specifically for the current version of Zephyr, e.g.
185v1.6.0-zephyr-2.2.1.
186
Fabio Utzigef7fbd72020-02-05 12:43:23 -0300187## Version 1.5.0
188
189The 1.5.0 release of MCUboot adds support for encrypted images using
190ECIES with secp256r1 as an Elliptic Curve alternative to RSA-OAEP. A
191new swap method was added which allows for upgrades without using a
192scratch partition. There are also lots of bug fixes, extra simulator
193testing coverage and some imgtool updates.
194
195### About this release
196
197- TLVs were updated to use 16-bit lengths (from previous 8). This
198 should work with no changes for little-endian targets, but will
199 break compatibility with big-endian targets.
200- A benchmark framework was added to Zephyr
Francesco Servidio582367c2021-10-20 15:36:45 +0200201- ed25519 signature validation can now build without using Mbed TLS
Fabio Utzigef7fbd72020-02-05 12:43:23 -0300202 by relying on a bundled tinycrypt based sha-512 implementation.
203- imgtool was updated to correctly detect trailer overruns by image.
204- Encrypted image TLVs can be saved in swap metadata during a swap
205 upgrade instead of the plain AES key.
206- imgtool can dump private keys in C format (getpriv command), which
207 can be added as decryption keys. Optionally can remove superfluous
208 fields from the ASN1 by passing it `--minimal`.
209- Lots of other smaller bugs fixes.
210- Added downgrade prevention feature (available when the overwrite-based
211 image update strategy is used)
212
213### Known issues
214
215- TLV size change breaks compatibility with big-endian targets.
216
David Brown4d0c5fa2019-10-08 09:57:31 -0600217## Version 1.4.0
218
219The 1.4.0 release of MCUboot primarily adds support for multi-image
220booting. With this release, MCUboot can manage two images that can be
221updated independently. With this, it also supports additions to the
222TLV that allow these dependencies to be specified.
223
224Multi-image support adds backward-incompatible changes to the format
225of the images: specifically adding support for protected TLV entries.
226If multiple images and dependencies are not used, the images will be
227compatible with previous releases of MCUboot.
228
229### About this release
230
David Brownd7581772019-10-15 12:00:25 -0600231- Fixed CVE-2019-5477, and CVE-2019-16892. These fix issue with
232 dependencies used in the generation of the documentation on github.
David Brown4d0c5fa2019-10-08 09:57:31 -0600233- Numerous code cleanups and refactorings
234- Documentation updates for multi-image features
235- Update imgtool.py to support the new features
Francesco Servidio582367c2021-10-20 15:36:45 +0200236- Updated the Mbed TLS submodule to current stable version 2.16.3
237- Moved the Mbed TLS submodule from within sim/mcuboot-sys to ext.
David Brownd7581772019-10-15 12:00:25 -0600238 This will make it easier for other board supports to use this code.
239- Added some additional overflow and bound checks to data in the image
240 header, and TLV data.
241- Add a `-x` (or `--hex_addr`) flag to imgtool to set the base address
242 written to a hex-format image. This allows the image to be flashed
243 at an offset, without having to use additional tools to modify the
244 image.
David Brown4d0c5fa2019-10-08 09:57:31 -0600245
Szymon Janc7fea8462019-07-04 14:45:52 +0200246## Version 1.3.1
247
248The 1.3.1 release of MCUboot consists mostly of small bug fixes and updates.
249There are no breaking changes in functionality. This release should work with
David Brownfe0bfcf2021-05-14 10:12:10 -0600250Mynewt 1.6.0 and up, and any Zephyr `main` after sha
Szymon Janc7fea8462019-07-04 14:45:52 +0200251f51e3c296040f73bca0e8fe1051d5ee63ce18e0d.
252
253### About this release
254
255- Fixed a revert interruption bug
256- Added ed25519 signing support
257- Added RSA-3072 signing support
258- Allow ec256 to run on CC310 interface
259- Some preparation work was done to allow for multi image support, which
260 should land in 1.4.0. This includes a simulator update for testing
261 multi-images, and a new name for slot0/slot1 which are now called
262 "primary slot" and "secondary slot".
263- Other minor bugfixes and improvements
264
David Brownb1d15a72019-01-22 16:22:08 -0700265## Version 1.3.0
266
267The 1.3.0 release of MCUboot brings in many fixes and updates. There
268are no breaking changes in functionality. Many of the changes are
269refactorings that will make the code easier to maintain going forward.
270In addition, support has been added for encrypted images. See [the
271docs](encrypted_images.md) for more information.
272
273### About this release
274
275- Modernize the Zephyr build scripts.
276- Add a `ptest` utility to help run the simulator in different
277 configurations.
278- Migrate the simulator to Rust 2018 edition. The sim now requires at
279 least Rust 1.32 to build.
280- Simulator cleanups. The simulator code is now built the same way
281 for every configuration, and queries the MCUboot code for how it was
282 compiled.
283- Abstract logging in MCUboot. This was needed to support the new
284 logging system used in Zephyr.
285- Add multiple flash support. Allows slot1/scratch to be stored in an
286 external flash device.
287- Add support for [encrypted images](encrypted_images.md).
288- Add support for flash devices that read as '0' when erased.
289- Add support to Zephyr for the `nrf52840_pca10059`. This board
290 supports serial recovery over USB with CDC ACM.
291- imgtool is now also available as a python package on pypi.org.
292- Add an option to erase flash pages progressively during recovery to
293 avoid possible timeouts (required especially by serial recovery
294 using USB with CDC ACM).
295- imgtool: big-endian support
296- imgtool: saves in intel-hex format when output filename has `.hex`
297 extension; otherwise saves in binary format.
298
Fabio Utzig3c939012018-06-25 13:26:32 -0300299## Version 1.2.0
300
301The 1.2.0 release of MCUboot brings a lot of fixes/updates, where much of the
302changes were on the boot serial functionality and imgtool utility. There are
Francesco Servidio4ff0c182021-10-20 15:27:16 +0200303no breaking changes in MCUboot functionality, but some of the CLI parameters
Fabio Utzig3c939012018-06-25 13:26:32 -0300304in imgtool were changed (either removed or added or updated).
305
306### About this release
307
308- imgtool accepts .hex formatted input
309- Logging system is now configurable
310- Most Zephyr configuration has been switched to Kconfig
311- Build system accepts .pem files in build system to autogenerate required
312 key arrays used internally
313- Zephyr build switched to using built-in flash_map and TinyCBOR modules
314- Serial boot has substantially decreased in space usage after refactorings
315- Serial boot build doesn't require newlib-c anymore on Zephyr
316- imgtool updates:
317 + "create" subcommand can be used as an alias for "sign"
318 + To allow imgtool to always perform the check that firmware does not
319 overflow the status area, `--slot-size` was added and `--pad` was updated
320 to act as a flag parameter.
321 + `--overwrite-only` can be passed if not using swap upgrades
322 + `--max-sectors` can be used to adjust the maximum amount of sectors that
323 a swap can handle; this value must also be configured for the bootloader
324 + `--pad-header` substitutes `--included-header` with reverted semantics,
325 so it's not required for firmware built by Zephyr build system
326
327### Known issues
328
329None
330
Fabio Utzig49045cc2018-01-09 15:56:29 -0200331## Version 1.1.0
332
Carles Cufi90eda802018-01-29 18:33:20 +0100333The 1.1.0 release of MCUboot brings a lot of fixes/updates to its
Fabio Utzig49045cc2018-01-09 15:56:29 -0200334inner workings, specially to its testing infrastructure which now
335enables a more thorough quality assurance of many of the available
336options. As expected of the 1.x.x release cycle, no breaking changes
337were made. From the tooling perpective the main addition is
338newt/imgtool support for password protected keys.
339
340### About this release
341
342- serial recovery functionality support under Zephyr
343- simulator: lots of refactors were applied, which result in the
344 simulator now leveraging the Rust testing infrastructure; testing
345 of ecdsa (secp256r1) was added
346- imgtool: removed PKCS1.5 support, added support for password
347 protected keys
Francesco Servidio582367c2021-10-20 15:36:45 +0200348- tinycrypt 0.2.8 and the Mbed TLS ASN1 parser are now bundled with
Francesco Servidio4ff0c182021-10-20 15:27:16 +0200349 MCUboot (eg secp256r1 is now free of external dependencies!)
Fabio Utzig49045cc2018-01-09 15:56:29 -0200350- Overwrite-only mode was updated to erase/copy only sectors that
351 actually store firmware
352- A lot of small code and documentation fixes and updates.
353
354### Known issues
355
356None
357
David Brown37f8afd2017-09-12 10:59:39 -0600358## Version 1.0.0
359
Carles Cufi90eda802018-01-29 18:33:20 +0100360The 1.0.0 release of MCUboot introduces a format change. It is
David Brown37f8afd2017-09-12 10:59:39 -0600361important to either use the `imgtool.py` also from this release, or
362pass the `-2` to recent versions of the `newt` tool in order to
363generate image headers with the new format. There should be no
364incompatible format changes throughout the 1.x.y release series.
365
366### About this release
367
368- Header format change. This change was made to move all of the
369 information about signatures out of the header and into the TLV
370 block appended to the image. This allows
371 - The signature to be replaced without changing the image.
372 - Multiple signatures to be applied. This can be used, for example,
373 to sign an image with two algorithms, to support different
374 bootloader configurations based on these image.
375 - The public key is referred to by its SHA1 hash (or a prefix of the
376 hash), instead of an index that has to be maintained with the
377 bootloader.
378 - Allow new types of signatures in the future.
379- Support for PKCS#1 v1.5 signatures has been dropped. All RSA
380 signatures should be made with PSS. The tools have been changed to
381 reflect this.
382- The source for Tinycrypt has been placed in the MCUboot tree. A
383 recent version of Tinycrypt introduced breaking API changes. To
384 allow MCUboot to work across various platforms, we stop using the
385 Tinycrypt bundled with the OS platform, and use our own version. A
386 future release of MCUboot will update the Tinycrypt version.
387- Support for some new targets:
388 - Nordic nRF51 and nRF52832 dev kits
389 - Hexiwear K64
390- Clearer sample applications have been added under `samples`.
Fabio Utzig4dce6aa2018-02-12 15:31:32 -0200391- Test plans for [zephyr](testplan-zephyr.md), and
392 [mynewt](testplan-mynewt.md).
David Brown37f8afd2017-09-12 10:59:39 -0600393- The simulator is now able to test RSA signatures.
394- There is an unimplemented `load_addr` header for future support for
395 RAM loading in the bootloader.
396- Numerous documentation.
397
398### Known issues
399
400None
401
402## Version 0.9.0
403
Carles Cufi90eda802018-01-29 18:33:20 +0100404This is the first release of MCUboot, a secure bootloader for 32-bit MCUs.
David Brown37f8afd2017-09-12 10:59:39 -0600405It is designed to be operating system-agnostic and works over any transport -
406wired or wireless. It is also hardware independent, and relies on hardware
407porting layers from the operating system it works with. For the first release,
408we have support for three open source operating systems: Apache Mynewt, Zephyr
409and RIOT.
410
411### About this release
412
413- This release supports building with and running Apache Mynewt and Zephyr
414 targets.
415- RIOT is supported as a running target.
416- Image integrity is provided with SHA256.
417- Image originator authenticity is provided supporting the following
418 signature algorithms:
419 - RSA 2048 and RSA PKCS#1 v1.5 or v2.1
420 - Elliptic curve DSA with secp224r1 and secp256r1
421- Two firmware upgrade algorithms are provided:
422 - An overwrite only which upgrades slot 0 with the image in slot 1.
423 - A swapping upgrade which enables image test, allowing for rollback to a
424 previous known good image.
Francesco Servidio582367c2021-10-20 15:36:45 +0200425- Supports both Mbed TLS and tinycrypt as backend crypto libraries. One of them
David Brown37f8afd2017-09-12 10:59:39 -0600426 must be defined and the chosen signing algorithm will require a particular
427 library according to this list:
Francesco Servidio582367c2021-10-20 15:36:45 +0200428 - RSA 2048 needs Mbed TLS
429 - ECDSA secp224r1 needs Mbed TLS
430 - ECDSA secp256r1 needs tinycrypt as well as the ASN.1 code from Mbed TLS
David Brown37f8afd2017-09-12 10:59:39 -0600431 (so still needs that present).
432
433### Known issues
434
435- The image header and TLV formats are planned to change with release 1.0:
436 https://runtimeco.atlassian.net/browse/MCUB-66