Commit b2ae35bb authored by berge's avatar berge
Browse files

Misc security issues fixed

parent f7db2132
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -395,8 +395,12 @@ module LibIpv6_Rfc4306Ikev2_Functions {
		var octetstring v_auxiliary;
		var octetstring v_auxiliary;
		var octetstring tmp;
		var octetstring tmp;
		
		
		
		log("iDi: " & oct2str(p_IkeSa.iDi));
		log("iDr: " & oct2str(p_IkeSa.iDr));
		if(p_initatorOrResponder == c_initiator)
		if(p_initatorOrResponder == c_initiator)
		{
		{
			log("initiator");
			v_auxiliary := p_IkeSa.nR &
			v_auxiliary := p_IkeSa.nR &
						   fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
						   fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
									       p_IkeSa.sevenSecrets.sK_pi,
									       p_IkeSa.sevenSecrets.sK_pi,
@@ -406,6 +410,7 @@ module LibIpv6_Rfc4306Ikev2_Functions {
		}
		}
		else // acts as responder
		else // acts as responder
		{
		{
			log("responder");
			v_auxiliary := p_IkeSa.nI &
			v_auxiliary := p_IkeSa.nI &
						   fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
						   fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
									       p_IkeSa.sevenSecrets.sK_pr,
									       p_IkeSa.sevenSecrets.sK_pr,
@@ -414,10 +419,11 @@ module LibIpv6_Rfc4306Ikev2_Functions {
										   p_IkeSa.iDr);
										   p_IkeSa.iDr);
		}
		}


		log("auxiliary: " & oct2str(v_auxiliary));
		tmp := fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
		tmp := fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
		PX_PRE_SHARED_KEY,
		PX_PRE_SHARED_KEY,
		c_authString);
		c_authString);

		log("tmp: " & oct2str(tmp));
		v_aUTH := fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
		v_aUTH := fx_pseudoRandom(p_IkeSa.ikePseudoRandomFunction,
								  tmp,
								  tmp,
								  (fx_ikev2HeaderToOct(p_IkeSa.ikev2Header) & 
								  (fx_ikev2HeaderToOct(p_IkeSa.ikev2Header) & 
@@ -695,6 +701,8 @@ module LibIpv6_Rfc4306Ikev2_Functions {
			v_ikeDst := valueof(p_addrTunnelStart);
			v_ikeDst := valueof(p_addrTunnelStart);
		}
		}


		vc_ikeSad[0].messageIdIut := vc_ikeSad[0].messageIdIut - 1;

		tc_wait.start;
		tc_wait.start;
		alt {
		alt {
			[]	ipPort.receive(mw_ikeSaInitReq(	v_ikeSrc,
			[]	ipPort.receive(mw_ikeSaInitReq(	v_ikeSrc,
@@ -709,7 +717,8 @@ module LibIpv6_Rfc4306Ikev2_Functions {
					(vc_ikeSad[0].spiInitiator == v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi) and
					(vc_ikeSad[0].spiInitiator == v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.initiatorSpi) and
					(vc_ikeSad[0].messageIdIut == v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageID)))
					(vc_ikeSad[0].messageIdIut == v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.messageID)))
					{ log("**** f_waitForIkeSaInitReq_cookie: ERROR: IKE header data different to original IKE_SA_INIT request **** ");
					{ log("**** f_waitForIkeSaInitReq_cookie: ERROR: IKE header data different to original IKE_SA_INIT request **** ");
					  v_ret := e_error;}
					  v_ret := e_error;					  
					  }
					
					
					v_nextPayload := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.nextPayload;
					v_nextPayload := v_ipv6Packet.ipv6Payload.ikeMsg.ikev2Header.nextPayload;
					v_ikePayloadList := v_ipv6Packet.ipv6Payload.ikeMsg.payloadList;
					v_ikePayloadList := v_ipv6Packet.ipv6Payload.ikeMsg.payloadList;
+2 −2
Original line number Original line Diff line number Diff line
@@ -664,7 +664,7 @@
				variant (nextPayload) "tag='nextPayload';";
				variant (nextPayload) "tag='nextPayload';";
				variant (payloadLength) "intTag='payloadLengthKE';";
				variant (payloadLength) "intTag='payloadLengthKE';";
				variant (spiSize) "intTag='spiSizeNotify';";
				variant (spiSize) "intTag='spiSizeNotify';";
				variant (spi) "length=getIntTag('spiSizeNotify')";
				variant (spi) "fieldPresent=getIntTag('spiSizeNotify')>0;length=getIntTag('spiSizeNotify')";
				variant (data) "length=(getIntTag('payloadLengthKE')-4-4-getIntTag('spiSizeNotify'))";
				variant (data) "length=(getIntTag('payloadLengthKE')-4-4-getIntTag('spiSizeNotify'))";
			}
			}


@@ -690,7 +690,7 @@
				variant (nextPayload) "tag='nextPayload';";
				variant (nextPayload) "tag='nextPayload';";
				variant (spiSize) "intTag='spiSizeDel';";
				variant (spiSize) "intTag='spiSizeDel';";
				variant (numberOfSpi) "intTag='numberOfSpiDel';";
				variant (numberOfSpi) "intTag='numberOfSpiDel';";
				variant (spis) "length=(getIntTag('spiSizeDel')*getIntTag('numberOfSpiDel'))";
				variant (spis) "fieldPresent=getIntTag('spiSizeDel')>0;length=(getIntTag('spiSizeDel')*getIntTag('numberOfSpiDel'))";
			}
			}


		} // end group IkeRfc4306DeletePayload		
		} // end group IkeRfc4306DeletePayload