距离 Istio 1.5 版本发布还有 天。

ISTIO-SECURITY-2019-003

Security Bulletin

安全漏洞详情
CVE(s)
CVSS 影响评分
受影响的版本

内容

一位 Envoy 用户报告了一个 (c.f. Envoy Issue 7728) 关于非常大的URI的正则表达式会导致 Envoy 崩溃的问题。通过调查,Istio 团队发现如果用户正在这些 Istio API(JWT, VirtualService, HTTPAPISpecBinding, QuotaSpecBinding)中使用正则表达式,那么这个问题可能在 Istio 中引发 Dos 攻击。

影响范围

运行下面的命令可以打印下面的输出,检测在你的集群中是否使用了 Istio 正则表达式相关的 API。

  • YOU ARE AFFECTED: found regex used in AuthenticationPolicy or VirtualService
  • YOU ARE NOT AFFECTED: did not find regex usage
$ 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

防范

漏洞报告

希望大家遵循漏洞报告步骤,以报告任何可能会导致安全漏洞的 bug。

这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!