Package: release.debian.org Severity: important Tags: patch Being the maintainer of netkit-ftp-ssl, I request an unblocking of netkit-ftp-ssl in version 0.17.34+0.2-4. This upload resolves successfully the bug #854460 of severity 'important'.
The problem is interoperability with TLS-able FTP servers, like Proftpd, which mandate that the data connection reuse the session identity set by the control channel. The presently available version in testing, 0.17.34+0.2-3, is not able to fetch files or get listings with TLS protection due to an accidental inactivation of function SSL_copy_session_id(). This is a legacy function, not documented in any manual page, and only mentioned in one file 'ssleay.txt' of the openssl archive. The debdiff reactivates this function call, which was commented out by me due to a misunderstanding. In addition, it turns out to be decisive to forbid the use of libssl in version 1.1 for the binary package. The reason being that libssl (>= 1.1.0) only succeeds to reuse the session identity a single time, yes really a single time, with the present unintrusive and long time used solution. Therefore I had to change the build dependency to read libssl1.0-dev | libssl-dev (<< 1.1.0~) Both changes are necessary and they lead also to a package that can be built directly in Wheezy without any changes, allowing trivial backporting. The packages netkit-ftp-ssl, linux-ftpd-ssl and netkit-telnet-ssl have seen substantial improvement for certificate verification and identification for this Debian release, but only the binary ftp-ssl is affected by the present issue. Best regards, Mats Erik Andersson, DM
diff -Nru netkit-ftp-ssl-0.17.34+0.2/debian/changelog netkit-ftp-ssl-0.17.34+0.2/debian/changelog --- netkit-ftp-ssl-0.17.34+0.2/debian/changelog 2017-01-18 19:33:56.000000000 +0100 +++ netkit-ftp-ssl-0.17.34+0.2/debian/changelog 2017-02-08 18:39:46.000000000 +0100 @@ -1,3 +1,14 @@ +netkit-ftp-ssl (0.17.34+0.2-4) unstable; urgency=medium + + * Correctly reuse SSL session identity in data connection. + This suffices for libssl1.0, not for libssl1.1. (Closes: #854460) + + debian/patches/700_prefer_tls.diff: Reactivate commented out + function call to SSL_copy_session_id(). + + debian/control: Prefer libssl1.0-dev and condition libssl-dev + on "<< 1.1.0~" for trivial backporting. + + -- Mats Erik Andersson <mats.anders...@gisladisker.se> Wed, 08 Feb 2017 18:39:46 +0100 + netkit-ftp-ssl (0.17.34+0.2-3) unstable; urgency=low * Allow verification mode to print additional details about the diff -Nru netkit-ftp-ssl-0.17.34+0.2/debian/control netkit-ftp-ssl-0.17.34+0.2/debian/control --- netkit-ftp-ssl-0.17.34+0.2/debian/control 2017-01-10 15:37:21.000000000 +0100 +++ netkit-ftp-ssl-0.17.34+0.2/debian/control 2017-02-08 18:30:50.000000000 +0100 @@ -4,7 +4,7 @@ Maintainer: Mats Erik Andersson <mats.anders...@gisladisker.se> Uploaders: Alberto Gonzalez Iniesta <a...@inittab.org> Standards-Version: 3.9.8 -Build-Depends: debhelper (>= 9), libeditline-dev, libncurses5-dev, libssl-dev | libssl1.0-dev +Build-Depends: debhelper (>= 9), libeditline-dev, libncurses5-dev, libssl1.0-dev | libssl-dev (<< 1.1.0~) Package: ftp-ssl Architecture: any diff -Nru netkit-ftp-ssl-0.17.34+0.2/debian/patches/700_prefer_tls.diff netkit-ftp-ssl-0.17.34+0.2/debian/patches/700_prefer_tls.diff --- netkit-ftp-ssl-0.17.34+0.2/debian/patches/700_prefer_tls.diff 2017-01-18 19:33:41.000000000 +0100 +++ netkit-ftp-ssl-0.17.34+0.2/debian/patches/700_prefer_tls.diff 2017-02-08 15:39:49.000000000 +0100 @@ -23,7 +23,7 @@ . Author: Mats Erik Andersson <deb...@gisladisker.se> Forwarded: no -Last-Update: 2017-01-18 +Last-Update: 2017-02-07 diff -Naurp netkit-ftp-0.17.debian/ftp/cmds.c netkit-ftp-0.17/ftp/cmds.c --- netkit-ftp-0.17.debian/ftp/cmds.c 2016-12-23 00:05:51.820239257 +0100 @@ -190,20 +190,8 @@ .Xr ftpd 8 , diff -Naurp netkit-ftp-0.17.debian/ftp/ftp.c netkit-ftp-0.17/ftp/ftp.c --- netkit-ftp-0.17.debian/ftp/ftp.c 2016-12-23 00:05:52.380213160 +0100 -+++ netkit-ftp-0.17/ftp/ftp.c 2017-01-18 19:19:27.145786765 +0100 -@@ -1672,7 +1672,10 @@ dataconn(const char *lmode) - * this quick assuming Eric has this going - * okay! ;-) - */ -- SSL_copy_session_id(ssl_data_con,ssl_con); -+ /* MEA: Do not use deterministic session identities -+ * in a subordinate connection. -+ */ -+ //SSL_copy_session_id(ssl_data_con,ssl_con); - - /* we are doing I/O and not using select so - * it is "safe" to read ahead -@@ -1686,12 +1689,17 @@ dataconn(const char *lmode) ++++ netkit-ftp-0.17/ftp/ftp.c 2017-02-07 23:35:32.871433587 +0100 +@@ -1686,12 +1686,17 @@ dataconn(const char *lmode) if ((ret=SSL_connect(ssl_data_con))<=0) { static char errbuf[1024]; @@ -224,7 +212,7 @@ fflush(stderr); /* abort time methinks ... */ -@@ -2111,16 +2119,50 @@ printbytes(off_t bytes) +@@ -2111,16 +2116,50 @@ printbytes(off_t bytes) } #ifdef USE_SSL @@ -279,7 +267,7 @@ } if (n == ERROR) { /* do normal USER/PASS */ printf("SSL not available\n"); -@@ -2133,6 +2175,31 @@ ssl_init(void) +@@ -2133,6 +2172,31 @@ ssl_init(void) } } else if (n == CONTINUE || n == COMPLETE ) { /* do SSL */ @@ -311,7 +299,7 @@ ssl_con=(SSL *)SSL_new(ssl_ctx); if (!ssl_con) { ERR_print_errors_fp(stderr); -@@ -2142,37 +2209,60 @@ ssl_init(void) +@@ -2142,37 +2206,60 @@ ssl_init(void) SSL_set_fd(ssl_con,fileno(cout)); set_ssl_trace(ssl_con); @@ -381,7 +369,7 @@ fflush(stderr); ssl_active_flag=1; } -@@ -2187,6 +2277,8 @@ ssl_init(void) +@@ -2187,6 +2274,8 @@ ssl_init(void) fprintf(stderr, "Data connection security level refused.\n"); return ERROR; }