Re: Target Error : accepting reflected CHAP_C value on mutual Authentication

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tejas,

On Thu, 2014-06-05 at 15:40 +0530, Tejas Vaykole wrote:
> Hi,
> The iSCSI target is expected to send a Login reject when it receives the 
> CHAP_C value which target or initiator
> has used in previous  attempts for authentication (as stated in RFC 
> 1994,section 4.1). However ,
> i find that LIO is accepting the reuse of CHAP_C values,and sends a 
> Login success which is an error.
>   RFC 1994 section 4.1
> -------------<snip>--------------
> The Challenge Value MUST be changed each time a Challenge is sent. 
> Originators MUST NOT reuse the CHAP
> challenge sent by the Responder for the other direction of a 
> bidirectional authentication. Responders MUST
> check for this condition and close the iSCSI TCP connection if it occurs.
> -------------<snip>--------------
> 
> i have attached the pcap for the same.
> 

Thanks for reporting.  I'm applying the following patch to address this
case.  Please test + confirm.

Thank you,

--nab

>From 57e9e7d1084bb8a364ef9d91d9531cd987ff9048 Mon Sep 17 00:00:00 2001
From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>
Date: Thu, 5 Jun 2014 18:08:57 -0700
Subject: [PATCH 19/19] iscsi-target: Reject mutual authentication with
 reflected CHAP_C

This patch adds an explicit check in chap_server_compute_md5() to ensure
the CHAP_C value received from the initiator during mutual authentication
does not match the original CHAP_C provided by the target.

This is in line with RFC-3720, section 8.2.1:

   Originators MUST NOT reuse the CHAP challenge sent by the Responder
   for the other direction of a bidirectional authentication.
   Responders MUST check for this condition and close the iSCSI TCP
   connection if it occurs.

Reported-by: Tejas Vaykole <tejas.vaykole@xxxxxxxxxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx # 3.1+
Signed-off-by: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>
---
 drivers/target/iscsi/iscsi_target_auth.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/target/iscsi/iscsi_target_auth.c b/drivers/target/iscsi/iscsi_target_auth.c
index ec00042..635fc5e 100644
--- a/drivers/target/iscsi/iscsi_target_auth.c
+++ b/drivers/target/iscsi/iscsi_target_auth.c
@@ -344,6 +344,16 @@ static int chap_server_compute_md5(
 		goto out;
 	}
 	/*
+	 * During mutual authentication, the CHAP_C generated by the
+	 * initiator must not match the original CHAP_C generated by
+	 * the target.
+	 */
+	if (!memcmp(challenge_binhex, chap->challenge, CHAP_CHALLENGE_LENGTH)) {
+		pr_err("initiator CHAP_C matches target CHAP_C, failing"
+		       " login attempt\n");
+		goto out;
+	}
+	/*
 	 * Generate CHAP_N and CHAP_R for mutual authentication.
 	 */
 	tfm = crypto_alloc_hash("md5", 0, CRYPTO_ALG_ASYNC);
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe target-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux