| CVE編號 | CVE-2018-19131 |
|---|---|
| 影響產品 | Squid 3.1.12.1 ~ 3.1.23 /Squid 3.2.0.4 ~ 3.5.28/ Squid 4.0 ~ 4.3 |
| 解決辦法 | (1)下載Squid 4.4,參考http://www.squid-cache.org/Versions/v4/ (2)修補Squid 3.5,參考http://www.squid-cache.org/Versions/v3/3.5/changesets/squid-3.5-f1657a9decc820f748fa3aff68168d3145258031.patch (3)修補Squid 4,參考http://www.squid-cache.org/Versions/v4/changesets/squid-4-828245b90206602014ce057c3db39fb80fcc4b08.patch |
| 張貼日 | 2018-12-21 |
| 上稿單位 | TWCERT/CC |
●概述:
以C++開發之Squid Cache係開源的HTTP代理伺服器,可當快取伺服器並過濾流量,支援Unix、mac OS X、Linux、Windows等平台,運行HTTP、HTTPS、FTP等主流協定,應用於多種防火牆及影音串流服務,經德國研究員Nikolas Lohmann分析,Squid之錯誤訊息樣本網頁ERR_SECURE_CONNECT_FAIL,因特定變數處理不當,無法辨識http程式轉意字元,若接收到惡意X.509憑證內容,將遭注入任意html code,所產生之警告網頁在受害瀏覽器發動Cross-Site Scripting,相當諷刺,攻擊者竟可藉由啟動TLS/SSL安全設定,找到滲透入口,反而取消"--enable-ssl"或"--with-openssl"能避免生成夾帶XSS的官方訊息,Squid project已釋出更新版本,舊版修補方式亦同步公告。
●編註:
(1)如何注入html code
雖然本文探討Squid生成網頁併發Cross-Site Scripting,但前導條件卻是錯誤訊息網頁可被惡意操作,寫入html code後成為XSS事件,Squid Cache為提供流量過濾之安全服務,可支援TLS/SSL,運作時涉及X.509憑證,而X.509有固定格式結構,Squid的設計建置,以ERR_SECURE_CONNECT_FAIL當作樣本網頁,當處理TLS/SSL異常時,產生相關錯誤訊息,ERR_SECURE_CONNECT_FAIL內某些變數%ssl_subject、%ssl_ca_name、%ssl_cn,被配賦數值時未經檢查階段,被注入%D字碼後無法辨識,竟讓X.509憑證部分資料欄位直接注入,故駭客經由惡意HTTPS server網站送出偽造X.509憑證,讓Squid偵測產生錯誤訊息網頁,HTTPS response本身已埋入攻擊性html code,仍當成正常內容,送到受害者瀏覽器,發動XSS。故並非所有舊版烏賊快取都具相同狀況,漏洞條件為啟動TLS/SSL且面臨特製X.509憑證時,因為別類錯誤訊息網頁均未牽涉%D字碼與憑證。
(2)應變方案
若無法對IT環境進行重大變更,建議以下權宜作法:
(2-1)主要檢查ERR_SECURE_CONNECT_FAIL網頁樣板,移除使用%D的巨集,其他客製化錯誤訊息網頁也須過濾。
(2-2)Squid-3.1 ~ 3.4.14版取消"--enable-ssl"
(2-3)Squid-3.5 以後版本取消"--with-openssl"
(3)簡述X.509
(3-1)X.509是密碼學裡公鑰憑證的格式標準,應用在多種Intenet協定(包括TLS/SSL),亦用於電子簽章,X.509憑證有公鑰、身分資訊(如host name、組織名稱、個體名稱等)和簽章資訊(憑證簽發機構CA的簽章,或是自簽章),憑證擁有者可建立安全通訊,對檔案進行數位簽章。
(3-2)X.509 v3 數位憑證結構
☆憑證:版本號、序列號、簽章演算法、頒發者、憑證有效期、主題、主題公鑰資訊、頒發者唯一身分資訊(可選項)、主題唯一身分資訊(可選項)、擴充資訊(可選項)
☆憑證簽章演算法
☆數位簽章
