-
Notifications
You must be signed in to change notification settings - Fork 621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor SSH, add russh
as alternative to libssh
#1688
base: main
Are you sure you want to change the base?
Conversation
🔍 Vulnerabilities of
|
digest | sha256:8355b6500a2776d6039146f6adb1b02b58eba5180ee066880925fb4cb2e52729 |
vulnerabilities | |
size | 141 MB |
packages | 262 |
📦 Base Image debian:stable-20241016-slim
also known as |
|
digest | sha256:d337e8c1770de491cd165b65051f49455ff20fdd26b296d24650876aefaa445f |
vulnerabilities |
glibc
|
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 0.11% |
EPSS Percentile | 45th percentile |
Description
In the GNU C Library (aka glibc or libc6) through 2.29, check_dst_limits_calc_pos_1 in posix/regexec.c has Uncontrolled Recursion, as demonstrated by '(|)(\1\1)*' in grep, a different issue than CVE-2018-20796. NOTE: the software maintainer disputes that this is a vulnerability because the behavior occurs only with a crafted pattern
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 0.35% |
EPSS Percentile | 72nd percentile |
Description
GNU Libc current is affected by: Mitigation bypass. The impact is: Attacker may guess the heap addresses of pthread_created thread. The component is: glibc. NOTE: the vendor's position is "ASLR bypass itself is not a vulnerability.
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 3.02% |
EPSS Percentile | 91st percentile |
Description
GNU Libc current is affected by: Mitigation bypass. The impact is: Attacker may bypass ASLR using cache of thread stack and heap. The component is: glibc. NOTE: Upstream comments indicate "this is being treated as a non-security bug and no real threat.
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 1.20% |
EPSS Percentile | 86th percentile |
Description
GNU Libc current is affected by: Re-mapping current loaded library with malicious ELF file. The impact is: In worst case attacker may evaluate privileges. The component is: libld. The attack vector is: Attacker sends 2 ELF files to victim and asks to run ldd on it. ldd execute code. NOTE: Upstream comments indicate "this is being treated as a non-security bug and no real threat.
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 0.41% |
EPSS Percentile | 74th percentile |
Description
GNU Libc current is affected by: Mitigation bypass. The impact is: Attacker may bypass stack guard protection. The component is: nptl. The attack vector is: Exploit stack buffer overflow vulnerability and use this bypass vulnerability to bypass stack guard. NOTE: Upstream comments indicate "this is being treated as a non-security bug and no real threat.
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 0.44% |
EPSS Percentile | 75th percentile |
Description
In the GNU C Library (aka glibc or libc6) through 2.29, check_dst_limits_calc_pos_1 in posix/regexec.c has Uncontrolled Recursion, as demonstrated by '(\227|)(\1\1|t1|\\2537)+' in grep.
Affected range | >=2.36-9+deb12u8 |
Fixed version | Not Fixed |
EPSS Score | 0.82% |
EPSS Percentile | 82nd percentile |
Description
The glob implementation in the GNU C Library (aka glibc or libc6) allows remote authenticated users to cause a denial of service (CPU and memory consumption) via crafted glob expressions that do not match any pathnames, as demonstrated by glob expressions in STAT commands to an FTP daemon, a different vulnerability than CVE-2010-2632.
pcre3 2:8.39-15
(deb)
pkg:deb/debian/pcre3@2:8.39-15?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2:8.39-15 |
Fixed version | Not Fixed |
EPSS Score | 1.03% |
EPSS Percentile | 84th percentile |
Description
libpcre in PCRE before 8.43 allows a subject buffer over-read in JIT when UTF is disabled, and \X or \R has more than one fixed quantifier, a related issue to CVE-2019-20454.
Affected range | >=2:8.39-15 |
Fixed version | Not Fixed |
EPSS Score | 0.65% |
EPSS Percentile | 80th percentile |
Description
Stack-based buffer overflow in the pcre32_copy_substring function in pcre_get.c in libpcre1 in PCRE 8.40 allows remote attackers to cause a denial of service (WRITE of size 268) or possibly have unspecified other impact via a crafted file.
Affected range | >=2:8.39-15 |
Fixed version | Not Fixed |
EPSS Score | 0.65% |
EPSS Percentile | 80th percentile |
Description
Stack-based buffer overflow in the pcre32_copy_substring function in pcre_get.c in libpcre1 in PCRE 8.40 allows remote attackers to cause a denial of service (WRITE of size 4) or possibly have unspecified other impact via a crafted file.
Affected range | >=2:8.39-15 |
Fixed version | Not Fixed |
EPSS Score | 0.08% |
EPSS Percentile | 36th percentile |
Description
In PCRE 8.41, after compiling, a pcretest load test PoC produces a crash overflow in the function match() in pcre_exec.c because of a self-recursive call. NOTE: third parties dispute the relevance of this report, noting that there are options that can be used to limit the amount of stack that is used
Affected range | >=2:8.39-15 |
Fixed version | Not Fixed |
EPSS Score | 0.37% |
EPSS Percentile | 73rd percentile |
Description
In PCRE 8.41, the OP_KETRMAX feature in the match function in pcre_exec.c allows stack exhaustion (uncontrolled recursion) when processing a crafted regular expression.
openldap 2.5.13+dfsg-5
(deb)
pkg:deb/debian/[email protected]%2Bdfsg-5?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.5.13+dfsg-5 |
Fixed version | Not Fixed |
EPSS Score | 0.16% |
EPSS Percentile | 54th percentile |
Description
libldap in certain third-party OpenLDAP packages has a certificate-validation flaw when the third-party package is asserting RFC6125 support. It considers CN even when there is a non-matching subjectAltName (SAN). This is fixed in, for example, openldap-2.4.46-10.el8 in Red Hat Enterprise Linux.
Affected range | >=2.5.13+dfsg-5 |
Fixed version | Not Fixed |
EPSS Score | 0.41% |
EPSS Percentile | 74th percentile |
Description
contrib/slapd-modules/nops/nops.c in OpenLDAP through 2.4.45, when both the nops module and the memberof overlay are enabled, attempts to free a buffer that was allocated on the stack, which allows remote attackers to cause a denial of service (slapd crash) via a member MODDN operation.
Affected range | >=2.5.13+dfsg-5 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 11th percentile |
Description
slapd in OpenLDAP 2.4.45 and earlier creates a PID file after dropping privileges to a non-root account, which might allow local users to kill arbitrary processes by leveraging access to this non-root account for PID file modification before a root script executes a "kill
cat /pathname
" command, as demonstrated by openldap-initscript.
Affected range | >=2.5.13+dfsg-5 |
Fixed version | Not Fixed |
EPSS Score | 0.42% |
EPSS Percentile | 75th percentile |
Description
The nss_parse_ciphers function in libraries/libldap/tls_m.c in OpenLDAP does not properly parse OpenSSL-style multi-keyword mode cipher strings, which might cause a weaker than intended cipher to be used and allow remote attackers to have unspecified impact via unknown vectors.
systemd 252.30-1~deb12u2
(deb)
pkg:deb/debian/[email protected]~deb12u2?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=252.30-1~deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.10% |
EPSS Percentile | 42nd percentile |
Description
An issue was discovered in systemd 253. An attacker can modify the contents of past events in a sealed log file and then adjust the file such that checking the integrity shows no error, despite modifications. NOTE: the vendor reportedly sent "a reply denying that any of the finding was a security vulnerability."
Affected range | >=252.30-1~deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.10% |
EPSS Percentile | 42nd percentile |
Description
An issue was discovered in systemd 253. An attacker can truncate a sealed log file and then resume log sealing such that checking the integrity shows no error, despite modifications. NOTE: the vendor reportedly sent "a reply denying that any of the finding was a security vulnerability."
Affected range | >=252.30-1~deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.09% |
EPSS Percentile | 39th percentile |
Description
An issue was discovered in systemd 253. An attacker can modify a sealed log file such that, in some views, not all existing and sealed log messages are displayed. NOTE: the vendor reportedly sent "a reply denying that any of the finding was a security vulnerability."
Affected range | >=252.30-1~deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 5th percentile |
Description
systemd, when updating file permissions, allows local users to change the permissions and SELinux security contexts for arbitrary files via a symlink attack on unspecified files.
krb5 1.20.1-2+deb12u2
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u2?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1.20.1-2+deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 10th percentile |
Description
Kerberos 5 (aka krb5) 1.21.2 contains a memory leak vulnerability in /krb5/src/lib/gssapi/krb5/k5sealv3.c.
Affected range | >=1.20.1-2+deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 10th percentile |
Description
Kerberos 5 (aka krb5) 1.21.2 contains a memory leak in /krb5/src/lib/rpc/pmap_rmt.c.
Affected range | >=1.20.1-2+deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.10% |
EPSS Percentile | 42nd percentile |
Description
An issue was discovered in MIT Kerberos 5 (aka krb5) through 1.16. There is a variable "dbentry->n_key_data" in kadmin/dbutil/dump.c that can store 16-bit data but unknowingly the developer has assigned a "u4" variable to it, which is for 32-bit data. An attacker can use this vulnerability to affect other artifacts of the database as we know that a Kerberos database dump file contains trusted data.
perl 5.36.0-7+deb12u1
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=5.36.0-7+deb12u1 |
Fixed version | Not Fixed |
EPSS Score | 0.28% |
EPSS Percentile | 69th percentile |
Description
HTTP::Tiny before 0.083, a Perl core module since 5.13.9 and available standalone on CPAN, has an insecure default TLS configuration where users must opt in to verify certificates.
Affected range | >=5.36.0-7+deb12u1 |
Fixed version | Not Fixed |
EPSS Score | 0.24% |
EPSS Percentile | 65th percentile |
Description
_is_safe in the File::Temp module for Perl does not properly handle symlinks.
m4 1.4.19-3
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1.4.19-3 |
Fixed version | Not Fixed |
EPSS Score | 2.99% |
EPSS Percentile | 91st percentile |
Description
Unspecified vulnerability in GNU m4 before 1.4.11 might allow context-dependent attackers to execute arbitrary code, related to improper handling of filenames specified with the -F option. NOTE: it is not clear when this issue crosses privilege boundaries.
Affected range | >=1.4.19-3 |
Fixed version | Not Fixed |
EPSS Score | 2.12% |
EPSS Percentile | 89th percentile |
Description
The (1) maketemp and (2) mkstemp builtin functions in GNU m4 before 1.4.11 do not quote their output when a file is created, which might allow context-dependent attackers to trigger a macro expansion, leading to unspecified use of an incorrect filename.
gcc-12 12.2.0-14
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=12.2.0-14 |
Fixed version | Not Fixed |
EPSS Score | 0.06% |
EPSS Percentile | 26th percentile |
Description
DISPUTEDA failure in the -fstack-protector feature in GCC-based toolchains that target AArch64 allows an attacker to exploit an existing buffer overflow in dynamically-sized local variables in your application without this being detected. This stack-protector failure only applies to C99-style dynamically-sized local variables or those created using alloca(). The stack-protector operates as intended for statically-sized local variables. The default behavior when the stack-protector detects an overflow is to terminate your application, resulting in controlled loss of availability. An attacker who can exploit a buffer overflow without triggering the stack-protector might be able to change program flow control to cause an uncontrolled loss of availability or to go further and affect confidentiality or integrity. NOTE: The GCC project argues that this is a missed hardening bug and not a vulnerability by itself.
Affected range | >=12.2.0-14 |
Fixed version | Not Fixed |
EPSS Score | 0.07% |
EPSS Percentile | 33rd percentile |
Description
libiberty/rust-demangle.c in GNU GCC 11.2 allows stack consumption in demangle_const, as demonstrated by nm-new.
libpcap 1.10.3-1
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1.10.3-1 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 10th percentile |
Description
Remote packet capture support is disabled by default in libpcap. When a user builds libpcap with remote packet capture support enabled, one of the functions that become available is pcap_findalldevs_ex(). One of the function arguments can be a filesystem path, which normally means a directory with input data files. When the specified path cannot be used as a directory, the function receives NULL from opendir(), but does not check the return value and passes the NULL value to readdir(), which causes a NULL pointer derefence.
Affected range | >=1.10.3-1 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 10th percentile |
Description
In affected libpcap versions during the setup of a remote packet capture the internal function sock_initaddress() calls getaddrinfo() and possibly freeaddrinfo(), but does not clearly indicate to the caller function whether freeaddrinfo() still remains to be called after the function returns. This makes it possible in some scenarios that both the function and its caller call freeaddrinfo() for the same allocated memory block. A similar problem was reported in Apple libpcap, to which Apple assigned CVE-2023-40400.
tar 1.34+dfsg-1.2+deb12u1
(deb)
pkg:deb/debian/[email protected]%2Bdfsg-1.2%2Bdeb12u1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1.34+dfsg-1.2+deb12u1 |
Fixed version | Not Fixed |
EPSS Score | 0.69% |
EPSS Percentile | 81st percentile |
Description
Tar 1.15.1 does not properly warn the user when extracting setuid or setgid files, which may allow local users or remote attackers to gain privileges.
apt 2.6.1
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.6.1 |
Fixed version | Not Fixed |
EPSS Score | 0.16% |
EPSS Percentile | 54th percentile |
Description
It was found that apt-key in apt, all versions, do not correctly validate gpg keys with the master keyring, leading to a potential man-in-the-middle attack.
gnutls28 3.7.9-2+deb12u3
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u3?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=3.7.9-2+deb12u3 |
Fixed version | Not Fixed |
EPSS Score | 0.60% |
EPSS Percentile | 79th percentile |
Description
The SSL protocol, as used in certain configurations in Microsoft Windows and Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Opera, and other products, encrypts data by using CBC mode with chained initialization vectors, which allows man-in-the-middle attackers to obtain plaintext HTTP headers via a blockwise chosen-boundary attack (BCBA) on an HTTPS session, in conjunction with JavaScript code that uses (1) the HTML5 WebSocket API, (2) the Java URLConnection API, or (3) the Silverlight WebClient API, aka a "BEAST" attack.
shadow 1:4.13+dfsg1-1
(deb)
pkg:deb/debian/shadow@1:4.13%2Bdfsg1-1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1:4.13+dfsg1-1 |
Fixed version | Not Fixed |
EPSS Score | 0.16% |
EPSS Percentile | 53rd percentile |
Description
initscripts in rPath Linux 1 sets insecure permissions for the /var/log/btmp file, which allows local users to obtain sensitive information regarding authentication attempts. NOTE: because sshd detects the insecure permissions and does not log certain events, this also prevents sshd from logging failed authentication attempts by remote attackers.
libgcrypt20 1.10.1-3
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=1.10.1-3 |
Fixed version | Not Fixed |
EPSS Score | 0.19% |
EPSS Percentile | 58th percentile |
Description
cipher/elgamal.c in Libgcrypt through 1.8.2, when used to encrypt messages directly, improperly encodes plaintexts, which allows attackers to obtain sensitive information by reading ciphertext data (i.e., it does not have semantic security in face of a ciphertext-only attack). The Decisional Diffie-Hellman (DDH) assumption does not hold for Libgcrypt's ElGamal implementation.
curl 7.88.1-10+deb12u7
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u7?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=7.88.1-10+deb12u7 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 14th percentile |
Description
libcurl skips the certificate verification for a QUIC connection under certain conditions, when built to use wolfSSL. If told to use an unknown/bad cipher or curve, the error path accidentally skips the verification and returns OK, thus ignoring any certificate problems.
nmap 7.93+dfsg1-1
(deb)
pkg:deb/debian/[email protected]%2Bdfsg1-1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=7.93+dfsg1-1 |
Fixed version | Not Fixed |
EPSS Score | 2.28% |
EPSS Percentile | 90th percentile |
Description
Nmap through 7.70, when the -sV option is used, allows remote attackers to cause a denial of service (stack consumption and application crash) via a crafted TCP-based service.
libxml2 2.9.14+dfsg-1.3~deb12u1
(deb)
pkg:deb/debian/[email protected]%2Bdfsg-1.3~deb12u1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.9.14+dfsg-1.3~deb12u1 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 11th percentile |
Description
An issue was discovered in xmllint (from libxml2) before 2.11.8 and 2.12.x before 2.12.7. Formatting error messages with xmllint --htmlout can result in a buffer over-read in xmlHTMLPrintFileContext in xmllint.c.
openssl 3.0.14-1~deb12u2
(deb)
pkg:deb/debian/[email protected]~deb12u2?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=3.0.11-1~deb12u2 |
Fixed version | Not Fixed |
EPSS Score | 0.07% |
EPSS Percentile | 30th percentile |
Description
OpenSSL 0.9.8i on the Gaisler Research LEON3 SoC on the Xilinx Virtex-II Pro FPGA uses a Fixed Width Exponentiation (FWE) algorithm for certain signature calculations, and does not verify the signature before providing it to a caller, which makes it easier for physically proximate attackers to determine the private key via a modified supply voltage for the microprocessor, related to a "fault-based attack."
coreutils 9.1-1
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=9.1-1 |
Fixed version | Not Fixed |
EPSS Score | 0.04% |
EPSS Percentile | 5th percentile |
Description
In GNU Coreutils through 8.29, chown-core.c in chown and chgrp does not prevent replacement of a plain file with a symlink during use of the POSIX "-R -L" options, which allows local users to modify the ownership of arbitrary files by leveraging a race condition.
sqlite3 3.40.1-2
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=3.40.1-2 |
Fixed version | Not Fixed |
EPSS Score | 0.22% |
EPSS Percentile | 61st percentile |
Description
A Memory Leak vulnerability exists in SQLite Project SQLite3 3.35.1 and 3.37.0 via maliciously crafted SQL Queries (made via editing the Database File), it is possible to query a record, and leak subsequent bytes of memory that extend beyond the record, which could let a malicious user obtain sensitive information. NOTE: The developer disputes this as a vulnerability stating that If you give SQLite a corrupted database file and submit a query against the database, it might read parts of the database that you did not intend or expect.
net-tools 2.10-0.1
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.10-0.1 |
Fixed version | Not Fixed |
EPSS Score | 0.06% |
EPSS Percentile | 26th percentile |
Description
ifconfig, when used on the Linux kernel 2.2 and later, does not report when the network interface is in promiscuous mode if it was put in promiscuous mode using PACKET_MR_PROMISC, which could allow attackers to sniff the network without detection, as demonstrated using libpcap.
util-linux 2.38.1-5+deb12u1
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u1?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.38.1-5+deb12u1 |
Fixed version | Not Fixed |
EPSS Score | 0.05% |
EPSS Percentile | 18th percentile |
Description
A flaw was found in the util-linux chfn and chsh utilities when compiled with Readline support. The Readline library uses an "INPUTRC" environment variable to get a path to the library config file. When the library cannot parse the specified file, it prints an error message containing data from the file. This flaw allows an unprivileged user to read root-owned files, potentially leading to privilege escalation. This flaw affects util-linux versions prior to 2.37.4.
gnupg2 2.2.40-1.1
(deb)
pkg:deb/debian/[email protected]?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.2.40-1.1 |
Fixed version | Not Fixed |
EPSS Score | 0.05% |
EPSS Percentile | 18th percentile |
Description
GnuPG can be made to spin on a relatively small input by (for example) crafting a public key with thousands of signatures attached, compressed down to just a few KB.
glib2.0 2.74.6-2+deb12u3
(deb)
pkg:deb/debian/[email protected]%2Bdeb12u3?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=2.74.6-2+deb12u3 |
Fixed version | Not Fixed |
EPSS Score | 0.16% |
EPSS Percentile | 53rd percentile |
Description
GLib 2.31.8 and earlier, when the g_str_hash function is used, computes hash values without restricting the ability to trigger hash collisions predictably, which allows context-dependent attackers to cause a denial of service (CPU consumption) via crafted input to an application that maintains a hash table. NOTE: this issue may be disputed by the vendor; the existence of the g_str_hash function is not a vulnerability in the library, because callers of g_hash_table_new and g_hash_table_new_full can specify an arbitrary hash function that is appropriate for the application.
net-snmp 5.9.3+dfsg-2
(deb)
pkg:deb/debian/[email protected]%2Bdfsg-2?os_distro=bookworm&os_name=debian&os_version=12
Affected range | >=5.9.3+dfsg-2 |
Fixed version | Not Fixed |
Description
net-snmp 5.9.4 contains a memory leak vulnerability in /net-snmp/apps/snmpvacm.c.
dc1ce98
to
9bd65bc
Compare
985e935
to
01ffb96
Compare
9bd65bc
to
c77d9b5
Compare
Blocked by #1671 |
c77d9b5
to
7542d55
Compare
e8fa39b
to
2b63150
Compare
3878cb6
to
ba09ec3
Compare
7997286
to
e3647fa
Compare
Dependency ReviewThe following issues were found:
|
Also add a very basic test to check the ssh_connect NASL function.
This is necessary in order to unify the structure between the libssh and the russh implementation. We want the `nasl_function` signature to be the exact same, but this requires making the function on `SshSession` have a consistent signature between the two implementations. Since the function is necessarily `async` in `russh`, this means it also has to be async in `libssh`. However, making any function on the libssh `SshSession` async will automatically make it borrow `&self`. However, if the `channel` contained in `SshSession` is not contained in a `Mutex`, `SshSession` will be `!Send`. Thus, in order to have a clean interface, we need to wrap the `Channel` in a `Mutex`.
Done by splitting up the various parts into smaller submethods to get the complexity under control to some degree.
e3647fa
to
9aea0c3
Compare
fc97c78
to
f4d0f99
Compare
This is noop for the russh impl.
c012e6f
to
09d616f
Compare
Also add a `.with()` method to attach information to the error which may or may not be present.
09d616f
to
e0b66ca
Compare
0a846b0
to
31e2708
Compare
russh
as alternative to libssh
russh = "0.45.0" | ||
russh-keys = "0.45.0" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having these here even if compiling with nasl-builtin-libssh
is a little unfortunate, but since a feature gate cannot disable dependencies (only enable them), this means that, as far as I know, the only alternative is to
- Add a feature
nasl-builtin-russh
. - Activate that feature by default
- Toggle the
russh
dependency on that feature.
but then specifying --features experimental
will not work directly, since it would not actually turn the nasl-builtin-russh
feature off, so we'd have to do --no-default-features --features experimental,and,all,other,features,that,are,in,default
which is very annoying.
@@ -97,6 +99,7 @@ members = [ | |||
[dev-dependencies] | |||
tracing-test = "0.2.5" | |||
criterion = "0" | |||
once_cell = "1.20.1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is needed to lock the test server behind a static mutex. I think we very likely indirectly depend on this anyways, since it is a pretty common library.
@@ -195,6 +195,7 @@ impl<'a> ArgsStruct<'a> { | |||
let mangled_ident = Ident::new(&mangled_name, ident.span()); | |||
let inner_call = self.get_inner_call_expr(&mangled_ident, asyncness); | |||
quote! { | |||
#[allow(clippy::too_many_arguments)] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added this because we cannot really do anything about the number of arguments in our builtin functions anyways and without it adding it in the macro, there is no way for the user of nasl_function!
to add this #[allow(...)]
attribute themselves.
/// `Some(string)` if constructed from either a `NaslValue::String` | ||
/// or `NaslValue::Data`. | ||
struct StringOrData(String); | ||
|
||
fn bytes_to_str(bytes: &[u8]) -> String { | ||
bytes.iter().map(|x| *x as char).collect::<String>() | ||
} | ||
|
||
impl<'a> FromNaslValue<'a> for StringOrData { | ||
fn from_nasl_value(value: &'a NaslValue) -> Result<Self, FunctionErrorKind> { | ||
match value { | ||
NaslValue::String(string) => Ok(Self(string.clone())), | ||
NaslValue::Data(buffer) => Ok(Self(bytes_to_str(buffer))), | ||
_ => Err(FunctionErrorKind::WrongArgument( | ||
"Expected string or byte buffer.".to_string(), | ||
)), | ||
} | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Although this will probably not exist if we ever autoconvert from bytes to string, this is quite useful for now, so I moved it to nasl/function/types.rs
|
||
|
||
### Mark as experimental | ||
|
||
When you have to mark your functions as experimental than you have to declare that crate as optional and add it to the experimental feature. | ||
|
||
|
||
```toml | ||
|
||
nasl-builtin-ssh = {path = "../nasl-builtin-ssh", optional = true} | ||
|
||
[features] | ||
experimental = ["nasl-builtin-ssh"] | ||
``` | ||
|
||
It is recommended to toggle on the crate name and not on experimental to also enable toggling those without using experimental. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I removed this because it is out of date, but I can also correct it and add it back in if that's what we want.
Jira: SC-1124
Todo:
Compatibility things that can become separate issues:
KeyPair
in russh implcall
in russh impl.