Hi Georg, The CL for review is here: https://chromium-review.googlesource.com/c/v8/v8/+/1598267. (I haven't added unit tests, but can do so if you think the approach is correct and doesn't need significant modification.) Let me know if changes should be made or if there's a different process to submit code.
Thanks, Neil On Monday, May 6, 2019 at 3:53:51 AM UTC-5, Georg Neis wrote: > > Hi Neil, > > this sounds interesting. We have been thinking about such kind of dynamic > checks as well as about improving our typer testing, but we haven't started > implemented anything so far. I'd be happy to look at your code. > > Best, > Georg > > *From: *<neilpa...@gmail.com <javascript:>> > *Date: *Sun, May 5, 2019 at 10:25 PM > *To: *v8-dev > > Hi all, >> >> I've been recently investigating type confusion vulnerabilities in the >> TurboFan JIT (such as this >> <https://bugs.chromium.org/p/chromium/issues/detail?id=762874&can=2&q=762874&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified> >> >> and this <https://bugs.chromium.org/p/project-zero/issues/detail?id=1710>). >> I am doing this by creating systems that mutate the V8 graph and add >> pass-through "assertion" nodes that verify that the actual type of a value >> at runtime indeed matches the type computed by TurboFan's typer. >> >> One of the systems I have built runs in pipeline.cc and adds a "range >> checking node" after every inferred range analysis, which verifies that >> V8's typer system correctly computes ranges in the Typer phase. This is >> very similar to existing functionality in other JITs such as IonMonkey >> <https://dxr.mozilla.org/mozilla-central/source/js/src/jit/RangeAnalysis.cpp?q=rangeanalysis.cpp&redirect_type=direct#2375>, >> >> which already use this to catch bugs in range analysis that can lead to >> security vulnerabilities. >> >> I have verified that my system catches artificially introduced errors in >> range computation, and does not introduce false positives in existing >> tests. It is accessible through an optional d8 command-line flag, so it can >> be used in the fuzzer. >> >> I think this range checking would be useful for catching range >> analysis-related security vulnerabilities in the future, especially given >> that it's been used in other JITs. I have working code, but before going >> through the code submission process, I wanted to ask if there was anything >> to be aware of independent of implementation (such as existing duplicate >> functionality) that would be reasons not to ship this feature. >> >> (This is my first time contributing to V8, so my apologies if there's a >> different way of going about this process - thank you in advance!). >> >> Neil >> >> -- >> -- >> v8-dev mailing list >> v8-...@googlegroups.com <javascript:> >> http://groups.google.com/group/v8-dev >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > > -- > Georg Neis > Software Engineer > > Google Germany GmbH > Erika-Mann-Straße 33 > 80636 München > > Geschäftsführer: Paul Manicle, Halimah DeLaine Prado > Registergericht und -nummer: Hamburg, HRB 86891 > Sitz der Gesellschaft: Hamburg > > Diese E-Mail ist vertraulich. Falls sie diese fälschlicherweise erhalten > haben sollten, leiten Sie diese bitte nicht an jemand anderes weiter, > löschen Sie alle Kopien und Anhänge davon und lassen Sie mich bitte wissen, > dass die E-Mail an die falsche Person gesendet wurde. > > This e-mail is confidential. If you received this communication by > mistake, please don't forward it to anyone else, please erase all copies > and attachments, and please let me know that it has gone to the wrong > person. > -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.