Jakub Jelen
ebea7d9023
session: Avoid potential null dereference on low-memory conditions
...
CID 1500478
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-28 10:43:51 +02:00
Jakub Jelen
62f013ae96
sftpserver: Check return value ssh_buffer_get_u32
...
CID 1513157
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-28 10:18:06 +02:00
Jakub Jelen
20dcb8b830
sftpserver: Reformat remaining condition
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-28 10:17:47 +02:00
Jakub Jelen
9709a466d7
sftpserver: Set OOM only if allocation fails
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-28 10:17:25 +02:00
Jakub Jelen
ddfc2e08b9
sftpserver: Initialize pointers
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-28 10:14:15 +02:00
Jakub Jelen
9847f3f638
Deprecate SSH_BIND_OPTIONS_{RSA,ECDSA}KEY in favor of generic HOSTKEY
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-26 15:10:52 +02:00
Jakub Jelen
5b2957f0a7
sftpserver: Avoid unreachable code line
...
CID 1513155
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Sahana Prasad <sahana@redhat.com >
2023-06-22 17:29:39 +02:00
Jakub Jelen
812ba3b717
sftp: Check return value of ssh_buffer_add_data
...
CID 1513156
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Sahana Prasad <sahana@redhat.com >
2023-06-22 17:29:39 +02:00
Jakub Jelen
4b8db203b0
channels: Refactor channel_rcv_data, check for errors and report more useful errors
...
CID 1513157
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Sahana Prasad <sahana@redhat.com >
2023-06-22 17:29:39 +02:00
Jakub Jelen
a45b9938fe
channels: Reformat channel_rcv_change_window
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Sahana Prasad <sahana@redhat.com >
2023-06-20 15:20:01 +02:00
Jakub Jelen
e6d2b6c713
sftpserver: Avoid leaking fd and dir on allocation error
...
CID 1513160 and CID 1513159
Thanks coverity
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Sahana Prasad <sahana@redhat.com >
2023-06-20 15:20:01 +02:00
Jakub Jelen
7009df7b04
sftp: Refromat sftp_open, sftp_opendir
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
6bebac10b7
sftp: Avoid leaking sftp attributes when opening file
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
c024280669
sftp: Clarify the order of arguments for symlink
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
baa18d3712
sftp: Properly check bounds of incoming packet
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
cd54390188
sftpserver: Standardize logging on errors
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
f09b475c4b
sftpserver: Properly handle empty files and EOF while reading
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
3fc30681f4
sftpserver: Properly handle mkdir modes
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
2a0d6d854a
sftpserver: Properly handle open modes
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
423bb3c8f0
Deprecate untested function sftp_server_init
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
492317efe9
Rename the sftp_process_init_packet()
...
... to better describe the function, which is only replying to the client with
our version and extensions.
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
1fe98800d2
sftpserver: Implement stat and realpath
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
7427090a9f
sftpserver: Improve logging
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
ff897165ca
Reformat most of the sftpserver.c
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
d0bfab2549
sftpserver: Fix reading and writing if buffering occurs
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
691105e93b
Remove needless new symbols and add required to API
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
5ea54c8159
sftpserver: Move duplicate code handling SFTP operations to library
...
These can be replaced by user-provided functions when needed.
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
Jakub Jelen
0affa5d705
sftp: Remove duplicate code handling packet types
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
tatataeki
8104c19013
sftp: fix problems in sftp APIs and example
...
Signed-off-by: tatataeki <shengzeyu19_98@163.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
tatataeki
0a5161a7d1
sftp: fix format problems, style nit and building problems
...
Signed-off-by: tatataeki <shengzeyu19_98@163.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
tatataeki
69ad6985de
sftp: format modified
...
Signed-off-by: tatataeki <shengzeyu19_98@163.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
tatataeki
48d14ee9a9
examples: add sftpserver example and fix problems
...
Signed-off-by: tatataeki <shengzeyu19_98@163.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:31 +02:00
tatataeki
f8bfb5a7a1
sftp: add sftp api for sftpserver
...
Signed-off-by: tatataeki <shengzeyu19_98@163.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
Reviewed-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com >
2023-06-06 10:54:30 +02:00
Kevin Backhouse
6a965e0981
Error out if ctx is NULL.
...
Signed-off-by: Kevin Backhouse <kevinbackhouse@github.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
2023-06-05 09:19:35 +02:00
Gerald Combs
c01377081f
libgcrypt.c: Fix type mismatches
...
Fix
/build/libssh-0.10.5/src/libgcrypt.c:903:20: error: incompatible function pointer types initializing 'void (*)(struct ssh_cipher_struct *, void *, void *, size_t)' (aka 'void (*)(struct ssh_cipher_struct *, void *, void *, unsigned long long)') with an expression of type 'void (struct ssh_cipher_struct *, void *, void *, unsigned long)' [-Wincompatible-function-pointer-types]
.encrypt = des3_encrypt,
^~~~~~~~~~~~
/build/libssh-0.10.5/src/libgcrypt.c:904:20: error: incompatible function pointer types initializing 'void (*)(struct ssh_cipher_struct *, void *, void *, size_t)' (aka 'void (*)(struct ssh_cipher_struct *, void *, void *, unsigned long long)') with an expression of type 'void (struct ssh_cipher_struct *, void *, void *, unsigned long)' [-Wincompatible-function-pointer-types]
.decrypt = des3_decrypt
^~~~~~~~~~~~
Fixes : #196
Signed-off-by: Gerald Combs <gerald@zing.org >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-06-02 13:41:54 +02:00
Norbert Pocs
5eb8685932
socket.c: Remove bug from documentation as it was solved
...
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
2023-06-01 10:34:21 +02:00
Norbert Pocs
1c0b8f624e
connect.c: Try to connect to other host addresses than just the first
...
When one host has multiple addresses returned by `getaddrinfo` try not just
the first address. The scenario where the first address is wrong but the
second is good was failing, because the second address was never tried.
This applies to ipv6 as well as to ipv4 addresses.
As the implementation uses non-blocking sockets it may return EINPROGRESS
when error happened as well as just "non-blocking" statement. The socket
can not be queried for status code to determine the error if any, because it
requires calling blocking functions.
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
2023-06-01 10:14:37 +02:00
Norbert Pocs
6424971a98
auth.c: Add termination when server disconnects during authentication
...
When the server is reaches MaxAuthTries it sends disconnect immediately
which was not correctly handled in the libssh client and hanged.
Solves #11
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
2023-05-29 14:04:03 +02:00
Norbert Pocs
009bbc0546
sftp.c: Avoid null dereference
...
Issue found by covscan (gcc analyzer)
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Jakub Jelen <jjelen@redhat.com >
2023-05-19 12:52:50 +02:00
roytak
9b263cf5e1
pki_crypto: Fix ecdsa memory leak
...
Fixed a memory leak in pki_privkey_build_ecdsa. The BIGNUM bexp was
getting allocated, but not free'd. It gets stored by reference in
param_bld.
Signed-off-by: roytak <xjanot04@fit.vutbr.cz >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-05-09 09:07:16 +02:00
Jakub Jelen
4f64aa3a5a
agent: Avoid memory leaks
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-05-04 16:55:17 +02:00
Jakub Jelen
655cda2b0e
auth: Avoid memory leaks during agent authentication
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-05-04 16:55:17 +02:00
Jakub Jelen
fa94777ed9
ecdh: Avoid memory leaks
...
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
2023-05-04 16:55:16 +02:00
Jakub Jelen
7ea71ead61
kex: Avoid NULL pointer dereference (GHSL-2023-032)
...
Thanks Phil Turnbull from Github
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Norbert Pocs
4e1b0e269f
options: Fail if no number was parsed
...
strtoul returns 0 if no valid character was parsed, which
can unwantedly misconfigure the options.
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Norbert Pocs
0e3bb8cbf9
buffer.c: Fix null pointer dereference error
...
This issue was discovered by covscan tool.
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Norbert Pocs
9f8d46a45a
Add missing return value check
...
This issue was detected by covscan
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Norbert Pocs
4b5ccd4995
CVE-2023-2283:pki_crypto: Remove unnecessary NULL check
...
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Norbert Pocs
0bda152ad2
CVE-2023-2283:pki_crypto: Fix possible authentication bypass
...
The return value is changed by the call to pki_key_check_hash_compatible
causing the possibility of returning SSH_OK if memory allocation error
happens later in the function.
The assignment of SSH_ERROR if the verification fails is no longer needed,
because the value of the variable is already SSH_ERROR.
Signed-off-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00
Jakub Jelen
08386d4787
CVE-2023-1667:kex: Add support for sending first_kex_packet_follows flag
...
This is not completely straightforward as it requires us to do some state
shuffling.
We introduce internal flag that can turn this on in client side, so far for
testing only as we do not want to universally enable this. We also repurpose the
server flag indicating the guess was wrong also for the client to make desired
decisions.
If we found out our guess was wrong, we need to hope the server was able to
figure out this much, we need to revert the DH FSM state, drop the callbacks
from the "wrong" key exchange method and initiate the right one.
The server side is already tested by the pkd_hello_i1, which is executing tests
against dropbrear clients, which is using this flag by default out of the box.
Tested manually also with the pkd_hello --rekey to make sure the server is able
to handle the rekeying with all key exchange methods.
Signed-off-by: Jakub Jelen <jjelen@redhat.com >
Reviewed-by: Norbert Pocs <npocs@redhat.com >
Reviewed-by: Andreas Schneider <asn@cryptomilk.org >
2023-05-04 11:51:17 +02:00