XSS і Charset Remembering через кодування в різних браузерах

23:54 16.06.2012

На початку 2009 року я розповідав про Charset Remembering уразливість в Mozilla Firefox через UTF-7 та EUC-JP і SHIFT_JIS кодування. А учора я писав про численні уразливості в Microsoft Internet Explorer, що були виправлені Microsoft у вівторок. І серед них була уразливість CVE-2012-1872.

Ця уразливість мене здивувала. Тому що інформація про XSS через EUC-JP в IE6 була відома ще в 2006 році - про це писав Cheng Peng Su (він перевірив декілька кодувань в браузерах Internet Explorer 6, Firefox 1.5.0.6 та Opera 9.0.1). В тому числі мій експлоіт для XSS через EUC-JP і SHIFT_JIS кодування в Mozilla Firefox також підходив і для IE (лише в ньому потрібно було додати один символ). Тільки атака через EUC-JP працювала в IE 6 і 7, а в IE 8 вона була виправлена. Схоже, що були знайдені нові символи EUC-JP кодування, через які можна проводити атаку.

Зазначу, що в MFSA 2011-47 Mozilla виправила можливість XSS атак через кодування Shift-JIS - проігнорувавши моє повідомлення у березні 2009 року і лише через 2,5 роки виправивши одну з декількох повідомлених мною уразливостей.

Тому я розробив новий експлоіт (щоб він працював в різних браузерах) і дослідив XSS атаку через різні кодування в багатьох браузерах. В результаті я виявив, що чимало браузерів вразливі до атак через EUC-JP, SHIFT_JIS та Chinese Simplified (HZ) кодування. А деякі браузери також вразливі до атак через інші кодування. І додам, що Charset Remembering атака, описана мною три роки тому, окрім Mozilla і Firefox (всіх браузерів на движку Gecko) також працює в Internet Explorer і Opera.

PoC:

XSS_charsets_in_browsers.html

Код виконається при встановленні відповідного кодування в браузері.

Дана атака через EUC-JP, SHIFT_JIS та Chinese Simplified (HZ) кодування спрацьовує в Mozilla Firefox 3, 4 і попередніх версіях (а також повинна в наступних версіях), в Internet Explorer 6, 7, 8 (і повинна в інших версіях), в Opera 10.62 (і повинна в інших версіях).

Також в IE 6, 7 і 8 атака спрацьовує через кодування Chinese Simplified (GB2312 і Big5), а в IE 6 і 7 атака спрацьовує через кодування Korean (в інших браузерах позначається як EUC-KR). В версії IE8 (і явно в IE9) не працює атака через кодування EUC-JP та Korean. А в Opera 10.62 також спрацьовує в Chinese Simplified (GB2312, GB18030 і Big5-HKSCS), але не в Big5 і HZ.


Leave a Reply

You must be logged in to post a comment.