目前,PHP是全球網站伺服器端使用率最高的程式語言,隨著版本的世代交替,發展已超過10年的PHP 5,自從2004年釋出後,一路發展至5.6版,現在也看到了終點線。
但問題是,現在臺灣仍有5到7成的網站,是使用PHP 5,甚至還有使用PHP 4的現象存在。
在2017年時,PHP開發團隊即宣布5.6版將是PHP 5的最終版本(PHP 6版未發行)。在PHP 5將於年底(12月31日)終止支援後,假若駭客未來發現舊版漏洞,將面臨無以修補的狀況,企業網站的潛在安全風險,成為現階段的焦點。
【PHP各版本終止支援列表】即將進入PHP 7時代,歷經10年以上發展的PHP 5版,年底邁向終點,安全更新終止開始倒數計時,只剩一個月,建議盡速升級至7.1以上版本。資料來源:php.net
使用PHP 7的比例最多僅2成3,大多數網站尚未升級
這次PHP版本更新的影響,將可能牽動近8成網站的改變。因為,根據W3Techs的統計,以伺服器端的網站程式語言來說,使用PHP的網站近兩年都維持在8成的高比例,遙遙領先ASP.NET、Java、Ruby、Static files、Scala、Python、Javascript與ColdFusion等,而像是為人熟悉的Facebook網站,就是以PHP為主要開發。
但是,至今仍有7成以上的PHP網站沒有升級,仍是使用PHP 5,而從臺灣虛擬主機供應商的使用PHP 5數據來看,也有同樣的高比重。
根據W3Techs的調查結果顯示,在11月23日,使用PHP的比例仍高達78.9%,進一步分析其使用版本,使用最新PHP 7的比例達到22.9%,但是,使用PHP 5的比例仍高達76.4%,意謂著每4個網站就有3個是PHP 5。
再以更細版本畫分來看,所有PHP 5版之中,PHP 5.6版的比例為42.2%,顯然有許多網站目前停在PHP 5最後一版,甚至還有一半比例是PHP 5稍早的版本(PHP 5.5有14%,PHP 5.4有19.9%,PHP 5.3版有16.9%)。至於更舊PHP 4的比例,則是不到1%。
而這樣的結果也顯示了,PHP開發團隊從3年前(2015年12月3日)發布PHP 7至今,僅2成網站升級,但仍然有高比重的網站,在下個月後就要面對PHP 5.6終止支援的考驗。
臺灣網站的狀況同樣堪慮,這次我們詢問了2家本地的虛擬主機供應商,以瞭解國內用戶,在PHP每個版本上的使用比例。
目前,這些虛擬主機商都已經提供PHP 7環境的產品,不過,既有PHP 5環境也將持續提供,主要是仍有龐大的客戶需求存在。捕夢網數位科技技術長趙永弘表示:「我們的數據與W3Techs有相同之處,同樣有75%的高比例使用PHP 5;但不同的是,PHP 7需求很少,並仍有24.6%是PHP 4,相較之下,後兩者的比例剛好相反。」
另一家廠商匯智資訊的技術總監潘昆周則表示:「我們的客戶使用PHP 7與PHP 5,比例是一半一半。」儘管PHP 5環境的需求相對較低,但也仍然達5成之譜,比例仍高。
對於這樣的結果,儘管虛擬主機的供應商已經提供PHP 7的環境,但臺灣仍有超過半數的PHP網站,處於沿用舊版的狀態。
但更讓我們驚訝的是,原來已經淘汰超過10年的舊版PHP 4,使用比例居然也不低。而這樣的現象,似乎也反應出不少網站的態度,對於網站程式語言中止支援的漠視。
其實,近年PHP的每個版本,例如5.4、5.5、5.6、7.0、7.1與7.2,幾乎都會有2年的主要更新支援(Active support),以及額外1年的安全更新支援(Security support)。
以PHP 5而言,由於最後一版是5.6,依照原本的規畫,在2017年8月就要終止支援。但為了讓用戶有更多準備時間,其實,PHP開發團隊已經給予了較大的寬容,像是主要支援延長了4個月,而安全支援更是多延長了一年,也因此,PHP 7.0的中止安全更新,還比PHP 5.6早一個月結束。
畢竟,距離上一次PHP大版本的更新,已經是在10多年前,當時PHP 4停止支援,用戶紛紛準備升級至PHP 5。但對於近10年的企業或設計師來說,可能沒有這樣的經歷。
【不再提供安全更新,年底後PHP 5.6漏洞將無人修補】每個PHP版本都有它的生命週期,在安全更新期限之內,以5.6版為例,今年共釋出6次小版本的更新,總計修補了12個安全漏洞,平均大約是每兩個月就會發布一次。年底後,若是再有PHP漏洞被發現,只有新的PHP 7.1與7.2會繼續修補,全部的PHP 5版本與PHP 7.0,都將成為安全孤兒。
重視網站技術的大型網站皆已升級至PHP 7,毋須擔心
事實上,對於以網站為核心、高流量的網站來說,面對網站程式語言升級這件事,答案是肯定的。痞客邦(Pixnet)研發中心總監林瑞男表示,以他們周遭的圈子來看,其實幾乎都是已升級PHP 7。
例如,他們去年本來就有一個架構調整的計畫在進行,打算將網站轉變成服務導向架構(Service-Oriented Architecture,SOA ),因此將每個元件拆開重寫的過程,也同時升級PHP 7,但這也因此花了較多時間,從去年11月到今年8月才告一段落。
從他們網站改版的目的來看,主要是因應服務規模越來越大,開發團隊人數越來越多,可能有些共用的元件需要專屬團隊維護,而做出的改變。
其實,痞客邦上一次的網站大改版,大約是在2014、2015年之間,距離這次改版已有3年。林瑞男認為,這主要跟商業模式有很大關係,畢竟網路世界不太可能一招走天下,為了追求公司成長,舊有的技術就要做出調整,網站架構也是,才能符合公司發展上的需求。而且,當新版PHP 7推出時,就已經知道PHP 5的支援有一天總是會中止。
對於有高比例網站未升級PHP 7一事,林瑞男指出這是以「網站數」來統計,而不是用「流量」。一般而言,高流量的網站,通常自己也會有開發的團隊在維運,升級PHP 7是常態,使用者不用太過擔心。而對於很多小流量的網站尚未升級的問題,則要看網站主面對的風險。
【歷年都有PHP漏洞被發現的狀況,不應低估程式語言終止支援的風險】在CVE Details弱點資料庫的PHP統計數據顯示,每年都有不少相關漏洞揭露,當中也曾發生CVE評分為10的重大漏洞。儘管今年PHP本身的漏洞數量算低,但從過往經驗來看,這些漏洞問題只會不斷被發現,而舊版漏洞不再修補的問題,相對要有其他方案來解決,以減少被攻擊的機率。
舊版PHP失去安全更新,之後一旦發現漏洞,將面臨無人修補的窘境
捕夢網數位科技技術長趙永弘表示,很多企業對於PHP更新終止支援,並沒有概念。而3年前的一次資安事件,令他印象深刻,原因是CVE-2015-4024的漏洞。他說:「當時,很多PHP網站都看不到內容,直到一個多禮拜的時間後,漏洞修補才公布。」
原來,這個關於PHP的重大漏洞,將造成使用PHP的主機大量消耗CPU資源,只要一個小程式的請求,就導致CPU負載多10%,一下子就可以讓CPU滿載,達到Dos攻擊。受影響的PHP版本是從5.0~5.6都有。
之後,PHP官方釋出小版本更新,但僅針對5.5與5.6的版本,其他較早期的版本需要升級應對。假設,這個漏洞沒有PHP官方修補,用戶需要自己設法解決,相對困難許多。
畢竟,如果漏洞先被公開且尚未修補,所有用戶都需要想辦法因應。但如果是一般漏洞揭露的過程,是從漏洞發現,到通報,然後修補。儘管仍有時間差,但至少有開發團隊可以處理。若是不再提供安全更新,未來用戶就要自己修補,或是採用其他防禦機制來阻擋,以降低漏洞未修補的風險。
關於近期PHP漏洞問題,我們進一步檢視PHP官方網站的版本更新日誌,以5.6版為例,每隔幾個月就會發布小版本的更新,以修補漏洞,增強安全性。例如,今年9月13日釋出的5.6.38版,修補了關於XSS的CVE-2018-17082漏洞;在7月19日釋出的5.6.37版,修補了CVE-2018-14883、CVE-2018-14851與CVE-2018-15132這三個漏洞;而4月26日釋出的5.6.36版,一次修補了CVE-2018-10549、CVE-2018-10546、CVE-2018-10548與CVE-2018-10547這四個漏洞。總計,今年修補了12個漏洞。
而上述這些CVE的漏洞,在PHP 7.0、7.1與7.2版中,也都同樣獲得PHP開發團隊的修補。但若是一個月後,又有新的PHP漏洞被發現,由於PHP 5.6、7.0版將不再提供安全更新,停留在舊版PHP的網站,承擔的風險成本相對更高。
再從CVE漏洞的角度來看,其實今年關於PHP的數量要比往年少。根據CVE Details弱點資料庫統計數據顯示,這裡整理列出了近18年來PHP的CVE漏洞。其中,今年PHP的CVE漏洞數量為12個,去年是48個,前年則是有165個,儘管PHP本身的漏洞有減少的趨勢,但用戶不能因此掉以輕心。
最主要的原因是,如果版本的更新支援到期,但用戶數卻仍高的情況下,駭客是有很大可能,積極在PHP 5.6以前版本中找出漏洞。
語法的不相容是主要升級門檻
關於新版PHP 7,基本上帶來了相當大的網站效能改進,許多用戶的實際經驗都是,有2成到3成的增長,甚至在PHP 7剛推出時,號稱是PHP 5.6版的2倍,但是,為何許多用戶的網站不直接升級?
相較於PHP 5,PHP 7在基本架構上有很大幅度的調整,並且有不少功能無法向下相容。舉例來說,一些舊有錯誤事件的呼叫機制將會出問題,因為原本PHP 5中的致命錯誤(Fatal errors),在PHP 7中則改成異常(Exceptions)處理機制,而這也意謂著,以前的錯誤處理程式碼,在新版環境下就無法觸發執行,必須做出修改,變成符合PHP 7語法才能正常運作。
對於網站開發者而言,必須要檢查、確認後,才能升級,並不像PHP 5.5升級PHP 5.6那樣容易。因為由於有許多函式(Function)必須修改,若是網站本身的程式碼越複雜,修改花費的代價可能就會越高,這很可能就是網站沒有升級的主因。
基本上,各業者均表示,升級難度會因程式碼複雜程度而不同,因此企業理當提早評估,了解需修改的幅度。事實上,PHP開發團隊也延長了中止支援的期限,讓網站主能有更多準備的時間。
網站平臺升級只是安全的一環,企業必須要有更多網站安全的概念
再仔細探究下去,對於用戶停留在PHP 5或是更舊的版本的情況,企業應該採取更積極的態度,因為就怕是企業根本無法認知到這樣的問題,自然也就無從重視網站安全的升級與維護。
對於流量高的大型PHP網站,用戶本身可能就有一群開發團隊負責維運,要因應PHP升級會相對容易。
例如企業IT人員或高層主管,管理公司資安問題是重要的工作,舊的版本有漏洞就應該修補,版本不再支援就應該往上提升。若是企業既有網站使用PHP,就應該命令自家程式設計師去研究如何將PHP 5升級至PHP 7,而不應該放著,沒人處理更新的問題。
而對於網站外包的企業而言,如果網頁設計公司使用PHP,也應該要同樣重視到這樣的問題。
但是,更積極的觀念是,網站技術應該隨著商業模式與資安威脅不斷調整。補夢網趙永弘提到,在他們上萬的客戶中,有三家公司的網站很特別,只要3年一到,沒有任何理由,就是重寫一個網站。這主要應該也是怕之前寫的網站程式語法,在未來幾年可能發生問題,然而,只有極少企業願意定期投入預算。
面對PHP 5將停止支援,目前虛擬主機商的態度是仍提供舊版PHP環境,確實讓企業網站主能有更長的緩衝時間。
無論如何,企業應該要意識到的是,網站本身的環境也有升級的需要,若能注意到這樣的問題,就能提出要求。
對於開發程式語言不斷升級的現況,無可避免,有人認為這會被版本捆綁,而不得不持續前進,但事實上,技術、威脅也是不斷在變化。
而且,不只是各種開發程式語言的生命週期問題,企業在網站安全需要關注的議題其實不少,舉例來說,像是PHP函式庫及CMS系統的弱點,也是近年網站攻擊的目標,還有伺服器端像是Apache、資料庫,SSL憑證過期失效等。此外,網站要全面採取HTTPS加密傳輸,瀏覽器業者和搜尋引擎近幾年來不斷在推動,但是至今仍然有不少網站沒有做,企業自己必須要有所體認。
新聞來源: iThome