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