Kong API 網關 (https:♣ //github.com/Kong/kong) 是(shì)目前最受歡迎的(de∑♦≥)雲原生(shēng) API 網關之一(yī),有(yǒu)開(kāiπβ©)源版和(hé)企業(yè)版兩個(gè)分(fēn)支,λ♠β¥被廣泛應用(yòng)于雲原生(shēng)、微(wēi)服務、分(fēn)布φ₽♣↕式、無服務雲函數(shù)等場(chǎng)景的(β×¥±de)API接入中間(jiān)件(jiàn),為(wèi)雲原生(s↑✘©∞hēng)應用(yòng)提供鑒權,轉發,¶& δ負載均衡,監控等能(néng)力。騰訊藍(lán)軍在紅(hóng)藍(lán)對(duì)抗≈∏>實戰演練中發現(xiàn)雲原生(shēng) API ≈→"網關的(de)特性和(hé)能(néng)力,可(kě)能(γ<©✔néng)成為(wèi)從(cóng)外(wài)網滲透 &進內(nèi)網的(de)新入口;且此前 Kong 在容器××(qì)場(chǎng)景的(de)默認配置、文(wén)檔和(hé)實踐,✔♦都(dōu)可(kě)能(néng)會(huì)導↕'≈緻用(yòng)戶将這(zhè)個(gè∏±)風(fēng)險暴露給外(wài)網。
這(zhè)個(gè)安全問(wèn)題是(sh™♦"ì)如(rú)何發現(xiàn)的(de)?
騰訊藍(lán)軍在一(yī)次紅(hóng)藍(lán)對(duìπ>)抗安全演練過程中,根據對(duì)雲原生(shēng)和(hé)應用(yònδ™g)容器(qì)化(huà)實踐的(de)理(lǐ)解,我們把外(wài↑≠§π)網攻擊入口鎖定在 API 網關這(zhè)個(gè)管理(lǐ♣$)南(nán)北(běi)流量的(de)服務組件(jiàn₹)上(shàng),成功通(tōng)過該組件(jiàn)訪問φ≤×∏(wèn)到(dào)了(le)內(nèi)網核心設施進行(xíng)內(nèi)網滲透。
這(zhè)個(gè)安全問(wèn)題的(de)影(yǐng)響是(shì)什♣✘☆(shén)麽?
Kong 使用(yòng) Kong Admin Rest AP¥★✔∑I 作(zuò)為(wèi)管理(lǐ) Kong Proxy 能(n₹α×éng)力的(de)關鍵入口,以支持最大(dà)程度的(de)靈活性;在開(™∑kāi)源分(fēn)支裡(lǐ),這(zhè)個(gè)管理(lǐ)入口是(shì)沒" φ有(yǒu)鑒權能(néng)力的(de)(™φKong企業(yè)版支持對(duì) Kong✘< Admin Rest API 進行(xíng)角色控制( ✘<zhì)和(hé)鑒權),Kong建議(yì)用(yòng)戶在網絡層進行(♣₽xíng)訪問(wèn)控制(zhì);當攻擊δε€§方可(kě)以訪問(wèn)到(dào)這¥π®"(zhè)個(gè) API,他(tā)就(jiù)具有(yǒu)了(le)α↓∞¥ Kong Proxy 的(de)所有(yǒu)能(néng)力,可(kě)以"β查看(kàn)和(hé)修改企業(yè)當前在南(nán)北(∏"•běi)流量管理(lǐ)上(shàng)的(de)配 ≤×Ω置,可(kě)以直接控制(zhì) API 網關使其成為₹≤'δ(wèi)一(yī)個(gè)開(kāi)<σ放(fàng)性的(de)流量代理(lǐ)(比SSRF更便于使♣β↑≥用(yòng)和(hé)利用(yòng));從(cón÷γg)攻擊方的(de)角度思考,控制(zhì)了(le)這(z±®•hè)個(gè) API 等于是(shì)擁有(yǒu)Ω©®了(le)摸清網絡架構和(hé)打破網絡邊界的(de)能(néng)力。
企業(yè)在使用(yòng) Kong 作(zu♣$§ò)為(wèi)雲原生(shēng)架構的(de)API網關時(sh←§>í),通(tōng)常會(huì)使用(yòng)容器(qì)的(de)方式進行(xíng)搭✔→€∞建,以支持分(fēn)布式和(hé)可(kě)擴展性;而在 2.0.3 版本之δ♥前,當企業(yè)遵循官方文(wén)檔或默認≥♣₩★配置使用(yòng) Docker 容器(qì)的(de)方式搭建 ☆Kong API 網關時(shí),官方文(wén)檔和(hé)默認配置都(dōu©δ)會(huì)指引用(yòng)戶将未經鑒權的(de) Adm ©♦↔in 管理(lǐ)能(néng)力對(duì)公網開(kāi)放(fàng)(0.0.0.0$≈±),導緻攻擊者可(kě)以控制(zhì)網關的(de)♠₽ 全部能(néng)力,修改 upstreams、services、route<α©r 等配置,進而攻擊企業(yè)內(nèi)網。這(zhè)也(£γ∏yě)是(shì)為(wèi)什(shén)麽☆® ,在公網上(shàng)開(kāi)放(fàng)的(de) Kong Admin Rest✔♥✔× API 并不(bù)少(shǎo)見(jiàn),可(kě)∏©≈→以從(cóng) hostname 等配¶¥≥置信息可(kě)以看(kàn)出絕大(dà)部分(fēn)是(shì)基于 d$€ocker 容器(qì)進行(xíng)搭建↔♠ 的(de)。後來(lái),我們在這(zhè)個(gè)問(wèn)題上(shàng)和(₽∑£hé) Kong 安全團隊進行(xíng)交流,Kong 團隊很(hěn)快(k$∞uài)就(jiù)調整了(le)容器(qì)場(chǎng)景的♥∞δ (de)安全設計(jì)。
如(rú)何判斷企業(yè)資産是(shì)否受該問(wèn)題影∏π₩(yǐng)響?
使用(yòng)掃描器(qì)或HIDS去(qù)發現(xiàn)這(z∑φhè)裡(lǐ)的(de)風(fēng)險是(shì)比較直接的(de)。騰訊藍(lán)軍✔σ£ 和(hé)漏洞掃描洞犀團隊、主機(jī)∏>¥安全洋蔥團隊一(yī)起在去(qù)年(σ₽β♣nián)12月(yuè)25日(rì)上(shàng)線了(le)相(xiàng∞®)關策略已覆蓋對(duì)雲原生(shēng)↑π'§API網關組件(jiàn)的(de)風(fēng)險發現(xiàn)能(néng)力,并集ε•成到(dào)內(nèi)部 devops 平台供業(yè)務團隊使用(yòng)。
Kong Admin Rest API 的(de)根目錄 banne₩×γ©r 包含了(le)很(hěn)多(duō)明(míng)顯的(de)☆¶•特征,根據這(zhè)些(xiē)特征可(kě)以比較容易的(dδ₹↕✘e)獲取到(dào)開(kāi)放(fàng)在外(wài)網的(de) Admin Res&β→t API,同時(shí)也(yě)有(yǒu)很(hěn)标準的(de) se•∑rver response header: Server: kong/0.10.3
,例如(rú):
HTTP/1.1200 OK
Date:Wed,15Apr202003:03: >16 GMT
Content-Type: application/js→¶on; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Or÷ ♠€igin:*
Server: kong/2.0.2
Content-Length:8312
X-Kong-Admin-Latency:2
{
"plugins":{
"enabled_in_cluster":[],
"available_on_server":{}
},
"tagline":"Welcome to kong",≥₹'
"configuration":{
"...":"...",
"kong_env":"/usr/local/kong/.kong_env",
"cassandra_schema_conse↑β£nsus_timeout":10000,
"log_level":"notice",
"admin_ssl_cert_key_default₽≥≈":"/usr/local/kong/ssl/admin-kong-default.♣→λ®key",
"real_ip_recursive":"off",
"proxy_error_log":"/dev/stderr>±✔",
"ssl_cipher_suite":"intermediate",
"router_consistency":"strict",
"pg_port":5432,
"cassandra_keyspace":"kong",
"ssl_cert_default":"/usr/local/kong≥</ssl/kong-default.crt",
"nginx_http_ssl_session_timeout":"1d",
"error_default_type":"text/pl₩γ÷ain",
"role":"traditional",
"admin_ssl_enabled":false,
"trusted_ips":{}
},
"version":"2.0.2",
"node_id":"0bfe4d56-c5f3-4df0-9af1-4fa★∏♥bb0cba108",
"lua_version":"LuaJIT 2.∞¥ 1.0-beta3",
"prng_seeds":{
"pid: 22":772511031151,
"pid: 1":431556103185
},
"timers":{
"pending":9,
"running":0
},
"hostname":"72f74e7bd339"
}
我們使用(yòng)知(zhī)道(dào)•β創宇的(de) ZoomEye 快(kuài)速對(duì)目前公網上(shàng)的(deα£÷¶) Kong 資産進行(xíng)檢索,可(kě)以£"•找到(dào) 5 萬多(duō)個(gè) kon∑₩≠g 服務在公網開(kāi)放(fàng),根據上(shàng)述特征可(kě)以發現(x©ε€iàn)有(yǒu) 3 千多(duō)個(gè) Adm÷∏↕in Rest API 未鑒權對(duì)外(wài);ZoomEye 在網絡空(kōn ≈∏g)間(jiān)搜索能(néng)力上(shàng)的(de)←§優越性極大(dà)的(de)幫助了(le)我們對(duì)此風(fēng)險的(de)整體✔>(tǐ)評估和(hé)分(fēn)析。
Kong 之外(wài)的(de)API網關組件(jiàn)
為(wèi)支持雲原生(shēng)、微(&₽€✘wēi)服務等應用(yòng)的(de)需求,API 網關在實現(xiàn≤↑)的(de)過程中都(dōu)會(huì)對(duì₹←≤)配置的(de)靈活性有(yǒu)所側重,所以把配置能λ£≈©(néng)力從(cóng)主機(jī)層開∏λ(kāi)放(fàng)成可(kě)訪問(wèn)可(kě)動态修改的(de)配置服務是(shì)↓→很(hěn)多(duō) API 網關組件(jiàn)都(dōu)會(huì§←)優先支持的(de),相(xiàng)似的(de)問÷•¥(wèn)題也(yě)在類似的(de)網關組件(jiàn)中存在,可(kě)以使用(yòng)&ε相(xiàng)同的(de)攻擊手法進行(xíng)利用(yòng)。
同時(shí)也(yě)需要(yào)注意:大(dà)部分Ω&(fēn)情況下(xià)雲原生(shēng) API 網關是(shì)不(b₽©↕ù)會(huì)附帶一(yī)個(gè) We&£₽b Dashboard 供用(yòng)戶使用(yòng)的(de),所以針★$對(duì)像 Kong 這(zhè)類較著名的(de) API 網關組件< λ(jiàn),業(yè)務團隊在使用(yòng)過程中可(kěε←××)能(néng)會(huì)搭建第三方 Kong Dashboαard 方便進行(xíng)配置,而這(zhè)些(±♥→"xiē) Dashboard 的(de)鑒權設計(j£&♣ì)是(shì)遠(yuǎn)遠(yuǎn)無法滿足>≥一(yī)個(gè)運維平台的(de)安全需求的(de)。π±
時(shí)間(jiān)線
2020/03/19 騰訊藍(lán)軍同Kong安全團隊交流在容器(qì)場(chε'ǎng)景安全風(fēng)險
2020/03/20 Kong團隊開(kāi)始逐步對(duì)産品和(hπ↑ δé)文(wén)檔進行(xíng)調整
2020/03/31 Kong團隊發送緻謝(xiè)郵件(jiàn)并反饋産 ✔←品修複細節
2020/03/31 向 CNVD 報(bào)告該漏洞和(hé)利用(yò↕≈φng)場(chǎng)景
2020/04/12 根據在 Docker 場(chǎng)景存在的(de)問(wεβèn)題分(fēn)配 CVE-2020-×∑11710
2020/04/15 騰訊藍(lán)軍發布漏洞提醒和(h>♥£¥é)漏洞信息
參考鏈接
https://github.com/Kong/kong™ ₹≈
https://cve.mitre.org/cgi-bin/cvename.cgi?β'©name=CVE-2020-11710
https://github.com/Kon¥≥ g/docker-kong/commit/18c4029ee3d4a©δ≈λcfece679fa87b5dd081fb56fdπ¶★d5
https://www.zoomeye.org/
注: 在複盤過往的(de)紅(hóng)藍(lán)對(duì)抗過程中,突然發現(x→iàn)此處的(de)風(fēng)險可(kě)能(néng)攻防兩方都(dōu)×↓ ✔會(huì)有(yǒu)所疏忽,倉促之間(jiān)發布公告,請£÷γ(qǐng)業(yè)界的(de)大(dà)佬們斧正α±®。
聲明(míng):本文(wén)來(l↓₹ái)自(zì)騰訊安全應急響應中心,版權歸作(zuò)者× 所有(yǒu)。文(wén)章(zhāng)內(nèi)容僅代表作(zuò)者獨立觀δ≠≠€點,不(bù)代表安全內(nèi)參立場(chǎng),轉載目的(de)在γ↑∞π于傳遞更多(duō)信息。如(rú)有(yǒu)侵權,請(qǐng)聯系 anquann ¥'₽eican@163.com
商務咨詢:周總 13970784651 &nδ$"bsp;
業(yè)務咨詢:肖總 18170768922
郵箱:xiaolq@haibo-tech.com
網址:http://www.haibo-tβ' ech.com
地(dì)址:江西(xī)省贛州市(shì)章(zh↕ ✘āng)貢區(qū)橙香大(dà)道(dào)28号嘉福金(jīn)融中心£γ5樓