Verify TLS MAC even if padding is invalid to prevent timing attacks

This commit is contained in:
Martin Willi
2011-09-28 17:16:09 +02:00
parent 21ee300d5c
commit b79bb79a66
+4 -6
View File
@@ -154,13 +154,11 @@ METHOD(tls_protection_t, process, status_t,
} }
padding_length = data.ptr[data.len - 1]; padding_length = data.ptr[data.len - 1];
if (padding_length >= data.len) if (padding_length < data.len)
{ { /* remove padding if it looks valid. Continue with no padding, try
DBG1(DBG_TLS, "invalid TLS record padding"); * to prevent timing attacks. */
this->alert->add(this->alert, TLS_FATAL, TLS_BAD_RECORD_MAC); data.len -= padding_length + 1;
return NEED_MORE;
} }
data.len -= padding_length + 1;
} }
if (this->signer_in) if (this->signer_in)
{ {