New issue
Advanced search Search tips

Issue 750454 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 3
Type: Bug



Sign in to add a comment

OOB write in V8

Reported by lysio...@gmail.com, Jul 29 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36

Steps to reproduce the problem:
All is about one case inside Simulator::DecodeSpecialCondition function
src/v8/src/arm/sumilator-arm.cc@5220

Link: https://cs.chromium.org/chromium/src/v8/src/arm/simulator-arm.cc?rcl=d4e622d7a833d1fad110a5c8b5ded67695e27b43&l=5220

...
}
case Neon16: {
  uint16_t src[8];
  get_neon_register(Vm, src);
  for (int i = 0; i < 4; i++) {
    std::swap(src[i * 4], src[i * 4 + 3]);
    std::swap(src[i * 4 + 1], src[i * 4 + 2]);
  }
  set_neon_register(Vd, src);
  break;
}
case Neon8: {
...

Look at the for loop. Indexes are from range 0-15 while array size is only 8 (it is not neccesary to study this example: http://coliru.stacked-crooked.com/view?id=17345bf33c42b7c9 however I made this one to show what happens:))
OOB made!

What is the expected behavior?
I guess loop for this case should be like this:
for (int i = 0; i < 2; i++) {
    ...
}

What went wrong?
OOB happens

Did this work before? N/A 

Chrome version: 60.0.3112.78  Channel: stable
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version: 

Found during file inspection, not having any repro file.
 
Cc: bbudge@chromium.org
Components: Blink>JavaScript

Comment 2 by vakh@chromium.org, Jul 30 2017

Cc: -bbudge@chromium.org
Labels: Needs-Feedback
Owner: bbudge@chromium.org
Status: Assigned (was: Unconfirmed)
lysiol41@gmail.com -- thanks for the report.
Can you please share a POC for this?

Comment 3 by lysio...@gmail.com, Jul 31 2017

As I mentioned "Found during file inspection, not having any repro file." unfortunately. PoC missing, sorry for that.

Comment 4 by lysio...@gmail.com, Jul 31 2017

That's why I shared link to an example showing how this for loop is working.

Comment 5 by bbudge@chromium.org, Jul 31 2017

Labels: -Type-Bug-Security -Pri-2 OS-Linux OS-Mac Pri-3 Type-Bug
Status: Started (was: Assigned)
This is a bug in the ARM simulator, which is only used for testing and developing on non-ARM hardware. There should be no security implications.
Status: Fixed (was: Started)
Project Member

Comment 8 by sheriffbot@chromium.org, Aug 2 2017

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Project Member

Comment 9 by sheriffbot@chromium.org, Nov 8 2017

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

Sign in to add a comment