MindsDB Fixes Critical CVE-2024-24759: DNS Rebinding Attack Bypasses Security Protections
2024/09/07 SecurityOnline — AI アプリを構築するための OSS プラットフォームとして人気の MindsDB は、セキュリティ対策のバイパスを許してしまう深刻な脆弱性に対してパッチを適用した。この脆弱性 CVE-2024-24759 (CVSS:9.3) の悪用に成功した攻撃者は、DNS リバインディング攻撃を用いて、SSRF (Server-Side Request Forgery) 対策をバイパスする可能性を手にする。

この脆弱性の悪用に成功した攻撃者は、サーバから悪意のリクエストが送信されるのを防ぐ、重要なセキュリティ対策である SSRF 保護のバイパスを、ユーザーに代わって実行できる。それにより攻撃者は、機密データへのアクセス/任意のコードの実行/サービス拒否攻撃などを実行する可能性を得る。
DNS リバインドとは、最初の DNS クエリがパブリック IP アドレスに解決された後のクエリが、プライベート IP アドレスへとリダイレクトされる、巧妙な攻撃手法である。たとえば、make-190.119.176.200-rebind-127.0.0.1-rr.1u.ms のようなドメインは、最初に190.119.176.200 (パブリック・アドレス) に解決され、その後の DNS 検索で 127.0.0.1 (プライベート・アドレス) に解決される可能性がある。この操作により、攻撃者は内部システムへとトラフィックを誘導し、不正アクセスを防ぐための保護をバイパスできる。
def is_private_url(url: str):
"""
Raises exception if url is private
:param url: url to check
"""
hostname = urlparse(url).hostname
if not hostname:
# Unable to find hostname in url
return True
ip = socket.gethostbyname(hostname)
return ipaddress.ip_address(ip).is_private
最新のコードベース
脆弱性 CVE-2024-24759 を悪用することで、このリバインディング・テクニックが成立し、MindsDB 内の SSRF 保護がバイパスされる可能性が生じる。具体的に言うと、脆弱性が存在する is_private_url() 関数が DNS クエリを発行すると、最初のリクエストはパブリック IP アドレスに解決されるが、DNS の再バインディングのおかげで、次の GET リクエストは内部リソースにアクセスすることが可能となり、機密データの暴露やサービスの停止にいたる恐れがある。
この脆弱性 CVE-2024-24759 を発見した、セキュリティ研究者 Sim4n6 から PoC エクスプロイト・コードが公開されており、脆弱性へのパッチ適用の緊急性が強調されている。このエクスプロイトは、攻撃者が DNS の再バインディングを悪用することで、MindsDB の SSRF 保護を回避する方法を例証している。
MindsDB のバージョン 23.12.4.2 未満は、このエクスプロイトに対して脆弱である。すでに MindsDB 開発チームは、バージョン 23.12.4.3 でパッチをリリースし、強力な DNS 検証対策を実装することで、リバインディング攻撃を許す脆弱性に対処している。ユーザーに対して強く推奨されるのは、このパッチが適用されたバージョンへと直ちにアップグレードし、悪用からシステムを保護することである。
DNS リバインディングという攻撃の手口があるのですね。そして、MindsDB の脆弱性 CVE-2024-24759 に対して、この手法を用いることで、SSRF 対策がバイパスされてしまうようです。PoC エクスプロイトも登場していますので、ご利用のチームは、十分に ご注意ください。よろしければ、SSRF で検索も、ご参照ください。

You must be logged in to post a comment.