[Openswan Users] Pluto dies doing keyexchange with Win2K
Paul Hampson
Paul.Hampson at PObox.com
Tue Mar 15 02:33:22 CET 2005
On Mon, Mar 14, 2005 at 09:52:31AM +0100, Paul Wouters wrote:
> On Mon, 14 Mar 2005, Paul Hampson wrote:
> >The setup is using X.509 certificates, and the server is using openswan
> >2.3.0-2 from Debian with the Linux 2.6 built-in IPSec.
> >#7 0x08059064 in passert_fail (pred_str=0x80c8940 "STATE_IKE_FLOOR <=
> >from_state && from_state <= STATE_IKE_ROOF", file_str=0x80c7954 "demux.c",
> >line_no=1799)
> I believe this is fixed in head. We're waiting with releasing a 2.3.1 until
> another bug (the rekey
> bug) has been fixed.
OK, I grabbed what I think is current CVS over rsync, un-rcs'd it and
with a patch, was able to build a Debian package and install it.
However, I got a different problem. Another failed passert, but this one
gracefully aborts, rather than segfaulting. Which is nice. ^_^
(Some Win2K client as before. I haven't tested that the Linux client
still works.)
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7e80805 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7e81f82 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0x08057cc9 in passert_fail (pred_str=0x80bfda0 "st->st_new_iv_len >= e->enc_blocksize", file_str=0x80bfcf8 "crypto.c", line_no=219) at log.c:598
#4 0x08054ac0 in crypto_cbc_encrypt (e=0x80ed140, enc=0, buf=0x810eb9c "��, size=1272, st=0x810df80) at crypto.c:219
#5 0x0807cd0e in process_packet (mdp=0x80f0aec) at demux.c:1950
#6 0x0807b3d4 in comm_handle (ifp=0x8106b40) at demux.c:1167
#7 0x0805efe2 in call_server () at server.c:1124
#8 0x0805babc in main (argc=8, argv=0xbffff844) at plutomain.c:746
(gdb) frame 4
#4 0x08054ac0 in crypto_cbc_encrypt (e=0x80ed140, enc=0, buf=0x810eb9c "��, size=1272, st=0x810df80) at crypto.c:219
219 passert(st->st_new_iv_len >= e->enc_blocksize);
(gdb) p st->st_new_iv_len
$1 = 0
(gdb) p e->enc_blocksize
$2 = 8
(gdb) p st
$3 = (struct state *) 0x810df80
(gdb) up
#5 0x0807cd0e in process_packet (mdp=0x80f0aec) at demux.c:1950
1950 crypto_cbc_encrypt(e, FALSE, md->message_pbs.cur,
(gdb) p new_iv_set
$4 = 0
(gdb) p st->st_iv_len
$5 = 0
(gdb) p st
$6 = (struct state *) 0x810df80
(gdb) p *st
$7 = {st_serialno = 3, st_clonedfrom = 1, st_usage = 0, st_connection = 0x810cf90, st_whack_sock = -1, st_suspended_md = 0x0, st_oakley = {encrypt = 5,
enckeylen = 192, encrypter = 0x80ed140, hash = 2, hasher = 0x80ed1a0, auth = 3, xauth = 0, group = 0x80bfcb8, life_seconds = 28800, life_kilobytes = 0}, st_ah = {
present = 0, attrs = {transid = 0 '\0', spi = 0, life_seconds = 0, life_kilobytes = 0, encapsulation = 0, auth = 0, key_len = 0, key_rounds = 0}, our_spi = 0,
keymat_len = 0, our_keymat = 0x0, peer_keymat = 0x0}, st_esp = {present = 1, attrs = {transid = 3 '\003', spi = 1799330965, life_seconds = 3600,
life_kilobytes = 250000, encapsulation = 2, auth = 1, key_len = 0, key_rounds = 0}, our_spi = 0, keymat_len = 0, our_keymat = 0x0, peer_keymat = 0x0},
st_ipcomp = {present = 0, attrs = {transid = 0 '\0', spi = 0, life_seconds = 0, life_kilobytes = 0, encapsulation = 0, auth = 0, key_len = 0, key_rounds = 0},
our_spi = 0, keymat_len = 0, our_keymat = 0x0, peer_keymat = 0x0}, st_tunnel_in_spi = 0, st_tunnel_out_spi = 0, st_pfs_group = 0x0, st_doi = 1, st_situation = 1,
st_policy = 70, st_remoteaddr = {u = {v4 = {sin_family = 2, sin_port = 62465, sin_addr = {s_addr = 3323859978}, sin_zero = "\000\000\000\000\000\000\000"}, v6 = {
sin6_family = 2, sin6_port = 62465, sin6_flowinfo = 3323859978, sin6_addr = {in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}}, st_remoteport = 500, st_localaddr = {u = {v4 = {sin_family = 2, sin_port = 62465, sin_addr = {
s_addr = 18748426}, sin_zero = "\000\000\000\000\000\000\000"}, v6 = {sin6_family = 2, sin6_port = 62465, sin6_flowinfo = 18748426, sin6_addr = {in6_u = {
u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}}, st_localport = 500,
st_msgid = 2137290500, st_msgid_phase15 = 0, st_msgid_phase15b = 0, st_used_msgids = 0x0, st_gi = {ptr = 0x0, len = 0}, st_icookie = "\231�u\v= #", st_ni = {
ptr = 0x810a4e0 "L\225\203\035\201�+\"\n���220A�v\0041", len = 20}, st_gr = {ptr = 0x0, len = 0}, st_rcookie = "\0004\237\226�\237W", st_nr = {ptr = 0x0,
len = 0}, st_tpacket = {ptr = 0x0, len = 0}, st_myuserprotoid = 17 '\021', st_myuserport = 1701, st_rpacket = {ptr = 0x0, len = 0}, st_peeruserprotoid = 17 '\021',
st_peeruserport = 1701, st_sec_in_use = 0 '\0', st_sec = {_mp_alloc = 0, _mp_size = 0, _mp_d = 0x0}, st_sec_chunk = {ptr = 0x0, len = 0}, st_shared = {ptr = 0x0,
len = 0}, st_import = 0, st_peer_pubkey = 0x0, st_state = STATE_QUICK_R0, st_retransmit = 0 '\0', st_try = 0, st_margin = 0, st_outbound_count = 0,
st_outbound_time = 0, st_p1isa = {ptr = 0x0, len = 0}, st_skeyid = {ptr = 0x0, len = 0}, st_skeyid_d = {ptr = 0x810aa18 "��\222fZ\033�\031q�S\216G�M\023\t\036$�,
len = 20}, st_skeyid_a = {ptr = 0x810ce70 ",9�f)@dp�_U5\223\tzI\v��\031", len = 20}, st_skeyid_e = {ptr = 0x810ce88 "3�\"\223�{,\t�\026�`�n�L!", len = 20},
st_iv = '\0' <repeats 63 times>, st_old_iv = '\0' <repeats 63 times>, st_new_iv = "�005r��001�", '\0' <repeats 55 times>, st_ph1_iv = '\0' <repeats 63 times>,
st_iv_len = 0, st_old_iv_len = 0, st_new_iv_len = 0, st_ph1_iv_len = 0, st_enc_key = {ptr = 0x810cea0 "�020��0247�036\003L${g��\003u�\205=6�026\216\003\215H!",
len = 24}, st_event = 0x810a528, st_hashchain_next = 0x810a068, st_hashchain_prev = 0x0, hidden_variables = {st_malformed_received = 0, st_malformed_sent = 0,
st_xauth_client_done = 0, st_xauth_client_attempt = 0, st_modecfg_server_done = 0, st_modecfg_vars_set = 0, st_got_certrequest = 0, st_modecfg_started = 0,
st_skeyid_calculated = 1, st_dpd = 0, st_dpd_local = 0, st_nat_traversal = 0, st_nat_oa = {u = {v4 = {sin_family = 2, sin_port = 0, sin_addr = {s_addr = 0},
sin_zero = "\000\000\000\000\000\000\000"}, v6 = {sin6_family = 2, sin6_port = 0, sin6_flowinfo = 0, sin6_addr = {in6_u = {
u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}}, st_natd = {u = {v4 = {
sin_family = 2, sin_port = 0, sin_addr = {s_addr = 0}, sin_zero = "\000\000\000\000\000\000\000"}, v6 = {sin6_family = 2, sin6_port = 0, sin6_flowinfo = 0,
sin6_addr = {in6_u = {u6_addr8 = '\0' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}}},
st_xauth_username = 0x0, st_last_dpd = 0, st_dpd_seqno = 0, st_dpd_expectseqno = 0, st_dpd_peerseqno = 0, st_dpd_event = 0x0, st_seen_vendorid = 0, quirks = {
xauth_ack_msgid = 0, modecfg_pull_mode = 0, nat_traversal_vid = 0}}
And the end of the debugging log:
Mar 15 01:53:45 keitarou pluto[3053]: | **parse ISAKMP Message:
Mar 15 01:53:45 keitarou pluto[3053]: | initiator cookie:
Mar 15 01:53:45 keitarou pluto[3053]: | 99 f7 69 75 0b 3d 20 23
Mar 15 01:53:45 keitarou pluto[3053]: | responder cookie:
Mar 15 01:53:45 keitarou pluto[3053]: | 00 34 9f 96 d2 61 9f 57
Mar 15 01:53:45 keitarou pluto[3053]: | next payload type: ISAKMP_NEXT_HASH
Mar 15 01:53:45 keitarou pluto[3053]: | ISAKMP version: ISAKMP Version 1.0
Mar 15 01:53:45 keitarou pluto[3053]: | exchange type: ISAKMP_XCHG_QUICK
Mar 15 01:53:45 keitarou pluto[3053]: | flags: ISAKMP_FLAG_ENCRYPTION
Mar 15 01:53:45 keitarou pluto[3053]: | message ID: 04 77 64 7f
Mar 15 01:53:45 keitarou pluto[3053]: | length: 1300
Mar 15 01:53:45 keitarou pluto[3053]: | ICOOKIE: 99 f7 69 75 0b 3d 20 23
Mar 15 01:53:45 keitarou pluto[3053]: | RCOOKIE: 00 34 9f 96 d2 61 9f 57
Mar 15 01:53:45 keitarou pluto[3053]: | peer: 0a 14 1e c6
Mar 15 01:53:45 keitarou pluto[3053]: | state hash entry 27
Mar 15 01:53:45 keitarou pluto[3053]: | peer and cookies match on #3, provided msgid 0477647f vs 0477647f
Mar 15 01:53:45 keitarou pluto[3053]: | state object #3 found, in STATE_QUICK_R0
Mar 15 01:53:45 keitarou pluto[3053]: | received encrypted packet from 10.20.30.198:500
Mar 15 01:53:45 keitarou pluto[3053]: | decrypting 1272 bytes using algorithm OAKLEY_3DES_CBC
Also, is there actual CVS access? I couldn't see any way to actually get
it, and the whole rsync process was a bit the long way 'round.
--
Paul "TBBle" Hampson, on an alternate email client.
More information about the Users
mailing list