2006-11-07 的文章

PHP < 5.2.0 Buffer Overflows in htmlspecialchars() and htmlentities()

htmlspecialchars()htmlentities() ,
是 php web programmer 常用的 function

用來將某些網頁特殊字元, 轉換成相對應的 HTML entities ,
例如 < = &lt; 、 > = &gt; 、 ” = &quot; ... 等等,
同時它們也常用來防止網頁產生 XSS 漏洞.

幾日前,
國外的 Hardened-PHP Project 發現這兩個 function 存在 heap overflow 的漏洞 ,
可能導致遠端惡意使用者執行任意指令.
不過這只有在特定情況下 - 當使用 UTF-8 charset 時, 才會發生 .

原因在於 htmlentities 的實作 , PHP source code 的 ext/standard/html.c 中

PHPAPI char *php_escape_html_entities( .... )
{
  ....
  ....
  if (len + 9 > maxlen)
    replaced = erealloc (replaced, maxlen += 128);
  ...
  ...
}

當轉換用的 buffer , 再塞 10 bytes 資料會到底的話, 就會 realloc 多 128 bytes .
這本來也沒什麼問題, 因為一般的 HTML entities 都在 8 個字元以下 ,
但有個例外 - Greek character set 會超過 !

所以當惡意的攻擊者塞入特定的字元 ( Greek character set、或來自 0×00, 0xc0-0xfd ) 後,
可能導致 server 端在 realloc() 時發生 heap overflow ,
而執行到其中的惡意代碼 ( 加檔案、開後門、塞木馬、... 等等都有可能 )

解決方式 -
目前 PHP 官方放出的最新版 5.2.0 已經修正了這個問題 ,
而也只有這個版本的 PHP 不受影響 , 其他 < 5.2.0 的通通有可能爆 ...

( 以下為個人看法, 未經實驗, 請自行承擔後果 :> )
真的不想冒然衝上 5.2 的話 , 也可以將之前的版本手動 patch 一遍,
將 5.2.0 裡 ext/standard/html.c 中的 php_escape_html_entities( ) 整個搬過去舊版的
再 recompile 一隻起來 , 應該就沒事了 :p

相關報導 -

http://www.securitytracker.com/alerts/2006/Nov/1017152.html
http://www.hardened-php.net/advisory_132006.138.html

2 則留言 2006-11-07 12:27

台北新生活 !

上個月, 經由長輩的引薦,
到內湖科學園區某間大 SI 公司面試,
結果頗令人滿意 ...

於是上星期接到人事通知錄取後, 就開始積極的找房子,
並在確認住處後三天 ,11/4 時 正式搬上來台北 .

感謝我的母親、姊姊、姊夫, 以及在台北的朋友 Avex ,
不辭辛勞前來幫我一起搬家,
不然把整車的行囊抬上沒有電梯的 6F , 我大概會癱在床上三天 .......

住的地方在內湖路二段, 達人女中 再過去一點 ....
離公司不遠, 視交通狀況, 騎車到公司約 5~10 分鐘 .
房間蠻大的, 一房一廳一衛, 總空間大約有 10+ 坪,
剛好適合我這種常會把傢俱東搬西橋的人 ...
花了兩點稍微把書桌、電腦桌、以及睡的地方安頓好後,
其他東西就先擺著了 .... 有空再整理吧 !

有效率的中華電信, 在我申請(11/4)後的隔兩天(11/6),
就來裝機了 ...
所以一裝好電腦就可以愉快的用網路了 :D [大心]

anyway, 11/6(一) 時, 正式到公司來到職 !
大公司果然不一樣 ,
整個上午都在忙著看一大堆文件、條約 ...
以及繳交所需要的資料 ...

填到名片印製申請單時, 在職稱上我猶豫了一下 ....
雖然待的 team 是屬於 『 資安顧問 』 ,
但我只不過是個大學剛畢業的小毛頭 , 實在不覺得自己有這種資格 ......

其實我也沒想過畢業後第一份工作就會直接進 Security 領域 ,
畢竟才接觸它大約一年多 ....
本來還以為會先往系統、網管方便發展, 偶爾安插一些程式設計 ,
等再過個幾年才轉往資安領域 ....

不過它一直是我的興趣, 且既然有這個機會,
就好好努力吧 !
心中打定主意, 要趕快學習相關知識, 不要造成同事、主管的困擾 ....
更重要的是, 不要讓推薦我的學長覺得看錯人 XD

第一天上班的晚上, 和七八個同事去吃飯,
依照這公司的傳統, 煙可以不抽, 但酒一定要會喝 !
於是就東敬西敬, 喝掉了一堆酒 ...... :'(
九點多回家後, 感覺茫茫的 .... 就直接先臥倒床舖了 ....
睡飽飽到隔天早上七點...

雖然公司採責任制, 上下班都不用打卡,
但新人還是安份點 ....
迅速洗個澡, 上班,
然後在這裡寫日記 XD

2 則留言 2006-11-07 09:43


日曆

November 2006
M T W T F S S
« Oct   Dec »
 12345
6789101112
13141516171819
20212223242526
27282930  

各分類文章

各月份文章