import curl-7.76.1-14.el9
This commit is contained in:
parent
e1530b6a09
commit
431685105b
33
SOURCES/0007-curl-7.76.1-CVE-2021-22945.patch
Normal file
33
SOURCES/0007-curl-7.76.1-CVE-2021-22945.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From bb7619897e53ed424e0712ca5a4c93d5fae99715 Mon Sep 17 00:00:00 2001
|
||||
From: z2_ on hackerone <>
|
||||
Date: Tue, 24 Aug 2021 09:50:33 +0200
|
||||
Subject: [PATCH] mqtt: clear the leftovers pointer when sending succeeds
|
||||
|
||||
CVE-2021-22945
|
||||
|
||||
Bug: https://curl.se/docs/CVE-2021-22945.html
|
||||
|
||||
Upstream-commit: 43157490a5054bd24256fe12876931e8abc9df49
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
lib/mqtt.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/lib/mqtt.c b/lib/mqtt.c
|
||||
index d88fa73..f3fc045 100644
|
||||
--- a/lib/mqtt.c
|
||||
+++ b/lib/mqtt.c
|
||||
@@ -128,6 +128,10 @@ static CURLcode mqtt_send(struct Curl_easy *data,
|
||||
mq->sendleftovers = sendleftovers;
|
||||
mq->nsend = nsend;
|
||||
}
|
||||
+ else {
|
||||
+ mq->sendleftovers = NULL;
|
||||
+ mq->nsend = 0;
|
||||
+ }
|
||||
return result;
|
||||
}
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
331
SOURCES/0008-curl-7.76.1-CVE-2021-22946.patch
Normal file
331
SOURCES/0008-curl-7.76.1-CVE-2021-22946.patch
Normal file
@ -0,0 +1,331 @@
|
||||
From 64f8bdbf7da9e6b65716ce0d020c6c01d0aba77d Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Monnerat <patrick@monnerat.net>
|
||||
Date: Wed, 8 Sep 2021 11:56:22 +0200
|
||||
Subject: [PATCH] ftp,imap,pop3: do not ignore --ssl-reqd
|
||||
|
||||
In imap and pop3, check if TLS is required even when capabilities
|
||||
request has failed.
|
||||
|
||||
In ftp, ignore preauthentication (230 status of server greeting) if TLS
|
||||
is required.
|
||||
|
||||
Bug: https://curl.se/docs/CVE-2021-22946.html
|
||||
|
||||
CVE-2021-22946
|
||||
|
||||
Upstream-commit: 364f174724ef115c63d5e5dc1d3342c8a43b1cca
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
lib/ftp.c | 9 ++++---
|
||||
lib/imap.c | 24 ++++++++----------
|
||||
lib/pop3.c | 33 +++++++++++-------------
|
||||
tests/data/Makefile.inc | 2 ++
|
||||
tests/data/test984 | 56 +++++++++++++++++++++++++++++++++++++++++
|
||||
tests/data/test985 | 54 +++++++++++++++++++++++++++++++++++++++
|
||||
tests/data/test986 | 53 ++++++++++++++++++++++++++++++++++++++
|
||||
7 files changed, 195 insertions(+), 36 deletions(-)
|
||||
create mode 100644 tests/data/test984
|
||||
create mode 100644 tests/data/test985
|
||||
create mode 100644 tests/data/test986
|
||||
|
||||
diff --git a/lib/ftp.c b/lib/ftp.c
|
||||
index 5ef1e2e..71f998e 100644
|
||||
--- a/lib/ftp.c
|
||||
+++ b/lib/ftp.c
|
||||
@@ -2678,9 +2678,12 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
|
||||
/* we have now received a full FTP server response */
|
||||
switch(ftpc->state) {
|
||||
case FTP_WAIT220:
|
||||
- if(ftpcode == 230)
|
||||
- /* 230 User logged in - already! */
|
||||
- return ftp_state_user_resp(data, ftpcode, ftpc->state);
|
||||
+ if(ftpcode == 230) {
|
||||
+ /* 230 User logged in - already! Take as 220 if TLS required. */
|
||||
+ if(data->set.use_ssl <= CURLUSESSL_TRY ||
|
||||
+ conn->bits.ftp_use_control_ssl)
|
||||
+ return ftp_state_user_resp(data, ftpcode, ftpc->state);
|
||||
+ }
|
||||
else if(ftpcode != 220) {
|
||||
failf(data, "Got a %03d ftp-server response when 220 was expected",
|
||||
ftpcode);
|
||||
diff --git a/lib/imap.c b/lib/imap.c
|
||||
index e50d7fd..feb7445 100644
|
||||
--- a/lib/imap.c
|
||||
+++ b/lib/imap.c
|
||||
@@ -935,22 +935,18 @@ static CURLcode imap_state_capability_resp(struct Curl_easy *data,
|
||||
line += wordlen;
|
||||
}
|
||||
}
|
||||
- else if(imapcode == IMAP_RESP_OK) {
|
||||
- if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
|
||||
- /* We don't have a SSL/TLS connection yet, but SSL is requested */
|
||||
- if(imapc->tls_supported)
|
||||
- /* Switch to TLS connection now */
|
||||
- result = imap_perform_starttls(data, conn);
|
||||
- else if(data->set.use_ssl == CURLUSESSL_TRY)
|
||||
- /* Fallback and carry on with authentication */
|
||||
- result = imap_perform_authentication(data, conn);
|
||||
- else {
|
||||
- failf(data, "STARTTLS not supported.");
|
||||
- result = CURLE_USE_SSL_FAILED;
|
||||
- }
|
||||
+ else if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
|
||||
+ /* PREAUTH is not compatible with STARTTLS. */
|
||||
+ if(imapcode == IMAP_RESP_OK && imapc->tls_supported && !imapc->preauth) {
|
||||
+ /* Switch to TLS connection now */
|
||||
+ result = imap_perform_starttls(data, conn);
|
||||
}
|
||||
- else
|
||||
+ else if(data->set.use_ssl <= CURLUSESSL_TRY)
|
||||
result = imap_perform_authentication(data, conn);
|
||||
+ else {
|
||||
+ failf(data, "STARTTLS not available.");
|
||||
+ result = CURLE_USE_SSL_FAILED;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
result = imap_perform_authentication(data, conn);
|
||||
diff --git a/lib/pop3.c b/lib/pop3.c
|
||||
index 6168b12..7698d1c 100644
|
||||
--- a/lib/pop3.c
|
||||
+++ b/lib/pop3.c
|
||||
@@ -740,28 +740,23 @@ static CURLcode pop3_state_capa_resp(struct Curl_easy *data, int pop3code,
|
||||
}
|
||||
}
|
||||
}
|
||||
- else if(pop3code == '+') {
|
||||
- if(data->set.use_ssl && !conn->ssl[FIRSTSOCKET].use) {
|
||||
- /* We don't have a SSL/TLS connection yet, but SSL is requested */
|
||||
- if(pop3c->tls_supported)
|
||||
- /* Switch to TLS connection now */
|
||||
- result = pop3_perform_starttls(data, conn);
|
||||
- else if(data->set.use_ssl == CURLUSESSL_TRY)
|
||||
- /* Fallback and carry on with authentication */
|
||||
- result = pop3_perform_authentication(data, conn);
|
||||
- else {
|
||||
- failf(data, "STLS not supported.");
|
||||
- result = CURLE_USE_SSL_FAILED;
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- result = pop3_perform_authentication(data, conn);
|
||||
- }
|
||||
else {
|
||||
/* Clear text is supported when CAPA isn't recognised */
|
||||
- pop3c->authtypes |= POP3_TYPE_CLEARTEXT;
|
||||
+ if(pop3code != '+')
|
||||
+ pop3c->authtypes |= POP3_TYPE_CLEARTEXT;
|
||||
|
||||
- result = pop3_perform_authentication(data, conn);
|
||||
+ if(!data->set.use_ssl || conn->ssl[FIRSTSOCKET].use)
|
||||
+ result = pop3_perform_authentication(data, conn);
|
||||
+ else if(pop3code == '+' && pop3c->tls_supported)
|
||||
+ /* Switch to TLS connection now */
|
||||
+ result = pop3_perform_starttls(data, conn);
|
||||
+ else if(data->set.use_ssl <= CURLUSESSL_TRY)
|
||||
+ /* Fallback and carry on with authentication */
|
||||
+ result = pop3_perform_authentication(data, conn);
|
||||
+ else {
|
||||
+ failf(data, "STLS not supported.");
|
||||
+ result = CURLE_USE_SSL_FAILED;
|
||||
+ }
|
||||
}
|
||||
|
||||
return result;
|
||||
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
|
||||
index d083baf..163ce59 100644
|
||||
--- a/tests/data/Makefile.inc
|
||||
+++ b/tests/data/Makefile.inc
|
||||
@@ -117,6 +117,8 @@ test945 test946 test947 test948 test949 test950 test951 test952 test953 \
|
||||
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
|
||||
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
|
||||
\
|
||||
+test984 test985 test986 \
|
||||
+\
|
||||
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
|
||||
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
|
||||
test1016 test1017 test1018 test1019 test1020 test1021 test1022 test1023 \
|
||||
diff --git a/tests/data/test984 b/tests/data/test984
|
||||
new file mode 100644
|
||||
index 0000000..e573f23
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test984
|
||||
@@ -0,0 +1,56 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+IMAP
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+REPLY CAPABILITY A001 BAD Not implemented
|
||||
+</servercmd>
|
||||
+</reply>
|
||||
+
|
||||
+#
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+imap
|
||||
+</server>
|
||||
+ <name>
|
||||
+IMAP require STARTTLS with failing capabilities
|
||||
+ </name>
|
||||
+ <command>
|
||||
+imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -u user:secret --ssl-reqd
|
||||
+</command>
|
||||
+<file name="log/upload%TESTNUMBER">
|
||||
+Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
|
||||
+From: Fred Foobar <foobar@example.COM>
|
||||
+Subject: afternoon meeting
|
||||
+To: joe@example.com
|
||||
+Message-Id: <B27397-0100000@example.COM>
|
||||
+MIME-Version: 1.0
|
||||
+Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
|
||||
+
|
||||
+Hello Joe, do you think we can meet at 3:30 tomorrow?
|
||||
+</file>
|
||||
+</client>
|
||||
+
|
||||
+#
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 64 is CURLE_USE_SSL_FAILED
|
||||
+<errorcode>
|
||||
+64
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+A001 CAPABILITY
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
diff --git a/tests/data/test985 b/tests/data/test985
|
||||
new file mode 100644
|
||||
index 0000000..d0db4aa
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test985
|
||||
@@ -0,0 +1,54 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+POP3
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+REPLY CAPA -ERR Not implemented
|
||||
+</servercmd>
|
||||
+<data nocheck="yes">
|
||||
+From: me@somewhere
|
||||
+To: fake@nowhere
|
||||
+
|
||||
+body
|
||||
+
|
||||
+--
|
||||
+ yours sincerely
|
||||
+</data>
|
||||
+</reply>
|
||||
+
|
||||
+#
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+pop3
|
||||
+</server>
|
||||
+ <name>
|
||||
+POP3 require STARTTLS with failing capabilities
|
||||
+ </name>
|
||||
+ <command>
|
||||
+pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret --ssl-reqd
|
||||
+ </command>
|
||||
+</client>
|
||||
+
|
||||
+#
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 64 is CURLE_USE_SSL_FAILED
|
||||
+<errorcode>
|
||||
+64
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+CAPA
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
diff --git a/tests/data/test986 b/tests/data/test986
|
||||
new file mode 100644
|
||||
index 0000000..a709437
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test986
|
||||
@@ -0,0 +1,53 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+FTP
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+REPLY welcome 230 Welcome
|
||||
+REPLY AUTH 500 unknown command
|
||||
+</servercmd>
|
||||
+</reply>
|
||||
+
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+ftp
|
||||
+</server>
|
||||
+ <name>
|
||||
+FTP require STARTTLS while preauthenticated
|
||||
+ </name>
|
||||
+<file name="log/test%TESTNUMBER.txt">
|
||||
+data
|
||||
+ to
|
||||
+ see
|
||||
+that FTPS
|
||||
+works
|
||||
+ so does it?
|
||||
+</file>
|
||||
+ <command>
|
||||
+--ssl-reqd --ftp-ssl-control ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt -u user:secret
|
||||
+</command>
|
||||
+</client>
|
||||
+
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 64 is CURLE_USE_SSL_FAILED
|
||||
+<errorcode>
|
||||
+64
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+AUTH SSL
|
||||
+AUTH TLS
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
--
|
||||
2.31.1
|
||||
|
354
SOURCES/0009-curl-7.76.1-CVE-2021-22947.patch
Normal file
354
SOURCES/0009-curl-7.76.1-CVE-2021-22947.patch
Normal file
@ -0,0 +1,354 @@
|
||||
From a1ec463c8207bde97b3575d12e396e999a55a8d0 Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Monnerat <patrick@monnerat.net>
|
||||
Date: Tue, 7 Sep 2021 13:26:42 +0200
|
||||
Subject: [PATCH] ftp,imap,pop3,smtp: reject STARTTLS server response
|
||||
pipelining
|
||||
|
||||
If a server pipelines future responses within the STARTTLS response, the
|
||||
former are preserved in the pingpong cache across TLS negotiation and
|
||||
used as responses to the encrypted commands.
|
||||
|
||||
This fix detects pipelined STARTTLS responses and rejects them with an
|
||||
error.
|
||||
|
||||
CVE-2021-22947
|
||||
|
||||
Bug: https://curl.se/docs/CVE-2021-22947.html
|
||||
|
||||
Upstream-commit: 8ef147c43646e91fdaad5d0e7b60351f842e5c68
|
||||
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
||||
---
|
||||
lib/ftp.c | 3 +++
|
||||
lib/imap.c | 4 +++
|
||||
lib/pop3.c | 4 +++
|
||||
lib/smtp.c | 4 +++
|
||||
tests/data/Makefile.inc | 2 +-
|
||||
tests/data/test980 | 52 ++++++++++++++++++++++++++++++++++++
|
||||
tests/data/test981 | 59 +++++++++++++++++++++++++++++++++++++++++
|
||||
tests/data/test982 | 57 +++++++++++++++++++++++++++++++++++++++
|
||||
tests/data/test983 | 52 ++++++++++++++++++++++++++++++++++++
|
||||
9 files changed, 236 insertions(+), 1 deletion(-)
|
||||
create mode 100644 tests/data/test980
|
||||
create mode 100644 tests/data/test981
|
||||
create mode 100644 tests/data/test982
|
||||
create mode 100644 tests/data/test983
|
||||
|
||||
diff --git a/lib/ftp.c b/lib/ftp.c
|
||||
index 71f998e..e920138 100644
|
||||
--- a/lib/ftp.c
|
||||
+++ b/lib/ftp.c
|
||||
@@ -2740,6 +2740,9 @@ static CURLcode ftp_statemachine(struct Curl_easy *data,
|
||||
case FTP_AUTH:
|
||||
/* we have gotten the response to a previous AUTH command */
|
||||
|
||||
+ if(pp->cache_size)
|
||||
+ return CURLE_WEIRD_SERVER_REPLY; /* Forbid pipelining in response. */
|
||||
+
|
||||
/* RFC2228 (page 5) says:
|
||||
*
|
||||
* If the server is willing to accept the named security mechanism,
|
||||
diff --git a/lib/imap.c b/lib/imap.c
|
||||
index feb7445..09bc5d6 100644
|
||||
--- a/lib/imap.c
|
||||
+++ b/lib/imap.c
|
||||
@@ -964,6 +964,10 @@ static CURLcode imap_state_starttls_resp(struct Curl_easy *data,
|
||||
|
||||
(void)instate; /* no use for this yet */
|
||||
|
||||
+ /* Pipelining in response is forbidden. */
|
||||
+ if(data->conn->proto.imapc.pp.cache_size)
|
||||
+ return CURLE_WEIRD_SERVER_REPLY;
|
||||
+
|
||||
if(imapcode != IMAP_RESP_OK) {
|
||||
if(data->set.use_ssl != CURLUSESSL_TRY) {
|
||||
failf(data, "STARTTLS denied");
|
||||
diff --git a/lib/pop3.c b/lib/pop3.c
|
||||
index 7698d1c..dccfced 100644
|
||||
--- a/lib/pop3.c
|
||||
+++ b/lib/pop3.c
|
||||
@@ -771,6 +771,10 @@ static CURLcode pop3_state_starttls_resp(struct Curl_easy *data,
|
||||
CURLcode result = CURLE_OK;
|
||||
(void)instate; /* no use for this yet */
|
||||
|
||||
+ /* Pipelining in response is forbidden. */
|
||||
+ if(data->conn->proto.pop3c.pp.cache_size)
|
||||
+ return CURLE_WEIRD_SERVER_REPLY;
|
||||
+
|
||||
if(pop3code != '+') {
|
||||
if(data->set.use_ssl != CURLUSESSL_TRY) {
|
||||
failf(data, "STARTTLS denied");
|
||||
diff --git a/lib/smtp.c b/lib/smtp.c
|
||||
index 1defb25..1f89777 100644
|
||||
--- a/lib/smtp.c
|
||||
+++ b/lib/smtp.c
|
||||
@@ -834,6 +834,10 @@ static CURLcode smtp_state_starttls_resp(struct Curl_easy *data,
|
||||
CURLcode result = CURLE_OK;
|
||||
(void)instate; /* no use for this yet */
|
||||
|
||||
+ /* Pipelining in response is forbidden. */
|
||||
+ if(data->conn->proto.smtpc.pp.cache_size)
|
||||
+ return CURLE_WEIRD_SERVER_REPLY;
|
||||
+
|
||||
if(smtpcode != 220) {
|
||||
if(data->set.use_ssl != CURLUSESSL_TRY) {
|
||||
failf(data, "STARTTLS denied, code %d", smtpcode);
|
||||
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
|
||||
index 163ce59..42b0569 100644
|
||||
--- a/tests/data/Makefile.inc
|
||||
+++ b/tests/data/Makefile.inc
|
||||
@@ -117,7 +117,7 @@ test945 test946 test947 test948 test949 test950 test951 test952 test953 \
|
||||
test954 test955 test956 test957 test958 test959 test960 test961 test962 \
|
||||
test963 test964 test965 test966 test967 test968 test969 test970 test971 \
|
||||
\
|
||||
-test984 test985 test986 \
|
||||
+test980 test981 test982 test983 test984 test985 test986 \
|
||||
\
|
||||
test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
|
||||
test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
|
||||
diff --git a/tests/data/test980 b/tests/data/test980
|
||||
new file mode 100644
|
||||
index 0000000..97567f8
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test980
|
||||
@@ -0,0 +1,52 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+SMTP
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+CAPA STARTTLS
|
||||
+AUTH PLAIN
|
||||
+REPLY STARTTLS 454 currently unavailable\r\n235 Authenticated\r\n250 2.1.0 Sender ok\r\n250 2.1.5 Recipient ok\r\n354 Enter mail\r\n250 2.0.0 Accepted
|
||||
+REPLY AUTH 535 5.7.8 Authentication credentials invalid
|
||||
+</servercmd>
|
||||
+</reply>
|
||||
+
|
||||
+#
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+smtp
|
||||
+</server>
|
||||
+ <name>
|
||||
+SMTP STARTTLS pipelined server response
|
||||
+ </name>
|
||||
+<stdin>
|
||||
+mail body
|
||||
+</stdin>
|
||||
+ <command>
|
||||
+smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -u user:secret --ssl --sasl-ir -T -
|
||||
+</command>
|
||||
+</client>
|
||||
+
|
||||
+#
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 8 is CURLE_WEIRD_SERVER_REPLY
|
||||
+<errorcode>
|
||||
+8
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+EHLO %TESTNUMBER
|
||||
+STARTTLS
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
diff --git a/tests/data/test981 b/tests/data/test981
|
||||
new file mode 100644
|
||||
index 0000000..2b98ce4
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test981
|
||||
@@ -0,0 +1,59 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+IMAP
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+CAPA STARTTLS
|
||||
+REPLY STARTTLS A002 BAD currently unavailable\r\nA003 OK Authenticated\r\nA004 OK Accepted
|
||||
+REPLY LOGIN A003 BAD Authentication credentials invalid
|
||||
+</servercmd>
|
||||
+</reply>
|
||||
+
|
||||
+#
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+imap
|
||||
+</server>
|
||||
+ <name>
|
||||
+IMAP STARTTLS pipelined server response
|
||||
+ </name>
|
||||
+ <command>
|
||||
+imap://%HOSTIP:%IMAPPORT/%TESTNUMBER -T log/upload%TESTNUMBER -u user:secret --ssl
|
||||
+</command>
|
||||
+<file name="log/upload%TESTNUMBER">
|
||||
+Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
|
||||
+From: Fred Foobar <foobar@example.COM>
|
||||
+Subject: afternoon meeting
|
||||
+To: joe@example.com
|
||||
+Message-Id: <B27397-0100000@example.COM>
|
||||
+MIME-Version: 1.0
|
||||
+Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
|
||||
+
|
||||
+Hello Joe, do you think we can meet at 3:30 tomorrow?
|
||||
+</file>
|
||||
+</client>
|
||||
+
|
||||
+#
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 8 is CURLE_WEIRD_SERVER_REPLY
|
||||
+<errorcode>
|
||||
+8
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+A001 CAPABILITY
|
||||
+A002 STARTTLS
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
diff --git a/tests/data/test982 b/tests/data/test982
|
||||
new file mode 100644
|
||||
index 0000000..9e07cc0
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test982
|
||||
@@ -0,0 +1,57 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+POP3
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+CAPA STLS USER
|
||||
+REPLY STLS -ERR currently unavailable\r\n+OK user accepted\r\n+OK authenticated
|
||||
+REPLY PASS -ERR Authentication credentials invalid
|
||||
+</servercmd>
|
||||
+<data nocheck="yes">
|
||||
+From: me@somewhere
|
||||
+To: fake@nowhere
|
||||
+
|
||||
+body
|
||||
+
|
||||
+--
|
||||
+ yours sincerely
|
||||
+</data>
|
||||
+</reply>
|
||||
+
|
||||
+#
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+pop3
|
||||
+</server>
|
||||
+ <name>
|
||||
+POP3 STARTTLS pipelined server response
|
||||
+ </name>
|
||||
+ <command>
|
||||
+pop3://%HOSTIP:%POP3PORT/%TESTNUMBER -u user:secret --ssl
|
||||
+ </command>
|
||||
+</client>
|
||||
+
|
||||
+#
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 8 is CURLE_WEIRD_SERVER_REPLY
|
||||
+<errorcode>
|
||||
+8
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+CAPA
|
||||
+STLS
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
diff --git a/tests/data/test983 b/tests/data/test983
|
||||
new file mode 100644
|
||||
index 0000000..300ec45
|
||||
--- /dev/null
|
||||
+++ b/tests/data/test983
|
||||
@@ -0,0 +1,52 @@
|
||||
+<testcase>
|
||||
+<info>
|
||||
+<keywords>
|
||||
+FTP
|
||||
+STARTTLS
|
||||
+</keywords>
|
||||
+</info>
|
||||
+
|
||||
+#
|
||||
+# Server-side
|
||||
+<reply>
|
||||
+<servercmd>
|
||||
+REPLY AUTH 500 unknown command\r\n500 unknown command\r\n331 give password\r\n230 Authenticated\r\n257 "/"\r\n200 OK\r\n200 OK\r\n200 OK\r\n226 Transfer complete
|
||||
+REPLY PASS 530 Login incorrect
|
||||
+</servercmd>
|
||||
+</reply>
|
||||
+
|
||||
+# Client-side
|
||||
+<client>
|
||||
+<features>
|
||||
+SSL
|
||||
+</features>
|
||||
+<server>
|
||||
+ftp
|
||||
+</server>
|
||||
+ <name>
|
||||
+FTP STARTTLS pipelined server response
|
||||
+ </name>
|
||||
+<file name="log/test%TESTNUMBER.txt">
|
||||
+data
|
||||
+ to
|
||||
+ see
|
||||
+that FTPS
|
||||
+works
|
||||
+ so does it?
|
||||
+</file>
|
||||
+ <command>
|
||||
+--ssl --ftp-ssl-control ftp://%HOSTIP:%FTPPORT/%TESTNUMBER -T log/test%TESTNUMBER.txt -u user:secret -P %CLIENTIP
|
||||
+</command>
|
||||
+</client>
|
||||
+
|
||||
+# Verify data after the test has been "shot"
|
||||
+<verify>
|
||||
+# 8 is CURLE_WEIRD_SERVER_REPLY
|
||||
+<errorcode>
|
||||
+8
|
||||
+</errorcode>
|
||||
+<protocol>
|
||||
+AUTH SSL
|
||||
+</protocol>
|
||||
+</verify>
|
||||
+</testcase>
|
||||
--
|
||||
2.31.1
|
||||
|
128
SPECS/curl.spec
128
SPECS/curl.spec
@ -1,7 +1,7 @@
|
||||
Summary: A utility for getting files from remote servers (FTP, HTTP, and others)
|
||||
Name: curl
|
||||
Version: 7.76.1
|
||||
Release: 11%{?dist}
|
||||
Release: 14%{?dist}
|
||||
License: MIT
|
||||
Source: https://curl.se/download/%{name}-%{version}.tar.xz
|
||||
|
||||
@ -23,6 +23,15 @@ Patch5: 0005-curl-7.76.1-CVE-2021-22924.patch
|
||||
# fix TELNET stack contents disclosure again (CVE-2021-22925)
|
||||
Patch6: 0006-curl-7.76.1-CVE-2021-22925.patch
|
||||
|
||||
# fix use-after-free and double-free in MQTT sending (CVE-2021-22945)
|
||||
Patch7: 0007-curl-7.76.1-CVE-2021-22945.patch
|
||||
|
||||
# fix protocol downgrade required TLS bypass (CVE-2021-22946)
|
||||
Patch8: 0008-curl-7.76.1-CVE-2021-22946.patch
|
||||
|
||||
# fix STARTTLS protocol injection via MITM (CVE-2021-22947)
|
||||
Patch9: 0009-curl-7.76.1-CVE-2021-22947.patch
|
||||
|
||||
# patch making libcurl multilib ready
|
||||
Patch101: 0101-curl-7.32.0-multilib.patch
|
||||
|
||||
@ -204,6 +213,9 @@ be installed.
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
|
||||
# Fedora patches
|
||||
%patch101 -p1
|
||||
@ -247,15 +259,17 @@ autoreconf -fiv
|
||||
|
||||
%build
|
||||
mkdir build-{full,minimal}
|
||||
export common_configure_opts=" \
|
||||
--cache-file=../config.cache \
|
||||
--disable-static \
|
||||
--enable-symbol-hiding \
|
||||
--enable-ipv6 \
|
||||
--enable-threaded-resolver \
|
||||
--without-libmetalink \
|
||||
--with-gssapi \
|
||||
--with-nghttp2 \
|
||||
export common_configure_opts=" \
|
||||
--cache-file=../config.cache \
|
||||
--disable-hsts \
|
||||
--disable-static \
|
||||
--enable-ipv6 \
|
||||
--enable-symbol-hiding \
|
||||
--enable-threaded-resolver \
|
||||
--without-libmetalink \
|
||||
--without-zstd \
|
||||
--with-gssapi \
|
||||
--with-nghttp2 \
|
||||
--with-ssl --with-ca-bundle=%{_sysconfdir}/pki/tls/certs/ca-bundle.crt"
|
||||
|
||||
%global _configure ../configure
|
||||
@ -263,26 +277,52 @@ export common_configure_opts=" \
|
||||
# configure minimal build
|
||||
(
|
||||
cd build-minimal
|
||||
%configure $common_configure_opts \
|
||||
--disable-ldap \
|
||||
--disable-ldaps \
|
||||
--disable-manual \
|
||||
--without-brotli \
|
||||
--without-libidn2 \
|
||||
--without-libpsl \
|
||||
%configure $common_configure_opts \
|
||||
--disable-dict \
|
||||
--disable-gopher \
|
||||
--disable-imap \
|
||||
--disable-ldap \
|
||||
--disable-ldaps \
|
||||
--disable-manual \
|
||||
--disable-mqtt \
|
||||
--disable-ntlm \
|
||||
--disable-ntlm-wb \
|
||||
--disable-pop3 \
|
||||
--disable-rtsp \
|
||||
--disable-smb \
|
||||
--disable-smtp \
|
||||
--disable-telnet \
|
||||
--disable-tftp \
|
||||
--disable-tls-srp \
|
||||
--without-brotli \
|
||||
--without-libidn2 \
|
||||
--without-libpsl \
|
||||
--without-libssh
|
||||
)
|
||||
|
||||
# configure full build
|
||||
(
|
||||
cd build-full
|
||||
%configure $common_configure_opts \
|
||||
--enable-ldap \
|
||||
--enable-ldaps \
|
||||
--enable-manual \
|
||||
--with-brotli \
|
||||
--with-libidn2 \
|
||||
--with-libpsl \
|
||||
%configure $common_configure_opts \
|
||||
--enable-dict \
|
||||
--enable-gopher \
|
||||
--enable-imap \
|
||||
--enable-ldap \
|
||||
--enable-ldaps \
|
||||
--enable-manual \
|
||||
--enable-mqtt \
|
||||
--enable-ntlm \
|
||||
--enable-ntlm-wb \
|
||||
--enable-pop3 \
|
||||
--enable-rtsp \
|
||||
--enable-smb \
|
||||
--enable-smtp \
|
||||
--enable-telnet \
|
||||
--enable-tftp \
|
||||
--enable-tls-srp \
|
||||
--with-brotli \
|
||||
--with-libidn2 \
|
||||
--with-libpsl \
|
||||
--with-libssh
|
||||
)
|
||||
|
||||
@ -295,20 +335,33 @@ sed -e 's/^runpath_var=.*/runpath_var=/' \
|
||||
%make_build V=1 -C build-full
|
||||
|
||||
%check
|
||||
# we have to override LD_LIBRARY_PATH because we eliminated rpath
|
||||
LD_LIBRARY_PATH="${PWD}/build-full/lib/.libs"
|
||||
export LD_LIBRARY_PATH
|
||||
|
||||
# compile upstream test-cases
|
||||
cd build-full/tests
|
||||
%make_build V=1
|
||||
%make_build V=1 -C build-minimal/tests
|
||||
%make_build V=1 -C build-full/tests
|
||||
|
||||
# relax crypto policy for the test-suite to make it pass again (#1610888)
|
||||
export OPENSSL_SYSTEM_CIPHERS_OVERRIDE=XXX
|
||||
export OPENSSL_CONF=
|
||||
|
||||
# run the upstream test-suite
|
||||
srcdir=../../tests perl -I../../tests ../../tests/runtests.pl -a -p -v '!flaky'
|
||||
# make runtests.pl work for out-of-tree builds
|
||||
export srcdir=../../tests
|
||||
|
||||
# prevent valgrind from being extremely slow (#1662656)
|
||||
# https://fedoraproject.org/wiki/Changes/DebuginfodByDefault
|
||||
unset DEBUGINFOD_URLS
|
||||
|
||||
# run the upstream test-suite for both curl-minimal and curl-full
|
||||
for size in minimal full; do (
|
||||
cd build-${size}
|
||||
|
||||
# we have to override LD_LIBRARY_PATH because we eliminated rpath
|
||||
export LD_LIBRARY_PATH="${PWD}/lib/.libs"
|
||||
|
||||
cd tests
|
||||
perl -I../../tests ../../tests/runtests.pl -a -p -v '!flaky'
|
||||
)
|
||||
done
|
||||
|
||||
|
||||
%install
|
||||
# install and rename the library that will be packaged as libcurl-minimal
|
||||
@ -383,6 +436,17 @@ rm -f ${RPM_BUILD_ROOT}%{_libdir}/libcurl.la
|
||||
%{_libdir}/libcurl.so.4.[0-9].[0-9].minimal
|
||||
|
||||
%changelog
|
||||
* Tue Oct 26 2021 Kamil Dudka <kdudka@redhat.com> - 7.76.1-14
|
||||
- re-disable HSTS in libcurl as an experimental feature (#2005874)
|
||||
|
||||
* Mon Oct 04 2021 Kamil Dudka <kdudka@redhat.com> - 7.76.1-13
|
||||
- disable more protocols and features in libcurl-minimal (#2005874)
|
||||
|
||||
* Fri Sep 17 2021 Kamil Dudka <kdudka@redhat.com> - 7.76.1-12
|
||||
- fix STARTTLS protocol injection via MITM (CVE-2021-22947)
|
||||
- fix protocol downgrade required TLS bypass (CVE-2021-22946)
|
||||
- fix use-after-free and double-free in MQTT sending (CVE-2021-22945)
|
||||
|
||||
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 7.76.1-11
|
||||
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
|
||||
Related: rhbz#1991688
|
||||
|
Loading…
Reference in New Issue
Block a user