1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152 |
- mbed TLS ChangeLog (Sorted per branch, date)
- = mbed TLS 2.4.2 branch released 2017-03-08
- Security
- using RSA through the PK module in 64-bit systems. The issue was caused by
- some data loss when casting a size_t to an unsigned int value in the
- functions rsa_verify_wrap(), rsa_sign_wrap(), rsa_alt_sign_wrap() and
- mbedtls_pk_sign(). Found by Jean-Philippe Aumasson.
- mbedtls_x509_crl_parse(). A string containing a CRL followed by trailing
- characters after the footer could result in the execution of an infinite
- loop. The issue can be triggered remotely. Found by Greg Zaverucha,
- Microsoft.
- CertificateVerify messages, to prevent SLOTH attacks against TLS 1.2.
- Introduced by interoperability fix for #513.
- when verifying the validity of a key on secp224k1. This could be
- triggered remotely for example with a maliciously constructed certificate
- and potentially could lead to remote code execution on some platforms.
- Reported independently by rongsaws and Aleksandar Nikolic, Cisco Talos
- team. #569 CVE-2017-2784
- Bugfix
- traversing a chain of trusted CA. The issue would cause both flags,
- MBEDTLS_X509_BADCERT_NOT_TRUSTED and MBEDTLS_X509_BADCERT_EXPIRED, to be
- set when the verification conditions are not met regardless of the cause.
- Found by Harm Verhagen and inestlerode. #665 #561
- mbedtls_ssl_set_bio_timeout in compat-1.3.h, by removing it.
- Found by omlib-lin. #673
- x509_csr.c that are reported when building mbed TLS with a config.h that
- does not define MBEDTLS_PEM_PARSE_C. Found by omnium21. #562
- would compare 64 bits of the record counter instead of 48 bits as indicated
- in RFC 6347 Section 4.3.1. This could cause the execution of the
- renegotiation routines at unexpected times when the protocol is DTLS. Found
- by wariua. #687
- the input string in PEM format to extract the different components. Found
- by Eyal Itkin.
- cause buffer bound checks to be bypassed. Found by Eyal Itkin.
- cause buffer bound checks to be bypassed. Found by Eyal Itkin.
- cause buffer bound checks to be bypassed. Found by Eyal Itkin.
- cause buffer bound checks to be bypassed. Found by Eyal Itkin.
- Li/Yueh-Hsun Lin, KNOX Security, Samsung Research America.
- by missing calls to mbedtls_pem_free() in cases when a
- MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT error was encountered. Found and
- fix proposed by Guido Vranken. #722
- Studio 2015 as well as the files themselves, to remove a build warning
- generated in Visual Studio 2015. Reported by Steve Valliere. #742
- Raised and fix suggested by Alan Gillingham in the mbed TLS forum. #771
- number to write in hexadecimal is negative and requires an odd number of
- digits. Found and fixed by Guido Vranken.
- by inestlerode. #555
- = mbed TLS 2.4.1 branch released 2016-12-13
- Changes
- Recommendation for Block Cipher Modes of Operation: The CMAC Mode for
- Authentication – October 2016
- = mbed TLS 2.4.0 branch released 2016-10-17
- Security
- with RFC-5116 and could lead to session key recovery in very long TLS
- sessions. "Nonce-Disrespecting Adversaries Practical Forgery Attacks on GCM in
- TLS" - H. Bock, A. Zauner, S. Devlin, J. Somorovsky, P. Jovanovic.
- https:
- mbedtls_x509write_csr_der() when the signature is copied to the buffer
- without checking whether there is enough space in the destination. The
- issue cannot be triggered remotely. Found by Jethro Beekman.
- Features
- NIST SP 800-38B, RFC-4493 and RFC-4615.
- is functioning correctly.
- scripts, which is also now called by all.sh.
- configure the maximum length of a file path that can be buffered when
- calling mbedtls_x509_crt_parse_path().
- library features that do not require an entropy source.
- to configure the minimum number of bytes for entropy sources using the
- mbedtls_hardware_poll() function.
- Bugfix
- may need time but not the standard C library abstraction, and added
- configuration consistency checks to check_config.h
- when GCM is used. Found by udf2457. #441
- enabled unless others were also present. Found by David Fernandez. #428
- a contribution from Tobias Tangemann. #541
- certificates are provided.
- mbedtls_asn1_get_int(). Found and fixed by Guido Vranken. #599
- and double frees. Found by Niklas Amnebratt.
- builds where the configuration MBEDTLS_PEM_WRITE_C is not defined. Found
- by inestlerode. #559.
- data structure until after error checks are successful. Found by
- subramanyam-c. #622
- mbedtls_gcm_finish(). Found by cmiatpaar. #602
- ssl_parse_hello_verify_request() for DTLS. Found by Guido Vranken.
- Found by subramanyam-c. #626
- where the limited hash choices prevented the client from sending its
- certificate. Found by teumas. #513
- Changes
- missing self-tests to the test suites, to ensure self-tests are only
- executed once.
- through the symbol YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE.
- features. Contributed by Aviv Palivoda.
- naming collision in projects which also have files with the common name
- net.c. For consistency, the corresponding header file, net.h, is marked as
- deprecated, and its contents moved to net_sockets.h.
- longer disregard certificates with unrecognised fields.
- = mbed TLS 2.3.0 branch released 2016-06-28
- Security
- required by PKCS1 v2.2
- mbedtls_rsa_rsaes_pkcs1_v15_encrypt and mbedtls_rsa_rsaes_oaep_encrypt
- (not triggerable remotely in (D)TLS).
- mbedtls_rsa_rsaes_oaep_decrypt. It is not triggerable remotely in
- SSL/TLS.
- Features
- function.
- Bugfix
- arguments where the same (in-place doubling). Found and fixed by Janos
- Follath. #309
- in the previous patch release. Found by Robert Scheck. #390 #391
- ECDSA was disabled in config.h . The leak didn't occur by default.
- expired or not yet valid certificate was parsed before a valid certificate
- in the trusted certificate list.
- buffer after DER certificates to be included in the raw representation.
- dereference possible.
- mbedtls_ssl_conf_curves. #373
- Changes
- don't use the optimized assembly for bignum multiplication. This removes
- the need to pass -fomit-frame-pointer to avoid a build error with -O0.
- Skalozub).
- ignored, as required by RFC6101.
- = mbed TLS 2.2.1 released 2016-01-05
- Security
- allocate memory. Only used for certificate generation, not triggerable
- remotely in SSL/TLS. Found by Rafał Przywara. #367
- SLOTH attack on TLS 1.2 server authentication (other attacks from the
- SLOTH paper do not apply to any version of mbed TLS or PolarSSL).
- https:
- Bugfix
- when the first intermediate certificate has pathLenConstraint=0. Found by
- Nicholas Wilson. Introduced in mbed TLS 2.2.0. #280
- JayaraghavendranK. #372
- with some peers over unreliable links. Avoid dropping an entire DTLS
- datagram if a single record in a datagram is unexpected, instead only
- drop the record and look at subsequent records (if any are present) in
- the same datagram. Found by jeannotlapin. #345
- = mbed TLS 2.2.0 released 2015-11-04
- Security
- once and some allocation fails. Cannot be forced remotely. Found by Guido
- Vranken, Intelworks.
- mbedtls_x509_crt_parse_path() is passed a path longer than 2GB. Cannot be
- triggered remotely. Found by Guido Vranken, Intelworks.
- Cannot be triggered remotely unless you create X.509 certificates based
- on untrusted input or write keys of untrusted origin. Found by Guido
- Vranken, Intelworks.
- certificates. Found by Nicholas Wilson, fix and tests provided by
- Janos Follath. #280 and #319
- Features
- Disabled by default as the specification might still change.
- block. (Potential uses include EAP-TLS and Thread.)
- Bugfix
- resulting in some valid X.509 being incorrectly rejected. Found and fix
- provided by Janos Follath. #319
- exchange. Found and fix provided by Chris Hammond. #270
- ECHD-ECDSA if the only key exchange. Multiple reports. #310
- not being properly ignored. Found by mancha and Kasom Koht-arsa, #308
- size/curve against the profile. Before that, there was no way to set a
- minimum key size for end-entity certificates with RSA keys. Found by
- Matthew Page of Scannex Electronics Ltd.
- Found by Kurt Danielson. #292
- certificates to be rejected by some applications, including OS X
- Keychain. Found and fixed by Jonathan Leroy, Inikup.
- Changes
- or -1.
- = mbed TLS 2.1.2 released 2015-10-06
- Security
- overflow of the hostname or session ticket. Found by Guido Vranken,
- Intelworks.
- once in the same handhake and mbedtls_ssl_conf_psk() was used.
- Found and patch provided by Guido Vranken, Intelworks. Cannot be forced
- remotely.
- mbedtls_pk_parse_key(file)() when the password is > 129 bytes.
- Found by Guido Vranken, Intelworks. Not triggerable remotely.
- Found by Guido Vranken, Intelworks. Not exploitable remotely in the context
- of TLS, but might be in other uses. On 32 bit machines, requires reading a
- string of close to or larger than 1GB to exploit; on 64 bit machines, would
- require reading a string of close to or larger than 2^62 bytes.
- on crafted PEM input data. Found and fix provided by Guido Vranken,
- Intelworks. Not triggerable remotely in TLS. Triggerable remotely if you
- accept PEM data from an untrusted source.
- buffer is 512MB or larger on 32-bit platforms. Found by Guido Vranken,
- Intelworks. Not trigerrable remotely in TLS.
- the same mbedtls_ssl_config object and memory allocation fails. Found by
- Guido Vranken, Intelworks. Cannot be forced remotely.
- authentication against a crafted CA cert. Cannot be triggered remotely
- unless you allow third parties to pick trust CAs for client auth.
- Found by Guido Vranken, Intelworks.
- Bugfix
- zhasha (#278).
- Changes
- domain names are compliant with RFC 1035.
- (#291)
- = mbed TLS 2.1.1 released 2015-09-17
- Security
- signatures. (Found by Florian Weimer, Red Hat.)
- https:
- tries to continue the handshake after it failed (a misuse of the API).
- (Found and patch provided by Fabian Foerg, Gotham Digital Science using
- afl-fuzz.)
- Bugfix
- caused some handshakes to fail.
- Changes
- use of mbedtls_x509_crt_profile_next. (found by NWilson)
- connection, if cookie verification is available
- (MBEDTLS_SSL_DTLS_HELLO_VERIFY defined in config.h, and usable cookie
- callbacks set with mbedtls_ssl_conf_dtls_cookies()), this will be
- detected and mbedtls_ssl_read() will return
- MBEDTLS_ERR_SSL_CLIENT_RECONNECT - it is then possible to start a new
- handshake with the same context. (See RFC 6347 section 4.2.8.)
- = mbed TLS 2.1.0 released 2015-09-04
- Features
- Bugfix
- Leisink).
- Sears).
- (found by Benoit Lecocq).
- installed (found by Rawi666).
- (found by robotanarchy) (#232).
- tests (found by robotanarchy) (#232).
- with make.
- be always used (found by dcb314) (#235)
- result trying to unlock an unlocked mutex on invalid input (found by
- Fredrik Axelsson) (#257)
- SSL_MAX_CONTENT_LEN or higher - not triggerrable remotely (found by
- Aleksandrs Saveljevs) (#238)
- MBEDTLS_SHAxxx_ALT (found by Henrik) (#239)
- Changes
- end of the default config.h by defining MBEDTLS_USER_CONFIG_FILE on the
- compiler's command line.
- trusted, no later cert is checked. (suggested by hannes-landeholm)
- (#220).
- Hugo Leisink) (#210).
- length.
- = mbed TLS 2.0.0 released 2015-07-13
- Features
- with custom implementation (eg hardware accelerated), complementing the
- ability to override the whole module.
- preserve forward secrecy, and allows sharing across multiple contexts.
- which algorithms and key sizes (curves for ECDSA) are acceptable.
- mbedtls_ssl_conf_dhm_min_bitlen() and mbedtls_ssl_conf_sig_hashes().
- parameters.
- API Changes
- You now need to link to all of them if you use TLS for example.
- Some names have been further changed to make them more consistent.
- Migration helpers scripts/rename.pl and include/mbedlts/compat-1.3.h are
- provided. Full list of renamings in scripts/data_files/rename-1.3-2.0.txt
- mbedtls_cipher_info_t.key_length -> key_bitlen
- mbedtls_cipher_context_t.key_length -> key_bitlen
- mbedtls_ecp_curve_info.size -> bit_size
- been split into an _init() that returns void and another function that
- should generally be the first function called on this context after init:
- mbedtls_ssl_init() -> mbedtls_ssl_setup()
- mbedtls_ccm_init() -> mbedtls_ccm_setkey()
- mbedtls_gcm_init() -> mbedtls_gcm_setkey()
- mbedtls_hmac_drbg_init() -> mbedtls_hmac_drbg_seed(_buf)()
- mbedtls_ctr_drbg_init() -> mbedtls_ctr_drbg_seed()
- Note that for mbedtls_ssl_setup(), you need to be done setting up the
- ssl_config structure before calling it.
- ssl_set_session() and ssl_set_client_transport_id(), plus
- ssl_legacy_renegotiation()) have been renamed to mbedtls_ssl_conf_xxx()
- (see rename.pl and compat-1.3.h above) and their first argument's type
- changed from ssl_context to ssl_config.
- additional callback for read-with-timeout).
- implementations (SNI, PSK) instead of their *conf counterparts:
- mbedtls_ssl_set_hs_own_cert()
- mbedtls_ssl_set_hs_ca_chain()
- mbedtls_ssl_set_hs_psk()
- using mbedtls_ssl_set_hostname().
- pointer, parameters reordered).
- place of mbedtls_ssl_conf_session_tickets() to enable session tickets.
- mbedtls_ssl_get_verify_result()
- mbedtls_x509_ctr_verify_info()
- mbedtls_x509_crt_verify() (flags, f_vrfy -> needs to be updated)
- mbedtls_ssl_conf_verify() (f_vrfy -> needs to be updated)
- parameter:
- mbedtls_base64_encode()
- mbedtls_base64_decode()
- mbedtls_mpi_write_string()
- mbedtls_dhm_calc_secret()
- changed type to "mbedtls_net_context *".
- return void.
- ecdsa_write_signature_det() was deprecated.
- mbedtls_x509write_crt_set_key_usage() changed from int to unsigned.
- available if POLARSSL_PEM_PARSE_C is defined (it never worked without).
- strings; use the new *_len variables instead of strlen().
- mbedtls_pk_parse_public_key() and mbedtls_dhm_parse_dhm() now expect the
- length parameter to include the terminating null byte for PEM input.
- layer and the memory_buffer_alloc module changed accordingly.
- (Thanks to Mansour Moufid for helping with the replacement.)
- (support for renegotiation now needs explicit enabling in config.h).
- in config.h
- between TCP and UDP, using the macros NET_PROTO_TCP or NET_PROTO_UDP.
- Their 'port' argument type is changed to a string.
- Removals
- mbedtls_ecp_muladd().
- (use generic functions from md.h)
- waiting function.
- been removed (compiler is required to support 32-bit operations).
- New deprecations
- argument (allowing memory savings if HMAC is not used)
- Semi-API changes (technically public, morally private)
- not supposed to be included by users.
- Default behavior changes
- default ciphersuite list returned by ssl_list_ciphersuites()
- compile time.
- enabled in the default configuration, this is only noticeable if using a
- custom config.h
- chain verification.
- mbedtls_cipher_info_from_string()
- mbedtls_ecp_curve_info_from_name()
- mbedtls_md_info_from_string()
- mbedtls_ssl_ciphersuite_from_string()
- mbedtls_version_check_feature()
- Requirement changes
- API changes from the 1.4 preview branch
- new prototype, and mbedtls_ssl_set_read_timeout().
- mbedtls_ssl_conf_transport()
- mbedtls_ssl_conf_max_version()
- mbedtls_ssl_conf_min_version()
- instead, see mbedtls_ssl_set_timer_cb(), with the Timing module providing
- an example implementation, see mbedtls_timing_delay_context and
- mbedtls_timing_set/get_delay().
- after a successful net_accept().
- Changes
- thread-safe if MBEDTLS_THREADING_C is enabled.
- more (at the expense of performance) MBEDTLS_SHA256_SMALLER.
- = mbed TLS 1.3 branch
- Security
- extendedKeyUsage on the leaf certificate was lost (results not accessible
- via ssl_get_verify_results()).
- https:
- Features
- (contributed by Peter Dettman).
- (contributed by Daniel Kahn Gillmor).
- the platform layer.
- layer (helps get rid of unwanted references).
- cross-compilation easier (thanks to Alon Bar-Lev).
- if POLARSSL_MEMORY_BUFFER_ALLOC_C and POLARSSL_MEMORY_DEBUG are defined.
- speed and RAM (heap only for now) usage.
- reduced configurations (PSK-CCM and NSA suite B).
- warnings on use of deprecated functions (with GCC and Clang only).
- errors on use of deprecated functions.
- Bugfix
- entropy_free() to crash (thanks to Rafał Przywara).
- once on the same context.
- by Bruno Pape).
- (detected by Clang's 3.6 UBSan).
- initialized but not set (found by pravic).
- doing it at runtime (using uname) rather that compile time.
- ssl_write() is called before the handshake is finished (introduced in
- 1.3.10) (first reported by Martin Blumenstingl).
- rejected.
- versions of mingw64 (found by kxjhlele).
- platforms.
- POLARSSL_SSL_SSESSION_TICKETS where both enabled in config.h (introduced
- in 1.3.10).
- Gergely Budai).
- curve picked by the server was actually allowed.
- Changes
- Junod).
- more flexible (warning: OFLAGS is not used any more) (see the README)
- (contributed by Alon Bar-Lev).
- performance impact was bad for some users (this was introduced in 1.3.10).
- (suggested by Thorsten Mühlfelder).
- "minimize" others (eg use stddef.h if only size_t is needed).
- brackets for uniformity with the rest of the code.
- = mbed TLS 1.3.10 released 2015-02-09
- Security
- full and polarssl_free() is called (found by Mark Hasemeyer)
- (only possible if POLARSSL_MEMORY_BUFFER_ALLOC_C is enabled, which it is
- not by default).
- crafted X.509 certificate (TLS server is not affected if it doesn't ask for a
- client certificate) (found using Codenomicon Defensics).
- (TLS server is not affected if it doesn't ask for a client certificate)
- (found using Codenomicon Defensics).
- (TLS server is not affected if it doesn't ask for a client certificate)
- (found using Codenomicon Defensics).
- Bleichenbacher-style attack in the RSA and RSA-PSK key exchanges
- (reported by Sebastian Schinzel).
- Features
- length of an X.509 verification chain.
- for pre-1.2 clients when multiple certificates are available.
- a compatible enough libc (eg uClibc).
- while using the default ciphersuite list.
- ciphersuite/certificate.
- Bugfix
- add_len (found by Jean-Philippe Aumasson) (not triggerable remotely).
- if memory_buffer_alloc_init() was called with buf not aligned and len not
- a multiple of POLARSSL_MEMORY_ALIGN_MULTIPLE (not triggerable remotely).
- by Julian Ospald).
- multiple of 8 (found by Gergely Budai).
- Peter Vaskovic).
- to a failed verification (found by Fredrik Axelsson).
- key exchanges enabled needs certificates. This fixes a possible interop
- issue with some servers when a zero-length extension was sent. (Reported
- by Peter Dettman.)
- (found by Hendrik van den Boogaard).
- Changes
- switch back to random with POLARSSL_SSL_AEAD_RANDOM_IV in config.h).
- but none of them is usable due to external factors such as no certificate
- with a suitable (extended)KeyUsage or curve or no PSK set.
- at runtime with ssl_set_truncated_hmac().
- = PolarSSL 1.3.9 released 2014-10-20
- Security
- TLS 1.2 (found by Darren Bane) (introduced in 1.3.8).
- (server is not affected if it doesn't ask for a client certificate)
- (found using Codenomicon Defensics).
- (not affected if ECC support was compiled out) (found using Codenomicon
- Defensics).
- Bugfix
- are defined but not POLARSSL_HAVE_TIME (found by Stephane Di Vito).
- renegotation was pending, and on client when a HelloRequest was received.
- write callback returned WANT_WRITE when requesting renegotiation.
- with non-blocking I/O.
- Vialletelle).
- Changes
- standard defining how to use SHA-2 with SSL 3.0).
- ambiguous on how to encode some packets with SSL 3.0).
- RSA is disabled, larger if POLARSSL_MPI_MAX_SIZE is larger.
- POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE on harmless alerts.
- RSA keys.
- RelativeDistinguishedName are not accepted any more.
- = PolarSSL 1.3.8 released 2014-07-11
- Security
- It was possible to crash the server (and client) using crafted messages
- when a GCM suite was chosen.
- Features
- modules (certificates, CRLs and CSRs).
- from the default list (inactive by default).
- (ssl_set_renegotiation_enforced())
- ciphersuites to use and save some memory if the list is small.
- Changes
- required on some platforms (e.g. OpenBSD)
- against unwanted compiler optimizations
- strongest offered by client.
- usage pattern
- Bugfix
- size (found by TrustInSoft)
- Heinecke)
- use with some ciphersuites and versions (RC4 in all versions, CBC with
- versions < TLS 1.1).
- rejected with CBC-based ciphersuites and TLS >= 1.1
- to 32 bytes with CBC-based ciphersuites and TLS >= 1.1
- been removed in 1.3.6.)
- CA for use as an end entity certificate. (This had been removed in
- 1.3.6.)
- interpret semicolons as comment delimiters (found by Barry K. Nathan).
- caused some handshakes to fail.
- exchange that caused some handshakes to fail with other implementations.
- (Failure rate <= 1/255 with common DHM moduli.)
- tight buffers)
- by Hui Dong)
- = PolarSSL 1.3.7 released on 2014-05-02
- Features
- run-time
- Changes
- checked and filled in the relevant module headers
- Bugfix
- (found by Matthew Page)
- Karger)
- ciphersuites, for full SSL frames of data.
- ServerHello when no extensions are present (found by Matthew Page)
- big-endian platform when size was not an integer number of limbs
- (found by Barry K. Nathan)
- = PolarSSL 1.3.6 released on 2014-04-11
- Features
- certificates (POLARSSL_X509_CHECK_KEY_USAGE)
- (POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE)
- Changes
- but shorter than the supplied length.
- Security
- (Found by Watson Ladd.)
- This affects certificates in the user-supplied chain except the top
- certificate. If the user-supplied chain contains only one certificates,
- it is not affected (ie, its notAfter date is properly checked).
- TrustInSoft)
- Bugfix
- calculation of RR.
- Gergely Budai).
- (found by Gergely Budai)
- Shuo Chen).
- error if the output buffer was just 1 byte too small.
- indication (found by Thijs Alkemade)
- stored in RAM due to missing 'const's (found by Gergely Budai).
- = PolarSSL 1.3.5 released on 2014-03-26
- Features
- (POLARSSL_ENTROPY_FORCE_SHA256)
- interoperability against OpenSSL and PolarSSL
- Changes
- now thread-safe if POLARSSL_THREADING_C defined
- that prevented bignum.c from compiling. (Reported by Rafael Baptista.)
- testing against GnuTLS
- Security
- "triple handshake" attack when authentication mode is 'optional' (the
- attack was already impossible when authentication is required).
- TrustInSoft)
- Bugfix
- statistics
- Alex Wilson.)
- send() would return an EAGAIN error when sending the ticket.
- client certificate.
- containing a client certificate
- out_ctr failed
- of one of them failed
- = PolarSSL 1.3.4 released on 2014-01-27
- Features
- Bugfix
- Sauerbeck)
- Security
- TrustInSoft)
- = PolarSSL 1.3.3 released on 2013-12-31
- Features
- (POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE)
- Changes
- Bugfix
- TrustInSoft)
- ssl_write_certificate() (found by TrustInSoft)
- Security
- TrustInSoft)
- = PolarSSL 1.3.2 released on 2013-11-04
- Features
- Changes
- Bugfix
- = PolarSSL 1.3.1 released on 2013-10-15
- Features
- Changes
- Bugfix
- = PolarSSL 1.3.0 released on 2013-10-01
- Features
- (ECDHE-based ciphersuites)
- (ECDSA-based ciphersuites)
- (ISO/IEC 7816-4) padding and zero padding in the cipher layer
- ns_cert_type)
- issuer_key_identifier, etc)
- the same host (Not to be confused with SNI!)
- Changes
- individually
- Cipher and MD information
- dynamically set (Better support for hardware acceleration)
- prototypes for the RSA sign and verify functions changed as a result
- and maximum protocol version
- (Ability to keep old as well with POLARSSL_ERROR_STRERROR_BC)
- (POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3)
- Bugfix
- Security
- (found by Cyril Arnaud and Pierre-Alain Fouque)
- = Version 1.2.14 released 2015-05-??
- Security
- crash it remotely (found by Caj Larsson).
- client to crash the server remotely if client authentication is enabled
- (found using Codenomicon Defensics).
- https:
- Bugfix
- versions of mingw64 (found by kxjhlele).
- platforms (found with Coverity Scan).
- = Version 1.2.13 released 2015-02-16
- Note: Although PolarSSL has been renamed to mbed TLS, no changes reflecting
- this will be made in the 1.2 branch at this point.
- Security
- crafted X.509 certificate (TLS server is not affected if it doesn't ask
- for a client certificate) (found using Codenomicon Defensics).
- (TLS server is not affected if it doesn't ask for a client certificate)
- (found using Codenomicon Defensics).
- (TLS server is not affected if it doesn't ask for a client certificate)
- found using Codenomicon Defensics).
- (TLS server is not affected if it doesn't ask for a client certificate).
- Bugfix
- add_len (found by Jean-Philippe Aumasson) (not triggerable remotely).
- in 1.2.12).
- Peter Vaskovic).
- to a failed verification (found by Fredrik Axelsson).
- key exchanges enabled needs certificates. This fixes a possible interop
- issue with some servers when a zero-length extension was sent. (Reported
- by Peter Dettman.)
- (found by Hendrik van den Boogaard).
- Changes
- length of an X.509 verification chain (default = 8).
- = Version 1.2.12 released 2014-10-24
- Security
- (server is not affected if it doesn't ask for a client certificate).
- (Found using Codenomicon Defensics.)
- Bugfix
- Vialletelle).
- with non-blocking I/O.
- renegotation was pending, and on client when a HelloRequest was received.
- Changes
- RelativeDistinguishedName are not accepted any more.
- POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE on harmless alerts.
- = Version 1.2.11 released 2014-07-11
- Features
- Changes
- that prevented bignum.c from compiling. (Reported by Rafael Baptista.)
- against unwanted compiler optimizations
- Security
- "triple handshake" attack when authentication mode is optional (the
- attack was already impossible when authentication is required).
- TrustInSoft)
- It was possible to crash the server (and client) using crafted messages
- when a GCM suite was chosen.
- Bugfix
- TrustInSoft)
- ssl_write_certificate() (found by TrustInSoft)
- Alex Wilson.)
- out_ctr failed
- of one of them failed
- calculation of RR.
- when no extensions are present (found by Matthew Page)
- big-endian platform when size was not an integer number of limbs
- size (found by TrustInSoft)
- interpret semicolons as comment delimiters (found by Barry K. Nathan).
- tight buffers)
- = Version 1.2.10 released 2013-10-07
- Changes
- Bugfix
- = Version 1.2.9 released 2013-10-01
- Changes
- Bugfix
- Security
- (found by Cyril Arnaud and Pierre-Alain Fouque)
- = Version 1.2.8 released 2013-06-19
- Features
- settings without editing header files by using POLARSSL_CONFIG_OPTIONS
- Changes
- and specific DER parser functions for the PKCS#1 and unencrypted
- PKCS#8 private key formats
- symmetric cipher and hash algorithms (e.g. POLARSSL_AES_ALT in
- config.h)
- old PBKDF2 module
- Bugfix
- supports secure renegotiation
- instead of the x509parse_crt() wrapper that can also parse PEM
- certificates
- Security
- PEM-encoded certificates has been fixed (found by Jack Lloyd)
- = Version 1.2.7 released 2013-04-13
- Features
- Changes
- Bugfix
- = Version 1.2.6 released 2013-03-11
- Bugfix
- 128-bits (found by Yawning Angel)
- Changes
- rsa_pkcs1_sign() and rsa_pkcs1_verify() to separate PKCS#1 v1.5 and
- PKCS#1 v2.1 functions
- or rsa_rsaes_oaep_decrypt()
- POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is set
- information (not the entire chain)
- Security
- ssl_decrypt_buf()
- rsa_rsaes_pkcs1_v15_decrypt() and rsa_pkcs1_decrypt() for PKCS#1 v1.5
- operations
- = Version 1.2.5 released 2013-02-02
- Changes
- disabled by default and can be enabled with POLARSSL_SSL_DEBUG_ALL
- interoperability can be switched on/off with the flag
- POLARSSL_SSL_ALL_ALERT_MESSAGES
- Security
- ssl_decrypt_buf() due to badly formatted padding
- = Version 1.2.4 released 2013-01-25
- Changes
- SSL core
- Bugfix
- without DN list
- = Version 1.2.3 released 2012-11-26
- Bugfix
- = Version 1.2.2 released 2012-11-24
- Changes
- data
- Bugfixes
- = Version 1.2.1 released 2012-11-20
- Changes
- bottom-up (Peer cert depth is 0)
- Bugfixes
- Pégourié-Gonnard)
- Pégourié-Gonnard)
- = Version 1.2.0 released 2012-10-31
- Features
- ciphersuites (POLARSSL_ENABLE_WEAK_CIPHERSUITES). They are disabled by
- default!
- Alternative Name extension
- example application (programs/ssl/o_p_test) (requires OpenSSL)
- Changes
- to not match CN if subjectAltName extension is present (Closes ticket #56)
- POLARSSL_MODE_CFB, to also handle different block size CFB modes.
- in SSL/TLS
- Bugfix
- Hui Dong)
- #52)
- RFC 2313
- with carry rollover (found by Ruslan Yushchenko)
- Security
- Vanderbeken)
- = Version 1.1.8 released on 2013-10-01
- Bugfix
- Security
- both TrustInSoft and Paul Brodeur of Leviathan Security Group)
- = Version 1.1.7 released on 2013-06-19
- Changes
- Bugfix
- instead of the x509parse_crt() wrapper that can also parse PEM
- certificates
- Security
- PEM-encoded certificates has been fixed (found by Jack Lloyd)
- = Version 1.1.6 released on 2013-03-11
- Bugfix
- Changes
- disabled by default and can be enabled with POLARSSL_SSL_DEBUG_ALL
- Security
- ssl_decrypt_buf()
- rsa_rsaes_pkcs1_v15_decrypt() and rsa_pkcs1_decrypt() for PKCS#1 v1.5
- operations
- = Version 1.1.5 released on 2013-01-16
- Bugfix
- with carry rollover
- #52)
- Pégourié-Gonnard)
- Pégourié-Gonnard)
- RFC 2313
- Security
- Vanderbeken)
- = Version 1.1.4 released on 2012-05-31
- Bugfix
- = Version 1.1.3 released on 2012-04-29
- Bugfix
- = Version 1.1.2 released on 2012-04-26
- Bugfix
- Hui Dong)
- Security
- Frama-C team at CEA LIST)
- Yushchenko)
- = Version 1.1.1 released on 2012-01-23
- Bugfix
- (Closes ticket #47, found by Hugo Leisink)
- = Version 1.1.0 released on 2011-12-22
- Features
- SSL contexts without needing to set all non-connection-specific
- data and pointers again. Adapted ssl_server to use this functionality.
- supported version to a server to help buggy server implementations.
- (Closes ticket #36)
- introspection functions (Closes ticket #40)
- custom entropy sources and added some generic and platform dependent
- entropy sources
- Changes
- encryption and private key for decryption. (Closes ticket #34)
- So now there is a module that is controlled with POLARSSL_ASN1_PARSE_C.
- parity bits, to prevent mistakes in copying data. (Closes ticket #33)
- (Credits go to Marco Lizza)
- trade-off
- management (Closes ticket #44)
- havege_rand() to havege_random() to prevent mistakes. Lots of changes as
- a consequence in library code and programs
- x509parse_crtfile(). With permissive parsing the parsing does not stop on
- encountering a parse-error. Beware that the meaning of return values has
- changed!
- Bugfix
- ticket #37)
- before version numbers
- standard 1 byte version sometimes used by Microsoft. (Closes ticket #38)
- smaller than the hash length. (Closes ticket #41)
- appended with '....' after first 28 octets
- certificates and CRLs
- = Version 1.0.0 released on 2011-07-27
- Features
- Changes
- codes instead of integers
- Bugfix
- #18)
- = Version 0.99-pre5 released on 2011-05-26
- Features
- (AES CTR, Camellia CTR, XTEA CBC) including the option to
- enable and disable individual modes when needed
- by undefining POLARSSL_FS_IO
- error codes and their description.
- functions.
- Changes
- instead of int for buffer lengths and loop variables for
- better unsigned / signed use. Renamed internal bigint types
- t_int and t_dbl to t_uint and t_udbl in the process
- argument and do not accept variable argument lists anymore.
- is now done with a PLUS instead of an OR as error codes
- used are negative.
- net_recv() now returns 0 on EOF instead of
- POLARSSL_ERR_NET_CONN_RESET. ssl_fetch_input() returns
- POLARSSL_ERR_SSL_CONN_EOF on an EOF from its f_recv() function.
- ssl_read() returns 0 if a POLARSSL_ERR_SSL_CONN_EOF is received
- after the handshake.
- POLARSSL_ERR_NET_WANT_WRITE instead of the ambiguous
- POLARSSL_ERR_NET_TRY_AGAIN
- = Version 0.99-pre4 released on 2011-04-01
- Features
- for the RSAES-OAEP and RSASSA-PSS operations.
- functionality as well.
- with random data (Fixed ticket #10)
- Changes
- displays actual bit size of the value.
- does not zeroize memory in advance anymore. Use rsa_init()
- before parsing a key or keyfile!
- Bugfix
- platform (32-bit / 64-bit) (Fixes ticket #19, found by Mads
- Kiilerich and Mihai Militaru)
- #18, found by Nikolay Epifanov)
- length salt lengths
- = Version 0.99-pre3 released on 2011-02-28
- This release replaces version 0.99-pre2 which had possible copyright issues.
- Features
- are now supported as well (Fixes ticket #5)
- printing of X509 CRLs from file
- Changes
- ticket #13). Also possible to remove PEM support for
- systems only using DER encoding
- Bugfixes
- after 1950
- (found by Mads Kiilerich)
- certificates (found by Mads Kiilerich)
- to negotiate anonymous connection (Fixes ticket #12,
- found by Boris Krasnovskiy)
- Security fixes
- Diffie Hellman key exchange (thanks to Larry Highsmith,
- Subreption LLC)
- = Version 0.99-pre1 released on 2011-01-30
- Features
- Note: Most of these features have been donated by Fox-IT
- certificate fields, including Key Usage
- against the available CRLs
- applications:
- + Added generic message digest and cipher wrapper
- + Improved information about current capabilities,
- status, objects and configuration
- + Added verification callback on certificate chain
- verification to allow external blacklisting
- + Additional example programs to show usage
- libpkcs11-helper library
- Changes
- the existing date check
- of ssl_session have been renamed to ciphersuites and
- ciphersuite respectively. This clarifies the difference
- with the generic cipher layer and is better naming
- altogether
- = Version 0.14.0 released on 2010-08-16
- Features
- SSL_EDH_RSA_CAMELLIA_128_SHA ciphersuites
- Changes
- Now using random fuction provided to function and
- changed the prototype of rsa_pkcs1_encrypt(),
- rsa_init() and rsa_gen_key().
- future confusion
- Bug fixes
- kkert)
- generator
- = Version 0.13.1 released on 2010-03-24
- Bug fixes
- = Version 0.13.0 released on 2010-03-21
- Features
- ssl_client2
- printing of X509 certificates from file or SSL
- connection.
- Changes
- in a function to allow easy future expansion
- identical interface (returning int result values)
- for specific use-cases
- Bug fixes
- certificate in the chain in ssl_write_certificate() and
- ssl_write_certificate_request() (found by fatbob)
- (found by Frank de Brabander)
- Smbat Tonoyan)
- = Version 0.12.1 released on 2009-10-04
- Changes
- tagging system.
- the defines.
- Bug fixes
- by Eduardo)
- = Version 0.12.0 released on 2009-07-28
- Features
- Base64, MPI, SHA-family, MD-family, HMAC-SHA-family,
- Camellia, DES, 3-DES, RSA PKCS#1, XTEA, Diffie-Hellman
- and X509parse.
- Changes
- this is mind when checking for errors.
- to indicate invalid key lengths.
- Bug fixes
- Gabriel)
- Apples (found by Martin van Hensbergen)
- required HMAC ipad and opad variables are not cleared.
- (found by code coverage tests)
- POLARSSL_HAVE_LONGLONG not defined (found by Giles
- Bathgate).
- mpi_read_string() (found by code coverage tests).
- rsa_check_pubkey() and rsa_check_privkey() (found by
- code coverage tests).
- value in mpi_add_abs() (found by code coverage tests).
- value in mpi_sub_abs() (found by code coverage tests).
- value in mpi_mod_mpi() and mpi_mod_int(). Resulting
- change also affects mpi_write_string() (found by code
- coverage tests).
- code coverage tests).
- = Version 0.11.1 released on 2009-05-17
- SHA-512 in rsa_pkcs1_sign()
- = Version 0.11.0 released on 2009-05-03
- input numbers are even and added testcases to check
- (found by Pierre Habouzit).
- one way hash functions with the PKCS#1 v1.5 signing and
- verification.
- POLARSSL_GENPRIME block.
- handling of 'full' certificate chains (found by Mathias
- Olsson).
- load_file()
- systems (Found by Gernot).
- padlock and timing code.
- responsible for crashes and unwanted behaviour.
- SSL/TLS code.
- (found by Felix von Leitner).
- = Version 0.10.0 released on 2009-01-12
- SSL_RSA_CAMELLIA_256_SHA and SSL_EDH_RSA_CAMELLIA_256_SHA
- rsa_pkcs1_decrypt (found by Christophe Devine)
- ================================================================
- XySSL ChangeLog
- = Version 0.9 released on 2008-03-16
- be sent twice in non-blocking mode when send returns EAGAIN
- not be swapped in the SSLv2 ClientHello (found by Greg Robson)
- not swapped on PadLock; also fixed compilation on older versions
- of gcc (bug reported by David Barrett)
- ouput data is non-aligned by falling back to the software
- implementation, as VIA Nehemiah cannot handle non-aligned buffers
- Robson-Garth; some x509write.c fixes by Pascal Vizeli, thanks to
- Matthew Page who reported several bugs
- an INTEGER instead of a BOOLEAN for BasicConstraints::cA.
- (patch contributed by David Patino)
- string is passed as the CN (bug reported by spoofy)
- selftest and benchmark to not test ciphers that have been disabled
- serial number, setup correct server port in the ssl client example
- peer may cause xyssl to loop indefinitely by sending a certificate
- for which the RSA signature check fails (bug reported by Benoit)
- HMAC-MD5, HMAC-SHA1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
- Daniel Bleichenbacher attack on PKCS#1 v1.5 padding, as well
- as the Klima-Pokorny-Rosa extension of Bleichenbacher's attack
- David Barrett and Dusan Semen
- = Version 0.8 released on 2007-10-20
- than 64 bytes, thanks to Stephane Desneux and gary ng
- message digests, which fixes IE6/IE7 client authentication
- RSA_PUBLIC and RSA_PRIVATE, as suggested by David Barrett
- the sign of zero as positive in mpi_init() (reported
- by Jonathan M. McCune)
- = Version 0.7 released on 2007-07-07
- connections from being established with non-blocking I/O
- dh_client, dh_server, rsa_genkey, rsa_sign, rsa_verify
- how to create a test PKI
- = Version 0.6 released on 2007-04-01
- time, to reduce the memory footprint on embedded systems
- havege_struct for this processor, thanks to David Patiño
- thanks to Peking University and the OSU Open Source Lab
- was not being correctly defined on ARM and MIPS
- = Version 0.5 released on 2007-03-01
- (thanks to Benjamin Newman), HP-UX, FreeBSD and Solaris
- size of 16384 bytes to be rejected
- = Version 0.4 released on 2007-02-01
- generated) and in ssl_parse_client_hello (max. client
- version was not properly set), thanks to Didier Rebeix
- cipherlists larger than 96 bytes were incorrectly rejected
- = Version 0.3 released on 2007-01-01
- thanks to Xosé Antón Otero Ferreira
- the bignum code is no longer dependent on long long
- and 486 processors, thanks to Arnaud Cornet
- = Version 0.2 released on 2006-12-01
- valid RSA keys to be dismissed (thanks to oldwolf)
- the Miller-Rabin primality test
- I'd also like to thank Younès Hafri for the CRUX linux port,
- Khalil Petit who added XySSL into pkgsrc and Arnaud Cornet
- who maintains the Debian package :-)
- = Version 0.1 released on 2006-11-01
|