Skip to content

Commit e2fc508

Browse files
jiaxinwuLaszlo Ersek
authored and
Laszlo Ersek
committed
NetworkPkg/HttpDxe: Set the HostName for the verification (CVE-2019-14553)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=960 CVE: CVE-2019-14553 Set the HostName by consuming TLS protocol to enable the host name check so as to avoid the potential Man-In-The-Middle attack. Signed-off-by: Wu Jiaxin <[email protected]> Reviewed-by: Ye Ting <[email protected]> Reviewed-by: Long Qin <[email protected]> Reviewed-by: Fu Siyuan <[email protected]> Acked-by: Laszlo Ersek <[email protected]> Message-Id: <[email protected]> Cc: David Woodhouse <[email protected]> Cc: Jian J Wang <[email protected]> Cc: Jiaxin Wu <[email protected]> Cc: Sivaraman Nainar <[email protected]> Cc: Xiaoyu Lu <[email protected]> Signed-off-by: Laszlo Ersek <[email protected]>
1 parent 703e7ab commit e2fc508

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

NetworkPkg/HttpDxe/HttpProto.h

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ typedef struct {
8282
EFI_TLS_VERSION Version;
8383
EFI_TLS_CONNECTION_END ConnectionEnd;
8484
EFI_TLS_VERIFY VerifyMethod;
85+
EFI_TLS_VERIFY_HOST VerifyHost;
8586
EFI_TLS_SESSION_STATE SessionState;
8687
} TLS_CONFIG_DATA;
8788

NetworkPkg/HttpDxe/HttpsSupport.c

+17-4
Original file line numberDiff line numberDiff line change
@@ -623,13 +623,16 @@ TlsConfigureSession (
623623
//
624624
// TlsConfigData initialization
625625
//
626-
HttpInstance->TlsConfigData.ConnectionEnd = EfiTlsClient;
627-
HttpInstance->TlsConfigData.VerifyMethod = EFI_TLS_VERIFY_PEER;
628-
HttpInstance->TlsConfigData.SessionState = EfiTlsSessionNotStarted;
626+
HttpInstance->TlsConfigData.ConnectionEnd = EfiTlsClient;
627+
HttpInstance->TlsConfigData.VerifyMethod = EFI_TLS_VERIFY_PEER;
628+
HttpInstance->TlsConfigData.VerifyHost.Flags = EFI_TLS_VERIFY_FLAG_NO_WILDCARDS;
629+
HttpInstance->TlsConfigData.VerifyHost.HostName = HttpInstance->RemoteHost;
630+
HttpInstance->TlsConfigData.SessionState = EfiTlsSessionNotStarted;
629631

630632
//
631633
// EfiTlsConnectionEnd,
632-
// EfiTlsVerifyMethod
634+
// EfiTlsVerifyMethod,
635+
// EfiTlsVerifyHost,
633636
// EfiTlsSessionState
634637
//
635638
Status = HttpInstance->Tls->SetSessionData (
@@ -652,6 +655,16 @@ TlsConfigureSession (
652655
return Status;
653656
}
654657

658+
Status = HttpInstance->Tls->SetSessionData (
659+
HttpInstance->Tls,
660+
EfiTlsVerifyHost,
661+
&HttpInstance->TlsConfigData.VerifyHost,
662+
sizeof (EFI_TLS_VERIFY_HOST)
663+
);
664+
if (EFI_ERROR (Status)) {
665+
return Status;
666+
}
667+
655668
Status = HttpInstance->Tls->SetSessionData (
656669
HttpInstance->Tls,
657670
EfiTlsSessionState,

0 commit comments

Comments
 (0)