V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raysonx
V2EX  ›  宽带症候群

談聯通此次大範圍網絡緩存劫持的危害

  •  
  •   raysonx · 2016-01-20 10:56:52 +08:00 · 5153 次点击
    这是一个创建于 3259 天前的主题,其中的信息可能已经有所发展或是发生改变。
    聯通近日在全國範圍內大建緩存服務器,並將用戶正常訪問 HTTP 的請求劫持到緩存服務器以達到節省骨幹網帶寬與網間流量的問題。抛開此舉是否違法不談,我們今天討論一下這種劫持行為的危害。

    一、可能造成網站和 APP 功能故障。
    1. 緩存更新及失效時間對用戶及网站不可控,緩存的舊數據和新數據無法在時間上保持一致性,可能引發一些「奇怪」的問題。比如好多軟件的最新版本下載地址是不變的,如 http://www.example.com/download/latest.exe ,由于緩存的原因會讓你一直下載到舊版本。這可能會影響到部分軟件的自動更新、自動升級功能。還有如網頁中部分資源引用到舊數據導致網頁排版和功能異常,驗證碼被緩存導致驗證碼怎麼都輸不對等問題。另外,由于劫持的方式是使用 HTTP 302 重定向指令,有的應用可能只接受 HTTP 200 為正確的響應,不會識別 302 指令,造成通信故障。
    2. 從技術上緩存系統只能通過 URL 來區別不同的資源,不能識別具有相同 URL 的不同資源。這會導致資源加載錯誤,針對某一用戶的資源被所有人共享等問題。比如看視頻時,出現前一段和後一段內容不一致,帶有用戶敏感信息的資源被所有人看見等安全問題。
    二. 緩存服務器具備篡改或出售緩存數據的隱患,對信息安全不利。
    三. 緩存服務器故障時,會造成大量用戶「部分斷網」。
    四. 緩存服務器帶寬和處理性能有限,據網上反映由於緩存服務器經常報 403 、 502 錯誤,導致資源無法加載,或由於緩存服務器超載導致加載速度緩慢。
    五. 緩存服務器可能觸發部分網站的反爬蟲(反機器人)、反盜鏈機制,緩存的內容是服務器報錯信息,導致資源無法加載。
    六. 破壞了 URL 對用戶的透明性。假設用戶將劫持後的鏈接分享給其他人,而聯通對緩存服務器做了訪問控制,將會導致鏈接無法在外部打開;另外如果緩存失效而又沒有及時更新的話,可能導致用戶無法通過此 URL 訪問被引用的資源。
    七. 損害了 IDC 和 CDN 的利益,此種網絡劫持使 IDC 和 CDN 的流量大幅減少,影響 IDC 和 CDN 的流量收入。題外話,話說聯通為何不提供商業 CDN 服務而偏要搞劫持?
    八. 目前聯通的劫持依靠 TCP 搶答的方式,但原始數據包還是會到達目標服務器並被正確響應。就我抓包的情況來看,雖然你訪問資源時被 HTTP 302 數據包重定向到了聯通的緩存服務器,但原目標服務器的 HTTP 200 響應還是會被送到用戶端,且由於得不到用戶端的確定不斷觸發超時重傳,極大地浪費了用戶帶寬。

    有人說這是聯通為提升用戶體驗而做的好事,不應該去反對。我是持相反意見的。就目前來看,聯通的骨幹網帶寬和國際出口帶寬還算充足,劫持帶來的問題要比好處大得多。聯通要真想向用戶提供一流的用戶體驗,只能靠擴充骨幹網帶寬和國際出口帶寬,像部分小區寬帶運營商一樣搞緩存劫持是沒有出路的。
    37 条回复    2016-01-21 14:47:17 +08:00
    gaoxt1983
        1
    gaoxt1983  
       2016-01-20 11:01:36 +08:00
    工信部不作为!
    Andy1999
        2
    Andy1999  
       2016-01-20 11:02:37 +08:00 via iPhone
    能打简体字吗
    a84945345
        3
    a84945345  
       2016-01-20 11:03:51 +08:00
    。。。。这繁体字我真看不过来
    raysonx
        4
    raysonx  
    OP
       2016-01-20 11:10:30 +08:00
    @Andy1999
    @a84945345
    我現在用的電腦上面沒有簡化字輸入法,抱歉。
    我用工具轉換了一份簡化字版本。

    *************

    谈联通此次大范围网络缓存劫持的危害
    =====================

    联通近日在全国范围内大建缓存服务器,并将用户正常访问 HTTP 的请求劫持到缓存服务器以达到节省骨干网带宽与网间流量的问题。抛开此举是否违法不谈,我们今天讨论一下这种劫持行为的危害。 

    一、可能造成网站和 APP 功能故障。 
    1. 缓存更新及失效时间对用户及网站不可控,缓存的旧数据和新数据无法在时间上保持一致性,可能引发一些「奇怪」的问题。比如好多软件的最新版本下载地址是不变的,如 http://www.example.com/download/latest.exe ,由于缓存的原因会让你一直下载到旧版本。这可能会影响到部分软件的自动更新、自动升级功能。还有如网页中部分资源引用到旧数据导致网页排版和功能异常,验证码被缓存导致验证码怎么都输不对等问题。另外,由于劫持的方式是使用 HTTP 302 重定向指令,有的应用可能只接受 HTTP 200 为正确的响应,不会识别 302 指令,造成通信故障。 
    2. 从技术上缓存系统只能通过 URL 来区别不同的资源,不能识别具有相同 URL 的不同资源。这会导致资源加载错误,针对某一用户的资源被所有人共享等问题。比如看视频时,出现前一段和后一段内容不一致,带有用户敏感信息的资源被所有人看见等安全问题。 
    二. 缓存服务器具备篡改或出售缓存数据的隐患,对信息安全不利。 
    三. 缓存服务器故障时,会造成大量用户「部分断网」。 
    四. 缓存服务器带宽和处理性能有限,据网上反映由于缓存服务器经常报 403 、 502 错误,导致资源无法加载,或由于缓存服务器超载导致加载速度缓慢。 
    五. 缓存服务器可能触发部分网站的反爬虫(反机器人)、反盗链机制,缓存的内容是服务器报错信息,导致资源无法加载。 
    六. 破坏了 URL 对用户的透明性。假设用户将劫持后的链接分享给其他人,而联通对缓存服务器做了访问控制,将会导致链接无法在外部打开;另外如果缓存失效而又没有及时更新的话,可能导致用户无法通过此 URL 访问被引用的资源。 
    七. 损害了 IDC 和 CDN 的利益,此种网络劫持使 IDC 和 CDN 的流量大幅减少,影响 IDC 和 CDN 的流量收入。题外话,话说联通为何不提供商业 CDN 服务而偏要搞劫持? 
    八. 目前联通的劫持依靠 TCP 抢答的方式,但原始数据包还是会到达目标服务器并被正确响应。就我抓包的情况来看,虽然你访问资源时被 HTTP 302 数据包重定向到了联通的缓存服务器,但原目标服务器的 HTTP 200 响应还是会被送到用户端,且由于得不到用户端的确认不断触发超时重传,极大地浪费了用户带宽。 

    有人说这是联通为提升用户体验而做的好事,不应该去反对。我是持相反意见的。就目前来看,联通的骨干网带宽和国际出口带宽还算充足,劫持带来的问题要比好处大得多。联通要真想向用户提供一流的用户体验,只能靠扩充骨干网带宽和国际出口带宽,像部分小区宽带运营商一样搞缓存劫持是没有出路的。
    Andy1999
        5
    Andy1999  
       2016-01-20 11:12:30 +08:00 via iPhone
    其实劫持这事吧。。。怎么说呢 如果直接像香港一些运营商会后端自动匹配 md5 那也就算了,但是我们这边劫持还带改内容的。。。
    a84945345
        6
    a84945345  
       2016-01-20 11:13:35 +08:00
    劫持得不要不要的,天天给我打广告
    zaqxsw123nm
        7
    zaqxsw123nm  
       2016-01-20 11:27:22 +08:00
    又一个大坑
    dreamcountry
        8
    dreamcountry  
       2016-01-20 11:42:01 +08:00
    这是违法行为,谁去举报
    tobyxdd
        9
    tobyxdd  
       2016-01-20 11:45:42 +08:00
    现在似乎停止了?
    aivier
        10
    aivier  
       2016-01-20 11:50:37 +08:00
    /t/252039

    扒皮向,劫持任意网站到携程代码解密
    oott123
        11
    oott123  
       2016-01-20 11:55:51 +08:00
    TCP 也能抢答?
    不是说是 HTTP 劫持么…
    raysonx
        12
    raysonx  
    OP
       2016-01-20 11:57:28 +08:00 via Android   ❤️ 1
    @oott123 HTTP 是應用層協議, TCP 是傳送層協議。 HTTP 運行於 TCP 之上的。
    oott123
        13
    oott123  
       2016-01-20 11:59:42 +08:00
    @raysonx 哦哦,好像确实如此,暴露了我基础知识不扎实…
    那再请教一下,为何联通作为 ISP 是否可以直接拦截 TCP 然后伪造响应(而不用抢答)呢?
    raysonx
        14
    raysonx  
    OP
       2016-01-20 12:06:49 +08:00 via Android
    @oott123 當然可以,但搶答可以用旁路設備實現,直接攔截需要在骨幹路由器上做,後者會嚴重影響性能
    Khlieb
        15
    Khlieb  
       2016-01-20 12:10:17 +08:00 via Android
    @zaqxsw123nm 耍流氓
    br00k
        16
    br00k  
       2016-01-20 14:04:36 +08:00
    国内带宽互通问题太严重了。
    hggg
        17
    hggg  
       2016-01-20 14:11:31 +08:00 via Android
    之前我们遇到过用户反馈下载 app 为老版本的问题,后来发现用户使用的是艾普,长城这种宽带,宽带运营商做了缓存。后来修改下载链接,带上版本号才解决问题。
    没想到了联通也这么干!
    buddha
        18
    buddha  
       2016-01-20 15:54:58 +08:00
    个人怎么做能规避这种缓存呢, 是只有 http 的会吗 还是说 https 的也会?
    raysonx
        19
    raysonx  
    OP
       2016-01-20 15:57:44 +08:00
    @buddha 屬於中間人都攻擊( Man-in-the-middle attack, MITM )的一種, HTTPS 可以防劫持,因為網站證書不可偽造,否則會報證書錯誤。
    macdino
        20
    macdino  
       2016-01-20 17:46:27 +08:00
    有些运营商现在已经拒绝 HTTPS 的服务了。。
    965380535
        21
    965380535  
       2016-01-20 17:55:06 +08:00
    对于联通的行为,我本人表示极为遗憾。
    test0x01
        22
    test0x01  
       2016-01-20 18:39:02 +08:00 via Android
    写得很不错 表扬
    raysonx
        23
    raysonx  
    OP
       2016-01-20 20:46:31 +08:00
    @tobyxdd 今晚測試了一下,發現好像不對境內網站劫持了,境外網站依舊劫持。
    不過我沒有花時間仔細去確認是不是真的不劫持境內網站了。
    cmxz
        24
    cmxz  
       2016-01-20 20:52:56 +08:00
    关于 7 ,有可能劫持就是为了让大家使用联通的 CDN 业务…
    至少我见过移动有一点点这样的意思
    VmuTargh
        25
    VmuTargh  
       2016-01-20 21:04:01 +08:00
    嗯……看完我默默地打开了自己的 CloudFlare 页面,把 SSL 和 HSTS 开了再说
    tobyxdd
        26
    tobyxdd  
       2016-01-20 21:13:16 +08:00
    @raysonx 我试了...似乎已经全没了?
    raysonx
        27
    raysonx  
    OP
       2016-01-20 21:41:10 +08:00
    @tobyxdd 我今晚測試時只打開了 imgur.com 的首頁,依然會發現一大堆 302.
    Kisesy
        28
    Kisesy  
       2016-01-20 21:45:23 +08:00
    山东 联通,没发现这种问题
    aivier
        29
    aivier  
       2016-01-20 21:48:28 +08:00
    @raysonx 不是早就墙了?
    raysonx
        30
    raysonx  
    OP
       2016-01-20 21:56:05 +08:00 via Android
    @aivier 北京聯通,一直都能打開啊
    linjuyx
        31
    linjuyx  
       2016-01-20 22:10:07 +08:00
    @raysonx 只劫持境外还能接受,反正都需要扶墙
    raysonx
        32
    raysonx  
    OP
       2016-01-20 22:19:08 +08:00 via Android
    @linjuyx 我還不能確定,我投訴的時候是通通劫持的,連自家聯通機房也劫持。最近劫持頻率低了,我也沒仔細去測試。
    aprikyblue
        33
    aprikyblue  
       2016-01-20 22:27:22 +08:00
    山东联通没有发现此问题
    a656088752
        34
    a656088752  
       2016-01-21 02:16:26 +08:00
    广东联通已经全没了电脑手机都试了
    billytv
        35
    billytv  
       2016-01-21 08:19:21 +08:00
    劫持不是一直存在吗? 广东联通在更新 directX runtime 时会被劫持到缓存, 下载速度很快, 然而缓存服务器上的文件有损毁, 签名跟 Mircrosoft 的对不上, 不管重新下载多少次安装时都会出错. 这状况已经半年多, 每次重装都要扶墙
    leavic
        36
    leavic  
       2016-01-21 11:03:37 +08:00
    缓存本身没有错,但缓存没有合适的更新机制和管理机制就错了。
    raysonx
        37
    raysonx  
    OP
       2016-01-21 14:47:17 +08:00
    @leavic 個人感覺維護好一套緩存系統太難了,需要很高的技術、運維和管理成本。這次聯通搞這麼大規模的緩存,不知道是為了搞什麼大動作。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1280 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 17:23 · PVG 01:23 · LAX 09:23 · JFK 12:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.