bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/27295] New: Unsafe strcmp() causing arbitrary read primiti


From: dennis.r at columbia dot edu
Subject: [Bug binutils/27295] New: Unsafe strcmp() causing arbitrary read primitive and potential privacy impact in elf32_avr_get_note_desc()
Date: Sun, 31 Jan 2021 03:47:44 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27295

            Bug ID: 27295
           Summary: Unsafe strcmp() causing arbitrary read primitive and
                    potential privacy impact in elf32_avr_get_note_desc()
           Product: binutils
           Version: 2.36
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: dennis.r at columbia dot edu
  Target Milestone: ---

Created attachment 13181
  --> https://sourceware.org/bugzilla/attachment.cgi?id=13181&action=edit
poc

= Attachment = 
./memory

= Reproduce =
Compile with ./configure -enable=avr
objdump --private=mem-usage memory

= Location =
https://sourcegraph.com/github.com/bminor/binutils-gdb@a7e3d08a26edefa411269636d7dcae7dd2736659/-/blob/binutils/od-elf32_avr.c#L117
 

= Description =
Using unsafe version of strcmp on user defined input in.namedata. Arbitrary
read primitive can be used in rop chain and aide exploitation.

if (strcmp (in.namedata, "AVR") != 0)

= Fix = 
Use strncmp

= UBSan =
../seed_folder/memory:     file format elf32-avr

../../binutils/od-elf32_avr.c:107:42: runtime error: unsigned integer overflow:
18446744073709551604 + 60 cannot be represented in type 'unsigned long'
../../binutils/od-elf32_avr.c:111:31: runtime error: negation of 4 cannot be
represented in type 'bfd_vma' (aka 'unsigned long')
../../binutils/od-elf32_avr.c:114:51: runtime error: unsigned integer overflow:
18446744073709551600 + 60 cannot be represented in type 'unsigned long'

= Stack Trace =
Breakpoint 1, elf32_avr_dump (abfd=<optimized out>) at
../../binutils/od-elf32_avr.c:107
107       if (in.namesz > contents - in.namedata + size)
(gdb) bt
#0  elf32_avr_dump (abfd=<optimized out>) at ../../binutils/od-elf32_avr.c:107
#1  0x000000000041e80d in dump_target_specific (abfd=0x38f4c90) at
../../binutils/objdump.c:4282
#2  dump_bfd (abfd=0x38f4c90, is_mainfile=1) at ../../binutils/objdump.c:4870
#3  0x000000000041bc6f in display_object_bfd (abfd=<optimized out>) at
../../binutils/objdump.c:5008
#4  display_any_bfd (file=<optimized out>, level=<optimized out>) at
../../binutils/objdump.c:5098
#5  0x000000000040757d in display_file (filename=<optimized out>,
target=<optimized out>, last_file=<optimized out>) at
../../binutils/objdump.c:5119
#6  main (argc=<optimized out>, argv=<optimized out>) at
../../binutils/objdump.c:5467

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]