Verify TLS MAC even if padding is invalid to prevent timing attacks
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user