LINUX.ORG.RU

История изменений

Исправление edigaryev, (текущая версия) :

Патч уже обсудили?

X-Git-Url: http://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Ft1_lib.c;h=bcb99b819dadaebdf2c8f88d92ee9024c45f9df3;hp=a2e2475d136f33fa26958fd192b8ace158c4899d;hb=731f431497f463f3a2a97236fe0187b11c44aead;hpb=4e6c12f3088d3ee5747ec9e16d03fc671b8f40be;ds=sidebyside

diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
index a2e2475..bcb99b8 100644
--- a/ssl/t1_lib.c
+++ b/ssl/t1_lib.c
@@ -3969,16 +3969,20 @@ tls1_process_heartbeat(SSL *s)
 	unsigned int payload;
 	unsigned int padding = 16; /* Use minimum padding */
 
-	/* Read type and payload length first */
-	hbtype = *p++;
-	n2s(p, payload);
-	pl = p;
-
 	if (s->msg_callback)
 		s->msg_callback(0, s->version, TLS1_RT_HEARTBEAT,
 			&s->s3->rrec.data[0], s->s3->rrec.length,
 			s, s->msg_callback_arg);
 
+	/* Read type and payload length first */
+	if (1 + 2 + 16 > s->s3->rrec.length)
+		return 0; /* silently discard */
+	hbtype = *p++;
+	n2s(p, payload);
+	if (1 + 2 + payload + 16 > s->s3->rrec.length)
+		return 0; /* silently discard per RFC 6520 sec. 4 */
+	pl = p;
+
 	if (hbtype == TLS1_HB_REQUEST)
 		{
 		unsigned char *buffer, *bp;

1 + 2 + 16 > s->s3->rrec.length
1 + 2 + payload + 16

Банальное саботирование аудита. По-моему с таких вещей все и начинается. А ведь это не какая-то студенческая поделка, а библиотека, которой доверяют десятки/сотни тысяч людей.

UPD: на гитхабе таки обсудили.

Исправление edigaryev, :

Патч уже обсудили?

http://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=731f431497f463f3a2a97...

1 + 2 + 16 > s->s3->rrec.length
1 + 2 + payload + 16

Банальное саботирование аудита. По-моему с таких вещей все и начинается. А ведь это не какая-то студенческая поделка, а библиотека, которой доверяют десятки/сотни тысяч людей.

Исходная версия edigaryev, :

1 + 2 + 16 > s->s3->rrec.length

Патч уже обсудили?

http://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff;f=ssl/t1_lib.c;h=bcb9...

1 + 2 + 16 > s->s3->rrec.length
1 + 2 + payload + 16

Банальное саботирование аудита. По-моему с таких вещей все и начинается. А ведь это не какая-то студенческая поделка, а библиотека, которой доверяют десятки/сотни тысяч людей.