Bug 1387584

Summary: memory allocation failure in __libelf_set_rawdata_wrlock (elf_getdata.c)
Product: [Fedora] Fedora Reporter: Agostino Sarubbo <ago>
Component: elfutilsAssignee: Mark Wielaard <mjw>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: aoliva, fche, jakub, me, mjw, mjw, roland
Target Milestone: ---Keywords: Reopened
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: elfutils-0.168-1.fc25 elfutils-0.168-1.fc24 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-01-11 12:19:22 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
stacktrace
none
reproducer none

Description Agostino Sarubbo 2016-10-21 10:29:57 UTC
Created attachment 1212780 [details]
stacktrace

Description of problem:
During the fuzz of libdwarf I got a memory allocation failure.
From the stacktrace seems that the fault is in elfutils.

Version-Release number of selected component (if applicable):
0.166

How reproducible:
dwarfdump $REPRODUCER

Comment 1 Agostino Sarubbo 2016-10-21 10:30:21 UTC
Created attachment 1212781 [details]
reproducer

Comment 2 Mark Wielaard 2016-10-21 10:56:22 UTC
So I assume that the problem is when trying to get the data for the debug_abbrev section, which has a ridiculous big size:

[28] .debug_abbrev        PROGBITS     0000000000000000 00001223 8000000110  0        0   0  1

The reported memory allocation failure is here:

          /* We have to read the data from the file.  Allocate the needed
             memory.  */
          scn->rawdata_base = scn->rawdata.d.d_buf
            = (char *) malloc (size);
          if (scn->rawdata.d.d_buf == NULL)
            {
              __libelf_seterrno (ELF_E_NOMEM);
              return 1;
            }

Where size is shdr->sh_size (0x8000000110 == 549755814160) which will obviously fail and the code will return ELF_E_NOMEM.

Comment 3 Agostino Sarubbo 2016-10-21 12:23:53 UTC
Thanks for the response. Do you think it needs to be fixed or it is fine as-is?

Comment 4 Mark Wielaard 2016-10-21 12:27:43 UTC
(In reply to Agostino Sarubbo from comment #3)
> Thanks for the response. Do you think it needs to be fixed or it is fine
> as-is?

In another code path we actually check the size first to make sure the data is all in the file. If the malloc succeeded the code would fail a few lines later anyway when we couldn't read all section data. We could add a sanity check and return ELF_E_INVALID_SECTION_HEADER before even attempting the malloc.

Comment 5 Mark Wielaard 2016-10-21 13:27:23 UTC
I posted a patch to add that sanity check upstream:
https://lists.fedorahosted.org/archives/list/elfutils-devel@lists.fedorahosted.org/message/Q4LE47FPEVRZANMV6JE2NMHYO4H5MHGJ/

Please let me know if that helps your case.

Comment 6 Agostino Sarubbo 2016-10-21 13:33:47 UTC
(In reply to Mark Wielaard from comment #5)
> I posted a patch to add that sanity check upstream:
> https://lists.fedorahosted.org/archives/list/elfutils-devel@lists.
> fedorahosted.org/message/Q4LE47FPEVRZANMV6JE2NMHYO4H5MHGJ/
> 
> Please let me know if that helps your case.

I'll retest.

Comment 7 Mark Wielaard 2016-11-10 11:14:12 UTC
The patch has been pushed upstream now and will be in the next release.

Comment 8 Fedora Update System 2016-12-28 19:23:25 UTC
elfutils-0.168-1.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2016-0cdc2d3b14

Comment 9 Fedora Update System 2016-12-29 09:21:11 UTC
elfutils-0.168-1.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-0cdc2d3b14

Comment 10 Fedora Update System 2016-12-31 22:20:33 UTC
elfutils-0.168-1.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.

Comment 11 Fedora Update System 2017-01-01 13:37:39 UTC
elfutils-0.168-1.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2017-6c9a495a48

Comment 12 Fedora Update System 2017-01-02 01:50:57 UTC
elfutils-0.168-1.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-6c9a495a48

Comment 13 Fedora Update System 2017-01-11 12:19:22 UTC
elfutils-0.168-1.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.

Comment 14 Agostino Sarubbo 2017-03-22 10:11:35 UTC
Mitre assigned CVE-2016-10255 to this issue