開放全球應用安全項目(OWASP)是一個線上社群,專門提供有關物聯網、系統軟體及網路應用安全的免費可用文章、方法論、文件、工具及技術。OWASP提供的資源全為免費且開放,由一個名為OWASP基金會的非營利組織領導。OWASP Top 10 – 2021是基於40多個合作組織的全面數據編制而成的最新研究成果。
– OWASP網站
OWASP定期發布Top 10漏洞報告,專注於網路應用中的漏洞。
本文將介紹如何透過Apache APISIX API Gateway來修復其中一些漏洞。
OWASP Top 10 2021
2021年的報告提及:
- A01:2021-存取控制失效
- A02:2021-加密失敗
- A03:2021-注入攻擊
- A04:2021-不安全
- A05:2021-安全配置錯誤
- A06:2021-脆弱及過時的組件
- A07:2021-識別與驗證失敗
- A08:2021-軟體與數據完整性失敗
- A09:2021-安全日誌記錄與監控失敗
- A10:2021-伺服器端請求偽造
欲了解更多詳情,請查閱完整報告。
修復漏洞取決於其具體性質。例如,解決脆弱及過時組件問題是一個流程驅動的過程,需要嚴格管理版本並淘汰舊版本。而有些漏洞則是技術性的,僅需在反向代理或API Gateway中進行適當配置,例如伺服器端請求偽造。
無人關心安全性
安全性是一個敏感話題,因為加強安全性並不會為企業帶來直接價值。以職業發展為導向的經理們不會關心安全性,因為他們無法在下一次年度評估中展示他們如何通過提升X%的公司利潤來增加業績。除非董事會認真對待安全性,否則可能無人問津。因此,大多數組織實施的是基於勾選項的安全措施,即所謂的「合理否認」。若您有意妥善實施安全性,我在之前的博客文章中已分享了一些想法:”將安全性視為風險“。
總而言之,確保應用程序安全可能無法獲得大量預算,甚至沒有預算。因此,我們必須精明行事,尋找現有組件。幸運的是,OWASP提供了一個即用型配置來應對Top 10安全問題,該配置名為核心規則集。不幸的是,它針對的是ModSecurity:
ModSecurity,又稱Modsec,是一款開源的網頁應用程式防火牆(WAF)。最初設計為Apache HTTP Server的一個模組,後來發展成為提供一系列HTTP請求和響應過濾功能及其他安全特性,適用於多種平台,包括Apache HTTP Server、Microsoft IIS和Nginx。此軟體依Apache許可證2.0版釋出,完全免費。
儘管理論上可以透過Apache APISIX配置來設定Nginx,但還有一種更直接的方法。
OWASP核心規則集與Coraza
核心規則集的描述非常符合我們的需求:
OWASP® ModSecurity核心規則集(CRS)是一套用於ModSecurity或相容網頁應用程式防火牆的通用攻擊檢測規則。CRS旨在保護網頁應用程式免受廣泛攻擊,包括OWASP十大風險,同時盡量減少誤報。CRS提供對多種常見攻擊類別的防護,包括:
- SQL注入(SQLi)
- 跨站腳本(XSS)
- 本地文件包含(LFI)
- 遠端文件包含(RFI)
- PHP代碼注入
- Java代碼注入
- HTTPoxy
- Shellshock
- Unix/Windows Shell注入
- 會話固定
- 腳本/掃描器/機器人檢測
- 元數據/錯誤洩漏
OWASP 亦提供 Coraza,一個可用作 Go 庫的 ModSecurity 移植版本。Coraza Proxy Wasm 基於 Coraza 構建,實現了代理-wasm ABI,該 ABI 定義了一組用於代理的 Wasm 接口。最後,Apache APISIX 提供了代理-wasm 整合。
綜合應用
讓我們總結一下:
- OWASP 提供了一份十大網絡安全漏洞清單。
- 通過核心規則集為 ModSecurity 實現了這些漏洞。
- Coraza 是 ModSecurity 的一個移植版本,作為代理-wasm 實現可用。
我們可以這樣配置 Apache APISIX,以合理的和安全的默認設置。讓我們開始吧。
首先,Coraza 並非 Apache APISIX 分發的一部分。然而,使用 Docker 在這裡添加它相當直接:
FROM apache/apisix:3.8.0-debian
ENV VERSION 0.5.0 #1
ENV CORAZA_FILENAME coraza-proxy-wasm-${VERSION}.zip #1
ADD https://github.com/corazawaf/coraza-proxy-wasm/releases/download/$VERSION/$CORAZA_FILENAME . #2
USER root #3
RUN <<EOF
apt-get install zip -y #4
unzip $CORAZA_FILENAME -d /usr/local/apisix/proxywasm
rm $CORAZA_FILENAME
apt-get remove zip -y
chown -R apisix:apisix /usr/local/apisix/proxywasm
EOF
USER apisix #5
- 定義變量以提高可維護性
- 獲取 Coraza Wasm 版本。
- 在最近的 APISIX 版本中,用戶為
apisix
以加固安全性。由於我們需要安裝包,必須切換到root
。 - 安裝
unzip
,因為它未安裝,解壓下載的檔案,移除檔案,卸載unzip
,並更改提取文件夾的所有者。 - 切換回使用者
apisix
。
下一步是配置 APISIX 本身以使用 Coraza Wasm 插件。
wasm:
plugins:
- name: coraza-filter #1
priority: 7999 #2
file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm #3
- 在 Wasm 代碼中設置過濾器的名稱
- 設定最高優先級,以便它在任何其他插件之前運行。
- 指向提取的文件的路徑(參見上面的
Dockerfile
)
最後,我們可以將插件分配給路由或將其設置為全局規則,以應用於每個路由。我使用靜態配置:
global_rules:
- id: 1
plugins:
coraza-filter: #1
conf:
directives_map: #2
default:
- SecDebugLogLevel 9 #3
- SecRuleEngine On #4
- Include @crs-setup-conf #5
- Include @owasp_crs/*.conf #6
default_directives: default #7
- 配置
coraza-filter
插件,現在它已可用。 - 定義配置。在這裡,我們定義了一個單一的
default
,但我們可以定義多個並在不同的路由中使用不同的配置。 - 增加日誌級別以查看日誌中的情況。
- 啟動引擎。
- 使用 Coraza 設置。
- 使用所有規則。我們可以選擇我們想要的規則以獲得更精細的控制。
- 使用上面定義的
default
配置。
我們繼續定義路由以測試我們的設置。讓我們稱這個路由為 /get
:
curl localhost:9080?user=foobar
響應如預期:
{
"args": {
"user": "foobar"
},
"headers": {
"Accept": "*/*",
"Host": "localhost",
"User-Agent": "curl/8.4.0",
"X-Amzn-Trace-Id": "Root=1-65b9fa13-75900dc029e156ec764ae204",
"X-Forwarded-Host": "localhost"
},
"origin": "192.168.65.1, 176.153.7.175",
"url": "http://localhost/get?user=foobar"
}
現在,讓我們嘗試在查詢字符串中發送 JavaScript。這種請求在服務器端是不可能預期的,因此我們的基礎設施應該保護我們免受其害。
curl 'localhost:9080?user=<script>alert(1)</script>'
響應是 403 HTTP 狀態碼。如果我們查看日誌,我們可以看到以下提示:
Coraza: Warning. XSS Attack Detected via libinjection [file "@owasp_crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf"]
Coraza: Warning. NoScript XSS InjectionChecker: HTML Injection
Coraza: Warning. Javascript method detected
Coraza: Access denied (phase 1). Inbound Anomaly Score Exceeded in phase 1
Coraza 完成了工作!
結論
多數機構並未對安全性給予足夠激勵,因此我們需巧妙應對,盡可能利用現有元件。
透過整合Coraza及核心規則集,我們能強化Apache APISIX對抗OWASP Top 10的威脅。
深入探討
本篇文章的完整原始碼可在GitHub上找到。
Source:
https://dzone.com/articles/hardening-apache-apisix-with-the-owasps-coraza-and