
CVE-2023-35086のPoC:DoSのみ
2023年7月25日, Altin (tin-z), github.com/tin-z
ASUS RT-AX56U V2 および RT-AC86U ルーターファームウェアのバージョン 3.0.0.4.386_50460 以下、および 3.0.0.4_386_51529 以下には、httpd サービスの detwan.cgi 関数に書式文字列の脆弱性が存在し、攻撃者が悪意のあるデータを構築するとコード実行が引き起こされる可能性があります。この脆弱性は、httpd サービスを使用する他の ASUS デバイスにも影響を与えます。詳細についてはこちら 詳細 をご覧ください。
参考文献:
この脆弱性は RCE を達成することを可能にしますが、PoC は主にファームウェアが QEMU でエミュレートされ、スタックが実際のデバイスとは異なるため、DoS のみを達成します。前提条件:
virtualenv --python=python3 .venv
source .venv/bin/activate
pip install hexdump
python poc_crash.py --HOST 127.0.0.1 --PORT 12234 --test
# output expected: [+] Target supports detwan.cgi
python poc_crash.py --HOST 127.0.0.1 --PORT 12234 --dos

脆弱性は、URI /detwan.cgi に GET または POST を行い、action_mode HTTP パラメータの引数として特別な書式文字列を与えることでトリガーされます。
httpd バイナリを ghidra で開くと、アドレス 0x492c4 で参照される文字列 "do_detwan_cgi" を確認できます。

デコンパイラは関数をすべて表示せずに分解しますが、興味深い点は既にそこにあります:
FUN_0001b70c はパラメータ action_mode を抽出しますlogmessage_normal は libshared によって公開される外部関数です
logmessage_normal のソースコードは、asuswrt-merlin ファームウェア、具体的にはファイル asuswrt-merlin/release/src/router/shared/misc.c にあり、そこでは action_mode の内容がローカル変数 buf に保存され、それが syslog 呼び出しで使用されていることがわかります。

libc の syslog は書式文字列をサポートしているため、ここが脆弱性の根本です。
