Istio 发布安全版本,防止 DoS 攻击
Posted K8sMeetup社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Istio 发布安全版本,防止 DoS 攻击相关的知识,希望对你有一定的参考价值。
技术校对:星空下的文仔(才云)
近日,服务网格 Istio 发布了两个新版本:1.1.13 和 1.2.4。以修复通过 Istio 对服务进行拒绝服务(DoS)攻击的漏洞。
ISTIO-SECURITY-2019-003:一位 Envoy 用户公开报告了一个问题(参见 Envoy Issue 7728),指出正则表达式匹配可导致 Istio 因大量 URI 而崩溃。
ISTIO-SECURITY-2019-004:Envoy 和 Istio 容易受到一系列基于 HTTP/2 的简单 DoS 攻击。
CVE-2019-9512
CVE-2019-9513
CVE-2019-9514
CVE-2019-9515
CVE-2019-9518
以下 Istio 版本易受攻击:
1.1,1.1.1,1.1.2,1.1.3,1.1.4,1.1.5,1.1.6,1.1.7,1.1.8,1.1.9,1.1.10,1.1.11,1.1.12
1.2,1.2.1,1.2.2,1.2.3
1.1 版本之前的所有版本已不再受团队支持,易受攻击。
ISTIO-SECURITY-2019-003:要检测群集中的 Istio API 是否用了正则表达式,请运行以下命令。
$ cat <<'EOF' | bash -
set -e
set -u
set -o pipefail
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "Checking regex usage in Istio API ..."
AFFECTED=()
JWT_REGEX=()
JWT_REGEX+=($(kubectl get Policy --all-namespaces -o jsonpath='{..regex}'))
JWT_REGEX+=($(kubectl get MeshPolicy --all-namespaces -o jsonpath='{..regex}'))
if [ "${#JWT_REGEX[@]}" != 0 ]; then
AFFECTED+=("AuthenticationPolicy")
fi
VS_REGEX=()
VS_REGEX+=($(kubectl get VirtualService --all-namespaces -o jsonpath='{..regex}'))
if [ "${#VS_REGEX[@]}" != 0 ]; then
AFFECTED+=("VirtualService")
fi
HTTPAPI_REGEX=()
HTTPAPI_REGEX+=($(kubectl get HTTPAPISpec --all-namespaces -o jsonpath='{..regex}'))
if [ "${#HTTPAPI_REGEX[@]}" != 0 ]; then
AFFECTED+=("HTTPAPISpec")
fi
QUOTA_REGEX=()
QUOTA_REGEX+=($(kubectl get QuotaSpec --all-namespaces -o jsonpath='{..regex}'))
if [ "${#QUOTA_REGEX[@]}" != 0 ]; then
AFFECTED+=("QuotaSpec")
fi
if [ "${#AFFECTED[@]}" != 0 ]; then
echo "${red}YOU ARE AFFECTED: found regex used in ${AFFECTED[@]}${reset}"
exit 1
fi
echo "${green}YOU ARE NOT AFFECTED: did not find regex usage${reset}"
EOF
ISTIO-SECURITY-2019-004:如果 Istio 终止外部发起的 HTTP,那么它就容易受到攻击。如果是其他组件终止了 HTTP(如 HTTP 负载均衡器),且该组件不受基于 HTTP/2 的 DoS 攻击影响,那么 Istio 就是安全的。
此次安全版本更新就是为了修复这两个漏洞:
对于 Istio 1.1.x 部署:更新到最低版本的 Istio 1.1.13;
对于 Istio 1.2.x 部署:更新到最低版本的 Istio 1.2.4。
推荐阅读:
以上是关于Istio 发布安全版本,防止 DoS 攻击的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java 读取文件或流的最强大的方法(以防止 DoS 攻击)