New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 774854 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Last visit > 30 days ago
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug-Security



Sign in to add a comment

Use-of-uninitialized-value in void base::internal::VectorBuffer<std::__1::basic_string<char, std::__1::char_tr

Project Member Reported by ClusterFuzz, Oct 15 2017

Issue description

Detailed report: https://clusterfuzz.com/testcase?key=4935603501400064

Fuzzer: libFuzzer_net_host_resolver_impl_fuzzer
Job Type: libfuzzer_chrome_msan
Platform Id: linux

Crash Type: Use-of-uninitialized-value
Crash Address: 
Crash State:
  void base::internal::VectorBuffer<std::__1::basic_string<char, std::__1::char_tr
  base::circular_deque<std::__1::basic_string<char, std::__1::char_traits<char>, s
  net::DnsTransactionImpl::ProcessAttemptResult
  
Sanitizer: memory (MSAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_msan&range=503775:503848

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=4935603501400064

Issue filed automatically.

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information.
 
Project Member

Comment 1 by ClusterFuzz, Oct 15 2017

Components: Internals>Core
Labels: Test-Predator-AutoComponents
Automatically applying components based on crash stacktrace and information from OWNERS files.

If this is incorrect, please apply the Test-Predator-Wrong-Components label.
Project Member

Comment 2 by sheriffbot@chromium.org, Oct 16 2017

Labels: M-63
Project Member

Comment 3 by sheriffbot@chromium.org, Oct 16 2017

Labels: ReleaseBlock-Stable
This is a serious security regression. If you are not able to fix this quickly, please revert the change that introduced it.

If this doesn't affect a release branch, or has not been properly classified for severity, please update the Security_Impact or Security_Severity labels, and remove the ReleaseBlock label. To disable this altogether, apply ReleaseBlock-NA.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 4 by sheriffbot@chromium.org, Oct 16 2017

Labels: Pri-1
Project Member

Comment 5 by sheriffbot@chromium.org, Oct 18 2017

Labels: -Security_Impact-Head Security_Impact-Beta

Comment 6 by tsepez@chromium.org, Oct 18 2017

Owner: brettw@chromium.org
Status: Assigned (was: Untriaged)
Hey Brett, could you quickly rule out whether this might be an artifact of your conversion from std:: to base:: queues a few weeks ago?  The CF regression range isn't always reliable.

For example, were there cases where we'd formerly get away with pop'ing an empty container or some such that are now hit in base's implmentations? Thanks.

Comment 7 by brettw@chromium.org, Oct 18 2017

The empty container thing does come to mind. Does this build run DCHECKs? This code path will DCHECK if it's an empty container. If we do run DCHECKs that would imply that the container is not empty.

Popping a empty std::deque is undefined, so it's possible this worked before without anybody noticing. The circular_deque implementation will definitely do bad things if you do this.

Comment 8 by mmoroz@chromium.org, Oct 24 2017

For more information, please see https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reference.md.

The link referenced in the description is no longer valid.

Comment 9 by gov...@chromium.org, Oct 30 2017

[Bulk Edit]
URGENT - PTAL.
M63 Stable promotion is coming soon and your bug is labelled as Stable ReleaseBlock, pls make sure to land the fix and get it merged into the release branch ASAP. Thank you.

Project Member

Comment 10 by ClusterFuzz, Nov 1 2017

ClusterFuzz has detected this issue as fixed in range 512849:512869.

Detailed report: https://clusterfuzz.com/testcase?key=4935603501400064

Fuzzer: libFuzzer_net_host_resolver_impl_fuzzer
Job Type: libfuzzer_chrome_msan
Platform Id: linux

Crash Type: Use-of-uninitialized-value
Crash Address: 
Crash State:
  void base::internal::VectorBuffer<std::__1::basic_string<char, std::__1::char_tr
  base::circular_deque<std::__1::basic_string<char, std::__1::char_traits<char>, s
  net::DnsTransactionImpl::ProcessAttemptResult
  
Sanitizer: memory (MSAN)

Recommended Security Severity: Medium

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_msan&range=503775:503848
Fixed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_msan&range=512849:512869

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=4935603501400064

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reference.md for more information.

If you suspect that the result above is incorrect, try re-doing that job on the test case report page.
Project Member

Comment 11 by ClusterFuzz, Nov 1 2017

Labels: ClusterFuzz-Verified
Status: Verified (was: Assigned)
ClusterFuzz testcase 4935603501400064 is verified as fixed, so closing issue as verified.

If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue.
Project Member

Comment 12 by sheriffbot@chromium.org, Nov 1 2017

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Cc: mmoroz@chromium.org
This might be related to  issue 774854 .
Owner: mge...@chromium.org
Might this be related to issue 779589? If so it looks like  issue 761639  is already going to be merged to M63 - anything else might be worth merging?
Components: -Internals>Core Internals>Network>DNS
Yeah, this is the exact same bug as  issue 774846 , it just looks different when msan finds it than it does when asan finds it. The CL I'm already merging is sufficient.

If anyone is wondering about the effect that the switch to circular_deque had, see  https://crbug.com/774846#c16 .

This bug is a great example of why I wanted fuzzer crash triage based on the component where the fuzzer lives: bugs found by this fuzzer are almost always DNS bugs, but this one took more than two weeks to get to me, despite being a release blocking security bug. And because it's a security bug, I couldn't have found it by looking at all of this fuzzer's bugs myself, I wouldn't have had the right permissions.
Cc: och...@chromium.org
Labels: -ReleaseBlock-Stable
Thanks for the details mgersh@!

+ochang@ for the last ❡ of #15
Labels: -Test-Predator-AutoComponents Test-Predator-Auto-Components
Project Member

Comment 18 by sheriffbot@chromium.org, Feb 8 2018

Labels: -Restrict-View-SecurityNotify allpublic
This bug has been closed for more than 14 weeks. Removing security view restrictions.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: mmenke@chromium.org
Project Member

Comment 20 by sheriffbot@chromium.org, Mar 27 2018

Labels: -Security_Impact-Beta -M-63 M-65 Security_Impact-Stable

Sign in to add a comment