QNAP QTS/QuTS hero の脆弱性 CVE-2023-39296:PoC エクスプロイトが公開

Decoding the CVE-2023-39296 Vulnerability: A Technical and PoC Analysis

2024/01/06 SecurityOnline — QNAP QTS/QuTS hero における深刻な脆弱性 CVE-2023-39296 について、先日にパッチが適用されたが、それに関する技術的詳細と、PoC (Proof-of-concept) エクスプロイト・コードも公開されている。この脆弱性 CVE-2023-39296 (CVSS:7.5) は、プロトタイプ汚染の脆弱性と分類されており、QNAP OS の特定のバージョンに影響をおよぼすものだ。

プロトタイプ汚染とは、比較的曖昧だが危険な脆弱性であり、この脆弱性の悪用に成功した攻撃者は、オブジェクトのプロトタイプのプロパティ変更を、リモートから可能にするという。QTS/QuTS hero において、この脆弱性を悪用された場合には、攻撃者は既存のプロパティを互換性のないタイプで上書きし、システムをクラッシュさせる可能性がある。

この脆弱性 CVE-2023-39296 の技術的詳細と PoC エクスプロイト・コードが、独立系セキュリティ研究者である DCS と SSD Secure Disclosure により、共同で公開されている。この脆弱性は、QTS の JSON 解析機能の欠陥を悪用したものであり、タイプ・コンフュージョンのエラーにつながるものだ。具体的に言うと、json-object->data フィールドが適切に検証されないため、攻撃者に制御フローを乗っ取られる可能性があるという。

この脆弱性の悪用の入り口となるのは、ネットワーク経由でアクセス可能な /cgi-bin/qid/qidRequestV2.cgi バイナリである。この脆弱性の悪用に成功した未認証の攻撃者は、QTS OS における root アクセスに相当する admin 権限を用いて、任意のコード実行が可能となる。この脆弱性は、ネットワーク内の攻撃者に、悪用される可能性がある。また、HTTP サーバが外部からのアクセス用に設定されている場合には、リモートから悪用される可能性もある。

この脆弱性の根本的な原因は、MIT ライセンスの json-c プロジェクトに基づいて、/usr/lib/libqcloud.so に実装されている QTS の JSON 機能にある。json_tokener_parse_verbose 関数は、JSON 文字列を解析して JSON オブジェクトを構築するように設計されている。しかし、この関数が、 json_object に値を追加する前に o_type フィールドを検証しない場合には、重大なエラーが発生する。それにより、システムが不正に操作され、特別に細工された JSON 文字列が、文字列や整数値を struct lh_table として扱うようになる。

struct json_object {
enum json_type o_type; [1].
json_func *_delete;
json_func *_to_json_string;
int ref_count;
struct printbuf *pb;
union data {
boolean c_boolean;
double c_double;
int c_int;
struct lh_table *c_object;
struct array_list *c_array;
char *c_string;
} o;
};

この操作は、lh_table 内の関数ポインタを再参照するため、制御フローが乗っ取られるという、きわめて危険な状況に陥ることもあり得る。以下の、”702111234474983745 {}” のように、注意深く細工された JSON 文字列を使用すると、攻撃者が指定したアドレスで lh_table をシステムが再参照される可能性が生じる。

このクラッシュは、以下の curl リクエストを NAS に発行するだけで再現できる:

curl -X POST -H "Content-Type: application/json" -d "4702111234474983745 {}" "{NAS_IP}:8080/cgi-bin/qid/qidRequestV2.cgi?param=value"

脆弱性 CVE-2023-39296 の発見および公開は、NAS システム全体が直面し続ける、サイバー・セキュリティの課題を浮き彫りにしている。ストレージ・ソリューションのネットワーク化が進み、アクセスが容易になるにつれて、高度なサイバー攻撃が発生するようになる。

QNAP QTS/QuTS hero システムのユーザーおよび管理者は、CVE-2023-39296 のような、コード内に潜む複雑な脆弱性からの保護のために、システムを最新バージョンに更新する必要がある。

1月6日に QNAP は、同社の NAS (Network-Attached Storage) デバイス上および QTS OS とアプリケーションの、複数のバージョンに影響を与える 14件の脆弱性についても、セキュリティ・アドバイザリを公開している。