aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTBK <tbk@jjtc.eu>2019-04-12 06:55:27 +0200
committerLeonardo Arena <rnalrd@alpinelinux.org>2019-04-12 09:56:58 +0000
commitee43ff043bbe380b1070603146e8da09b08b6116 (patch)
tree177062b93a63bb4921a7498a00a2c77c34f7fee0
parent6b9690b74d52d6ca6defd00a06a897e862757dc7 (diff)
main/dropbear: upgrade to 2019.78
-rw-r--r--main/dropbear/APKBUILD15
-rw-r--r--main/dropbear/CVE-2018-15599.patch222
-rw-r--r--main/dropbear/dropbear-0.53.1-static_build_fix.patch2
-rw-r--r--main/dropbear/dropbear-options_sftp-server_path.patch2
4 files changed, 8 insertions, 233 deletions
diff --git a/main/dropbear/APKBUILD b/main/dropbear/APKBUILD
index 570be697301..46669578959 100644
--- a/main/dropbear/APKBUILD
+++ b/main/dropbear/APKBUILD
@@ -2,27 +2,25 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=dropbear
-pkgver=2018.76
-pkgrel=2
+pkgver=2019.78
+pkgrel=0
pkgdesc="small SSH 2 client/server designed for small memory environments"
url="http://matt.ucc.asn.au/dropbear/dropbear.html"
arch="all"
license="MIT"
-depends=""
options="!check"
makedepends="zlib-dev linux-headers"
subpackages="$pkgname-doc
$pkgname-openrc
$pkgname-convert:_convert
$pkgname-dbclient:_dbclient
- $pkgname-ssh:_ssh
+ $pkgname-ssh:_ssh:noarch
$pkgname-scp:_scp"
source="https://matt.ucc.asn.au/dropbear/releases/${pkgname}-${pkgver}.tar.bz2
dropbear.initd
dropbear.confd
dropbear-0.53.1-static_build_fix.patch
dropbear-options_sftp-server_path.patch
- CVE-2018-15599.patch
"
# secfixes:
@@ -84,9 +82,8 @@ _ssh() {
ln -s /usr/bin/dbclient "$subpkgdir"/usr/bin/ssh
}
-sha512sums="82323279f7e78c366ba1ea07ff242259132b2576122429f54326518dd6092aba8ae5de4a0b8a3cef7efc3507015741abe2ac23376c03b40b247527da7a88120e dropbear-2018.76.tar.bz2
+sha512sums="f667ba8dae17ea89c118642b566f2c134c71bfd0b8bacea5cf7ec87d75ac79bd7cd1864a8788367a89d30ee35427d389ef6416375adff6e83caae30ff3e0549f dropbear-2019.78.tar.bz2
9c55ab3d8b61955cde1ccc1b8acbd3d2ef123feb9489e92737304c35315d07b7f85fad8a12ac7b0ec2c1dcee3d76b8bc4aa18518f4ddd963917805db33e48826 dropbear.initd
83f2c1eaf7687917a4b2bae7d599d4378c4bd64f9126ba42fc5d235f2b3c9a474d1b3168d70ed64bb4101cc251d30bc9ae20604da9b5d819fcd635ee4d0ebb0f dropbear.confd
-c9b0f28eb9653de21da4e8646fc27870a156112bce3d8a13baa6154ebf4baada3dee4f75bd5fdf5b6cd24a43fb80fb009e917d139d9e65d35118b082de0ebfbf dropbear-0.53.1-static_build_fix.patch
-e11456ec3bc7e1265727c8921a6eb6151712a9a498c7768e2d4b7f9043256099457cebf29b2d47dd61eb260746d97f4b19e9429443bda1c3e441ea50ced79b48 dropbear-options_sftp-server_path.patch
-f204c2ee5aea8c0962573c4c49479ac17e9f6a9ab9ce21060a252b449323be841c1e64460f0e191fc72c6e213ffe829544418715d120a8f6c40de7b6374428e0 CVE-2018-15599.patch"
+413cef467db35ddc430a773af943ff650d51bdb6fb262dcabc625eb6c9f4170b5711998df5577dd05c60e21e0a9771bff022adc8273083b85a18f4d5659ffd50 dropbear-0.53.1-static_build_fix.patch
+9b078548c6850c9b45e9b68a8ebd746a4a0648607c8ad0cf4106f09f7a63768c83a3e4e4fbec38b665ae283503fd3cdd054775aa3c9afe02567be3e775aef50b dropbear-options_sftp-server_path.patch"
diff --git a/main/dropbear/CVE-2018-15599.patch b/main/dropbear/CVE-2018-15599.patch
deleted file mode 100644
index 963ed35bb9f..00000000000
--- a/main/dropbear/CVE-2018-15599.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-
-# HG changeset patch
-# User Matt Johnston <matt@ucc.asn.au>
-# Date 1535038992 -28800
-# Node ID 5d2d1021ca0006337af58859c861f2349715b73b
-# Parent cd23631dab5c653c66fe697e24f026aefbfcecb3
-Wait to fail invalid usernames
-
-diff -r cd23631dab5c -r 5d2d1021ca00 auth.h
---- a/auth.h Thu Aug 23 22:10:07 2018 +0800
-+++ b/auth.h Thu Aug 23 23:43:12 2018 +0800
-@@ -37,9 +37,9 @@
- void send_msg_userauth_failure(int partial, int incrfail);
- void send_msg_userauth_success(void);
- void send_msg_userauth_banner(const buffer *msg);
--void svr_auth_password(void);
--void svr_auth_pubkey(void);
--void svr_auth_pam(void);
-+void svr_auth_password(int valid_user);
-+void svr_auth_pubkey(int valid_user);
-+void svr_auth_pam(int valid_user);
-
- #if DROPBEAR_SVR_PUBKEY_OPTIONS_BUILT
- int svr_pubkey_allows_agentfwd(void);
-diff -r cd23631dab5c -r 5d2d1021ca00 svr-auth.c
---- a/svr-auth.c Thu Aug 23 22:10:07 2018 +0800
-+++ b/svr-auth.c Thu Aug 23 23:43:12 2018 +0800
-@@ -149,10 +149,8 @@
- if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
- strncmp(methodname, AUTH_METHOD_PASSWORD,
- AUTH_METHOD_PASSWORD_LEN) == 0) {
-- if (valid_user) {
-- svr_auth_password();
-- goto out;
-- }
-+ svr_auth_password(valid_user);
-+ goto out;
- }
- }
- #endif
-@@ -164,10 +162,8 @@
- if (methodlen == AUTH_METHOD_PASSWORD_LEN &&
- strncmp(methodname, AUTH_METHOD_PASSWORD,
- AUTH_METHOD_PASSWORD_LEN) == 0) {
-- if (valid_user) {
-- svr_auth_pam();
-- goto out;
-- }
-+ svr_auth_pam(valid_user);
-+ goto out;
- }
- }
- #endif
-@@ -177,12 +173,7 @@
- if (methodlen == AUTH_METHOD_PUBKEY_LEN &&
- strncmp(methodname, AUTH_METHOD_PUBKEY,
- AUTH_METHOD_PUBKEY_LEN) == 0) {
-- if (valid_user) {
-- svr_auth_pubkey();
-- } else {
-- /* pubkey has no failure delay */
-- send_msg_userauth_failure(0, 0);
-- }
-+ svr_auth_pubkey(valid_user);
- goto out;
- }
- #endif
-diff -r cd23631dab5c -r 5d2d1021ca00 svr-authpam.c
---- a/svr-authpam.c Thu Aug 23 22:10:07 2018 +0800
-+++ b/svr-authpam.c Thu Aug 23 23:43:12 2018 +0800
-@@ -178,13 +178,14 @@
- * Keyboard interactive would be a lot nicer, but since PAM is synchronous, it
- * gets very messy trying to send the interactive challenges, and read the
- * interactive responses, over the network. */
--void svr_auth_pam() {
-+void svr_auth_pam(int valid_user) {
-
- struct UserDataS userData = {NULL, NULL};
- struct pam_conv pamConv = {
- pamConvFunc,
- &userData /* submitted to pamvConvFunc as appdata_ptr */
- };
-+ const char* printable_user = NULL;
-
- pam_handle_t* pamHandlep = NULL;
-
-@@ -204,12 +205,23 @@
-
- password = buf_getstring(ses.payload, &passwordlen);
-
-+ /* We run the PAM conversation regardless of whether the username is valid
-+ in case the conversation function has an inherent delay.
-+ Use ses.authstate.username rather than ses.authstate.pw_name.
-+ After PAM succeeds we then check the valid_user flag too */
-+
- /* used to pass data to the PAM conversation function - don't bother with
- * strdup() etc since these are touched only by our own conversation
- * function (above) which takes care of it */
-- userData.user = ses.authstate.pw_name;
-+ userData.user = ses.authstate.username;
- userData.passwd = password;
-
-+ if (ses.authstate.pw_name) {
-+ printable_user = ses.authstate.pw_name;
-+ } else {
-+ printable_user = "<invalid username>";
-+ }
-+
- /* Init pam */
- if ((rc = pam_start("sshd", NULL, &pamConv, &pamHandlep)) != PAM_SUCCESS) {
- dropbear_log(LOG_WARNING, "pam_start() failed, rc=%d, %s",
-@@ -242,7 +254,7 @@
- rc, pam_strerror(pamHandlep, rc));
- dropbear_log(LOG_WARNING,
- "Bad PAM password attempt for '%s' from %s",
-- ses.authstate.pw_name,
-+ printable_user,
- svr_ses.addrstring);
- send_msg_userauth_failure(0, 1);
- goto cleanup;
-@@ -253,12 +265,18 @@
- rc, pam_strerror(pamHandlep, rc));
- dropbear_log(LOG_WARNING,
- "Bad PAM password attempt for '%s' from %s",
-- ses.authstate.pw_name,
-+ printable_user,
- svr_ses.addrstring);
- send_msg_userauth_failure(0, 1);
- goto cleanup;
- }
-
-+ if (!valid_user) {
-+ /* PAM auth succeeded but the username isn't allowed in for another reason
-+ (checkusername() failed) */
-+ send_msg_userauth_failure(0, 1);
-+ }
-+
- /* successful authentication */
- dropbear_log(LOG_NOTICE, "PAM password auth succeeded for '%s' from %s",
- ses.authstate.pw_name,
-diff -r cd23631dab5c -r 5d2d1021ca00 svr-authpasswd.c
---- a/svr-authpasswd.c Thu Aug 23 22:10:07 2018 +0800
-+++ b/svr-authpasswd.c Thu Aug 23 23:43:12 2018 +0800
-@@ -48,22 +48,14 @@
-
- /* Process a password auth request, sending success or failure messages as
- * appropriate */
--void svr_auth_password() {
-+void svr_auth_password(int valid_user) {
-
- char * passwdcrypt = NULL; /* the crypt from /etc/passwd or /etc/shadow */
- char * testcrypt = NULL; /* crypt generated from the user's password sent */
-- char * password;
-+ char * password = NULL;
- unsigned int passwordlen;
--
- unsigned int changepw;
-
-- passwdcrypt = ses.authstate.pw_passwd;
--
--#ifdef DEBUG_HACKCRYPT
-- /* debugging crypt for non-root testing with shadows */
-- passwdcrypt = DEBUG_HACKCRYPT;
--#endif
--
- /* check if client wants to change password */
- changepw = buf_getbool(ses.payload);
- if (changepw) {
-@@ -73,12 +65,21 @@
- }
-
- password = buf_getstring(ses.payload, &passwordlen);
--
-- /* the first bytes of passwdcrypt are the salt */
-- testcrypt = crypt(password, passwdcrypt);
-+ if (valid_user) {
-+ /* the first bytes of passwdcrypt are the salt */
-+ passwdcrypt = ses.authstate.pw_passwd;
-+ testcrypt = crypt(password, passwdcrypt);
-+ }
- m_burn(password, passwordlen);
- m_free(password);
-
-+ /* After we have got the payload contents we can exit if the username
-+ is invalid. Invalid users have already been logged. */
-+ if (!valid_user) {
-+ send_msg_userauth_failure(0, 1);
-+ return;
-+ }
-+
- if (testcrypt == NULL) {
- /* crypt() with an invalid salt like "!!" */
- dropbear_log(LOG_WARNING, "User account '%s' is locked",
-diff -r cd23631dab5c -r 5d2d1021ca00 svr-authpubkey.c
---- a/svr-authpubkey.c Thu Aug 23 22:10:07 2018 +0800
-+++ b/svr-authpubkey.c Thu Aug 23 23:43:12 2018 +0800
-@@ -79,7 +79,7 @@
-
- /* process a pubkey auth request, sending success or failure message as
- * appropriate */
--void svr_auth_pubkey() {
-+void svr_auth_pubkey(int valid_user) {
-
- unsigned char testkey; /* whether we're just checking if a key is usable */
- char* algo = NULL; /* pubkey algo */
-@@ -102,6 +102,15 @@
- keybloblen = buf_getint(ses.payload);
- keyblob = buf_getptr(ses.payload, keybloblen);
-
-+ if (!valid_user) {
-+ /* Return failure once we have read the contents of the packet
-+ required to validate a public key.
-+ Avoids blind user enumeration though it isn't possible to prevent
-+ testing for user existence if the public key is known */
-+ send_msg_userauth_failure(0, 0);
-+ goto out;
-+ }
-+
- /* check if the key is valid */
- if (checkpubkey(algo, algolen, keyblob, keybloblen) == DROPBEAR_FAILURE) {
- send_msg_userauth_failure(0, 0);
-
diff --git a/main/dropbear/dropbear-0.53.1-static_build_fix.patch b/main/dropbear/dropbear-0.53.1-static_build_fix.patch
index 0e0a91a27ed..6f13101bbef 100644
--- a/main/dropbear/dropbear-0.53.1-static_build_fix.patch
+++ b/main/dropbear/dropbear-0.53.1-static_build_fix.patch
@@ -15,7 +15,7 @@ Index: b/Makefile.in
===================================================================
--- a/Makefile.in
+++ b/Makefile.in
-@@ -77,7 +77,7 @@ STRIP=@STRIP@
+@@ -99,7 +99,7 @@ STRIP=@STRIP@
INSTALL=@INSTALL@
CPPFLAGS=@CPPFLAGS@
CFLAGS+=-I. -I$(srcdir) $(CPPFLAGS) @CFLAGS@
diff --git a/main/dropbear/dropbear-options_sftp-server_path.patch b/main/dropbear/dropbear-options_sftp-server_path.patch
index 9eee8d4436d..c16466e3e8f 100644
--- a/main/dropbear/dropbear-options_sftp-server_path.patch
+++ b/main/dropbear/dropbear-options_sftp-server_path.patch
@@ -1,6 +1,6 @@
--- a/default_options.h
+++ b/default_options.h
-@@ -250,7 +250,7 @@
+@@ -255,7 +255,7 @@
* OpenSSH), set the path below and set DROPBEAR_SFTPSERVER.
* The sftp-server program is not provided by Dropbear itself */
#define DROPBEAR_SFTPSERVER 1