Skip to content

Commit

Permalink
Merge commit '10e09e273f69e149389b3e0e5d44b8c221c2e7f6'
Browse files Browse the repository at this point in the history
  • Loading branch information
Sibras committed Apr 6, 2024
2 parents 89aa8bc + 10e09e2 commit 3781913
Show file tree
Hide file tree
Showing 51 changed files with 1,710 additions and 533 deletions.
2 changes: 1 addition & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ fedora/ninja:
extends: .fedora
image: $CI_REGISTRY/$BUILD_IMAGES_PROJECT:$FEDORA_BUILD
script:
- cmake -G Ninja $CMAKE_OPTIONS ../ && ninja && ninja test
- cmake -G Ninja $CMAKE_OPTIONS ../ && ninja && CTEST_OUTPUT_ON_FAILURE=1 ninja test

fedora/openssl_3.0.x/x86_64:
extends: .fedora
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
CHANGELOG
=========
version 0.10.6 (released 2023-12-18)
* Fix CVE-2023-6004: Command injection using proxycommand
* Fix CVE-2023-48795: Potential downgrade attack using strict kex
* Fix CVE-2023-6918: Missing checks for return values of MD functions
* Fix ssh_send_issue_banner() for CMD(PowerShell)
* Avoid passing other events to callbacks when poll is called recursively (#202)
* Allow @ in usernames when parsing from URI composes

version 0.10.5 (released 2023-05-04)
* Fix CVE-2023-1667: a NULL dereference during rekeying with algorithm guessing
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
include(DefineCMakeDefaults)
include(DefineCompilerFlags)

project(libssh VERSION 0.10.5 LANGUAGES C)
project(libssh VERSION 0.10.6 LANGUAGES C)

# global needed variable
set(APPLICATION_NAME ${PROJECT_NAME})
Expand All @@ -22,7 +22,7 @@ set(APPLICATION_NAME ${PROJECT_NAME})
# Increment AGE. Set REVISION to 0
# If the source code was changed, but there were no interface changes:
# Increment REVISION.
set(LIBRARY_VERSION "4.9.5")
set(LIBRARY_VERSION "4.9.6")
set(LIBRARY_SOVERSION "4")

# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
Expand Down
1 change: 1 addition & 0 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ optional:
- [nss_wrapper](https://cwrap.org/) >= 1.1.2
- [uid_wrapper](https://cwrap.org/) >= 1.2.0
- [pam_wrapper](https://cwrap.org/) >= 1.0.1
- [priv_wrapper](https://cwrap.org/) >= 1.0.0

Note that these version numbers are version we know works correctly. If you
build and run libssh successfully with an older version, please let us know.
Expand Down
10 changes: 5 additions & 5 deletions doc/mainpage.dox
Original file line number Diff line number Diff line change
Expand Up @@ -213,15 +213,15 @@ It was later modified and expanded by the following RFCs.
Use of RSA Keys with SHA-256 and SHA-512 in the Secure Shell (SSH) Protocol
- <a href="https://tools.ietf.org/html/rfc8709" target="_blank">RFC 8709</a>,
Ed25519 and Ed448 Public Key Algorithms for the Secure Shell (SSH) Protocol
- <a href="https://tools.ietf.org/html/rfc8709" target="_blank">RFC 8731</a>,
Secure Shell (SSH) Key Exchange Method Using Curve25519 and Curve448
- <a href="https://tools.ietf.org/html/rfc9142" target="_blank">RFC 9142</a>,
Key Exchange (KEX) Method Updates and Recommendations for Secure Shell (SSH)

There are also drafts that are being currently developed and followed.

- <a href="https://tools.ietf.org/html/draft-ietf-curdle-ssh-kex-sha2-10" target="_blank">draft-ietf-curdle-ssh-kex-sha2-10</a>
Key Exchange (KEX) Method Updates and Recommendations for Secure Shell (SSH)
- <a href="https://tools.ietf.org/html/draft-miller-ssh-agent-03" target="_blank">draft-miller-ssh-agent-03</a>
- <a href="https://tools.ietf.org/html/draft-miller-ssh-agent-03" target="_blank">draft-miller-ssh-agent-08</a>
SSH Agent Protocol
- <a href="https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves-12" target="_blank">draft-ietf-curdle-ssh-curves-12</a>
Secure Shell (SSH) Key Exchange Method using Curve25519 and Curve448

Interesting cryptography documents:

Expand Down
1 change: 1 addition & 0 deletions include/libssh/kex.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ SSH_PACKET_CALLBACK(ssh_packet_kexinit);
int ssh_send_kex(ssh_session session);
void ssh_list_kex(struct ssh_kex_struct *kex);
int ssh_set_client_kex(ssh_session session);
int ssh_kex_append_extensions(ssh_session session, struct ssh_kex_struct *pkex);
int ssh_kex_select_methods(ssh_session session);
int ssh_verify_existing_algo(enum ssh_kex_types_e algo, const char *name);
char *ssh_keep_known_algos(enum ssh_kex_types_e algo, const char *list);
Expand Down
5 changes: 0 additions & 5 deletions include/libssh/libcrypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@ typedef EVP_MD_CTX* SHA384CTX;
typedef EVP_MD_CTX* SHA512CTX;
typedef EVP_MD_CTX* MD5CTX;
typedef EVP_MD_CTX* HMACCTX;
#ifdef HAVE_ECC
typedef EVP_MD_CTX *EVPCTX;
#else
typedef void *EVPCTX;
#endif

#define SHA_DIGEST_LEN SHA_DIGEST_LENGTH
#define SHA256_DIGEST_LEN SHA256_DIGEST_LENGTH
Expand Down
1 change: 0 additions & 1 deletion include/libssh/libgcrypt.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ typedef gcry_md_hd_t SHA384CTX;
typedef gcry_md_hd_t SHA512CTX;
typedef gcry_md_hd_t MD5CTX;
typedef gcry_md_hd_t HMACCTX;
typedef gcry_md_hd_t EVPCTX;
#define SHA_DIGEST_LENGTH 20
#define SHA_DIGEST_LEN SHA_DIGEST_LENGTH
#define MD5_DIGEST_LEN 16
Expand Down
1 change: 0 additions & 1 deletion include/libssh/libmbedcrypto.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ typedef mbedtls_md_context_t *SHA384CTX;
typedef mbedtls_md_context_t *SHA512CTX;
typedef mbedtls_md_context_t *MD5CTX;
typedef mbedtls_md_context_t *HMACCTX;
typedef mbedtls_md_context_t *EVPCTX;

#define SHA_DIGEST_LENGTH 20
#define SHA_DIGEST_LEN SHA_DIGEST_LENGTH
Expand Down
3 changes: 3 additions & 0 deletions include/libssh/misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,9 @@ int ssh_newline_vis(const char *string, char *buf, size_t buf_len);
int ssh_tmpname(char *name);

char *ssh_strreplace(const char *src, const char *pattern, const char *repl);

int ssh_check_hostname_syntax(const char *hostname);

#ifdef __cplusplus
}
#endif
Expand Down
1 change: 1 addition & 0 deletions include/libssh/packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ SSH_PACKET_CALLBACK(ssh_packet_ext_info);
SSH_PACKET_CALLBACK(ssh_packet_kexdh_init);
#endif

int ssh_packet_send_newkeys(ssh_session session);
int ssh_packet_send_unimplemented(ssh_session session, uint32_t seqnum);
int ssh_packet_parse_type(ssh_session session);
//int packet_flush(ssh_session session, int enforce_blocking);
Expand Down
6 changes: 6 additions & 0 deletions include/libssh/session.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ enum ssh_pending_call_e {
* sending it twice during key exchange to simplify the state machine. */
#define SSH_SESSION_FLAG_KEXINIT_SENT 4

/* The current SSH2 session implements the "strict KEX" feature and should behave
* differently on SSH2_MSG_NEWKEYS. */
#define SSH_SESSION_FLAG_KEX_STRICT 0x0010
/* Unexpected packets have been sent while the session was still unencrypted */
#define SSH_SESSION_FLAG_KEX_TAINTED 0x0020

/* codes to use with ssh_handle_packets*() */
/* Infinite timeout */
#define SSH_TIMEOUT_INFINITE -1
Expand Down
38 changes: 19 additions & 19 deletions include/libssh/wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,33 +72,33 @@ struct ssh_crypto_struct;

typedef struct ssh_mac_ctx_struct *ssh_mac_ctx;
MD5CTX md5_init(void);
void md5_update(MD5CTX c, const void *data, size_t len);
void md5_final(unsigned char *md,MD5CTX c);
void md5_ctx_free(MD5CTX);
int md5_update(MD5CTX c, const void *data, size_t len);
int md5_final(unsigned char *md, MD5CTX c);

SHACTX sha1_init(void);
void sha1_update(SHACTX c, const void *data, size_t len);
void sha1_final(unsigned char *md,SHACTX c);
void sha1(const unsigned char *digest,size_t len,unsigned char *hash);
void sha1_ctx_free(SHACTX);
int sha1_update(SHACTX c, const void *data, size_t len);
int sha1_final(unsigned char *md,SHACTX c);
int sha1(const unsigned char *digest,size_t len, unsigned char *hash);

SHA256CTX sha256_init(void);
void sha256_update(SHA256CTX c, const void *data, size_t len);
void sha256_final(unsigned char *md,SHA256CTX c);
void sha256(const unsigned char *digest, size_t len, unsigned char *hash);
void sha256_ctx_free(SHA256CTX);
int sha256_update(SHA256CTX c, const void *data, size_t len);
int sha256_final(unsigned char *md,SHA256CTX c);
int sha256(const unsigned char *digest, size_t len, unsigned char *hash);

SHA384CTX sha384_init(void);
void sha384_update(SHA384CTX c, const void *data, size_t len);
void sha384_final(unsigned char *md,SHA384CTX c);
void sha384(const unsigned char *digest, size_t len, unsigned char *hash);
void sha384_ctx_free(SHA384CTX);
int sha384_update(SHA384CTX c, const void *data, size_t len);
int sha384_final(unsigned char *md,SHA384CTX c);
int sha384(const unsigned char *digest, size_t len, unsigned char *hash);

SHA512CTX sha512_init(void);
void sha512_update(SHA512CTX c, const void *data, size_t len);
void sha512_final(unsigned char *md,SHA512CTX c);
void sha512(const unsigned char *digest, size_t len, unsigned char *hash);

void evp(int nid, unsigned char *digest, size_t len, unsigned char *hash, unsigned int *hlen);
EVPCTX evp_init(int nid);
void evp_update(EVPCTX ctx, const void *data, size_t len);
void evp_final(EVPCTX ctx, unsigned char *md, unsigned int *mdlen);
void sha512_ctx_free(SHA512CTX);
int sha512_update(SHA512CTX c, const void *data, size_t len);
int sha512_final(unsigned char *md,SHA512CTX c);
int sha512(const unsigned char *digest, size_t len, unsigned char *hash);

HMACCTX hmac_init(const void *key,size_t len, enum ssh_hmac_e type);
int hmac_update(HMACCTX c, const void *data, size_t len);
Expand Down
2 changes: 1 addition & 1 deletion src/ABI/current
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.9.5
4.9.6
Loading

0 comments on commit 3781913

Please sign in to comment.