lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20171013081117.61e82817@xeon-e3>
Date:   Fri, 13 Oct 2017 08:11:17 -0700
From:   Stephen Hemminger <stephen@...workplumber.org>
To:     netdev@...r.kernel.org
Subject: Fw: [Bug 197213] New: panic in interrupt after ioctl to tun



Begin forwarded message:

Date: Thu, 12 Oct 2017 19:17:13 +0000
From: bugzilla-daemon@...zilla.kernel.org
To: stephen@...workplumber.org
Subject: [Bug 197213] New: panic in interrupt after ioctl to tun


https://bugzilla.kernel.org/show_bug.cgi?id=197213

            Bug ID: 197213
           Summary: panic in interrupt after ioctl to tun
           Product: Networking
           Version: 2.5
    Kernel Version: 4.14.0-rc4
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Other
          Assignee: stephen@...workplumber.org
          Reporter: avekceeb@...il.com
        Regression: No

Hi,

this is one more corner case found by syzkaller.
I'm not sure that 'Networking' is the right category for this, but the panic
was triggered by ioctl to /dev/net/tun...


[   13.728009] BUG: unable to handle kernel NULL pointer dereference at        
  (null)
[   13.728903] IP: run_timer_softirq+0x315/0x3f0
[   13.729401] PGD 7bd8b067 P4D 7bd8b067 PUD 7bd7f067 PMD 0 
[   13.730040] Oops: 0002 [#1] SMP
[   13.730400] Modules linked in:
[   13.730747] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.0-rc4-with-tun #1
[   13.731533] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.0.0-prebuilt.qemu-project.org 04/01/2014
[   13.732672] task: ffffffffa280f480 task.stack: ffffffffa2800000
[   13.733332] RIP: 0010:run_timer_softirq+0x315/0x3f0
[   13.733883] RSP: 0018:ffff961b7fc03ed0 EFLAGS: 00010086
[   13.734467] RAX: ffff961b7bf070c0 RBX: ffff961b7fc10cc0 RCX:
0000000000000000
[   13.735265] RDX: dead000000000200 RSI: 00000000fffffe01 RDI:
ffff961b7fc10cc0
[   13.736059] RBP: ffff961b7fc03f50 R08: 00000000fffba1c0 R09:
ffff961b7fc11168
[   13.736857] R10: ffff961b7fc03ee8 R11: ffff961b7fc10d30 R12:
ffff961b7fc03ee0
[   13.737652] R13: dead000000000200 R14: 0000000000000001 R15:
ffff961b7bf070c0
[   13.738463] FS:  0000000000000000(0000) GS:ffff961b7fc00000(0000)
knlGS:0000000000000000
[   13.739017] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   13.739339] CR2: 0000000000000000 CR3: 000000007bcf8000 CR4:
00000000000006f0
[   13.739741] Call Trace:
[   13.739882]  <IRQ>
[   13.740000]  ? ktime_get+0x3b/0x90
[   13.740196]  ? lapic_next_event+0x18/0x20
[   13.740413]  __do_softirq+0xcf/0x2a8
[   13.740606]  irq_exit+0xab/0xb0
[   13.740778]  smp_apic_timer_interrupt+0x64/0x110
[   13.741025]  apic_timer_interrupt+0x90/0xa0
[   13.741250]  </IRQ>
[   13.741367] RIP: 0010:default_idle+0x18/0xf0
[   13.741596] RSP: 0018:ffffffffa2803e60 EFLAGS: 00000246 ORIG_RAX:
ffffffffffffff10
[   13.741998] RAX: 0000000080000000 RBX: ffffffffa293f5e0 RCX:
0000000000000000
[   13.742370] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
0000000000000000
[   13.742750] RBP: ffffffffa2803e78 R08: 000000040a453dcd R09:
ffff9c324031f930
[   13.743128] R10: 0000000000000000 R11: 00000069d14f9aee R12:
0000000000000000
[   13.743504] R13: 0000000000000000 R14: ffffffffa2a37780 R15:
0000000000000000
[   13.743883]  arch_cpu_idle+0xa/0x10
[   13.744072]  default_idle_call+0x1e/0x30
[   13.744284]  do_idle+0x14f/0x1a0
[   13.744458]  cpu_startup_entry+0x18/0x20
[   13.744670]  rest_init+0xa9/0xb0
[   13.744845]  start_kernel+0x3c6/0x3d3
[   13.745043]  x86_64_start_reservations+0x24/0x26
[   13.745291]  x86_64_start_kernel+0x6f/0x72
[   13.745512]  secondary_startup_64+0xa5/0xa5
[   13.745741] Code: 88 4c 39 65 88 0f 84 3b ff ff ff 49 8b 04 24 48 85 c0 74
56 4d 8b 3c 24 4c 89 7b 08 0f 1f 44 00 00 49 8b 17 49 8b 4f 08 48 85 d2 <48> 89
11 74 04 48 89 4a 08 41 f6 47 2a 20 49 c7 47 08 00 00 00 
[   13.746745] RIP: run_timer_softirq+0x315/0x3f0 RSP: ffff961b7fc03ed0
[   13.747087] CR2: 0000000000000000
[   13.747270] ---[ end trace 04d492145975c7cc ]---
[   13.747516] Kernel panic - not syncing: Fatal exception in interrupt
[   13.747946] Kernel Offset: 0x20a00000 from 0xffffffff81000000 (relocation
range: 0xffffffff80000000-0xffffffffbfffffff)
[   13.748515] ---[ end Kernel panic - not syncing: Fatal exception in
interrupt

Reproducer:

#include <sys/syscall.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>

char addr[40] = {0xcf, 0x0b, 0x0b, 0x99, 0x22, 0x33, 0x96, 0xdf, 0xbd, 0x2e,
0x29, 0x1b, 0x4d, 0xc0, 0x2a, 0xee, 0x03};

void test() {
    int fd = -1;
    fd = open("/dev/net/tun", 0, 0);
    syscall(__NR_ioctl, fd, 0x400454caul, addr);
}

#define max_iter 10
int main(void) {
        int iter;
        for (iter = 0; iter<max_iter; iter++) {
        test();
            printf("done %d of %d\n", iter+1, max_iter);
        }
    return 0;
}

Panic happens on variety of configs with CONFIG_TUN=y set from (at least) 4.12
to current stable (4.14-rc4)
virtual, bare metal - doesn't matter.

[  164.060173]
==================================================================
[  164.062769] BUG: KASAN: use-after-free in run_timer_softirq+0xd84/0x1000
[  164.065030] Write of size 8 at addr ffff880065557148 by task swapper/0/0
[  164.067264] 
[  164.067812] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.13.1-kcov-qemu-my #1
[  164.070192] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.1-1ubuntu1 04/01/2014
[  164.071510] Call Trace:
[  164.071751]  <IRQ>
[  164.071959]  dump_stack+0x83/0xb8
[  164.072281]  print_address_description+0x78/0x290
[  164.072732]  kasan_report+0x257/0x370
[  164.073088]  ? run_timer_softirq+0xd84/0x1000
[  164.073508]  __asan_report_store8_noabort+0x1c/0x20
[  164.073977]  run_timer_softirq+0xd84/0x1000
[  164.074380]  ? add_timer_on+0x630/0x630
[  164.074757]  ? native_apic_msr_write+0x2b/0x30
[  164.075185]  ? lapic_next_event+0x5f/0x90
[  164.075573]  ? clockevents_program_event+0x21d/0x2f0
[  164.076049]  ? tick_program_event+0x84/0xd0
[  164.076453]  __do_softirq+0x1c3/0x5a1
[  164.076809]  irq_exit+0x14e/0x180
[  164.077132]  smp_apic_timer_interrupt+0x7b/0xa0
[  164.077567]  apic_timer_interrupt+0x89/0x90
[  164.077969] RIP: 0010:native_safe_halt+0x6/0x10
[  164.078403] RSP: 0018:ffffffff83607d08 EFLAGS: 00000246 ORIG_RAX:
ffffffffffffff10
[  164.079123] RAX: 0000000000000000 RBX: ffffffff83616d40 RCX:
0100000000000000
[  164.079797] RDX: 1ffffffff06c2da8 RSI: 0000000000000000 RDI:
0000000000000000
[  164.080472] RBP: ffffffff83607d08 R08: ffff88007ff3501c R09:
ffff88007ff35008
[  164.081145] R10: ffff88007ff35018 R11: ffff88007ff35010 R12:
ffffffff83c5cba0
[  164.081820] R13: ffffffff83616d40 R14: 0000000000000000 R15:
ffffffff83616d40
[  164.082498]  </IRQ>
[  164.082719]  ? next_zone+0x48/0x60
[  164.083046]  default_idle+0x22/0x230
[  164.083390]  arch_cpu_idle+0xf/0x20
[  164.083725]  default_idle_call+0x3b/0x60
[  164.084101]  do_idle+0x23e/0x310
[  164.084413]  cpu_startup_entry+0xcb/0xe0
[  164.084789]  ? cpu_in_idle+0x20/0x20
[  164.085134]  rest_init+0xe8/0xf0
[  164.085447]  start_kernel+0x6bc/0x6f1
[  164.085784]  ? thread_stack_cache_init+0x10/0x10
[  164.086204]  ? early_idt_handler_array+0x120/0x120
[  164.086652]  x86_64_start_reservations+0x2a/0x2c
[  164.087003]  x86_64_start_kernel+0x152/0x175
[  164.087332]  secondary_startup_64+0x9f/0x9f
[  164.087647] 
[  164.087768] The buggy address belongs to the page:
[  164.088139] page:ffffea00019555c0 count:0 mapcount:0 mapping:         
(null) index:0x0
[  164.088733] flags: 0xfffffc0000000()
[  164.089008] raw: 000fffffc0000000 0000000000000000 0000000000000000
00000000ffffffff
[  164.089582] raw: dead000000000100 dead000000000200 0000000000000000
0000000000000000
[  164.090155] page dumped because: kasan: bad access detected
[  164.090568] 
[  164.090707] Memory state around the buggy address:
[  164.091066]  ffff880065557000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff
[  164.091598]  ffff880065557080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff
[  164.092131] >ffff880065557100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff
[  164.092663]                                               ^
[  164.093077]  ffff880065557180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff
[  164.093608]  ffff880065557200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff
[  164.094139]
==================================================================

-- 
You are receiving this mail because:
You are the assignee for the bug.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ