PoC - modelaudit CntkScanner misses CNTK v2 native-UDF dlopen (BL-0114)
Coordinated disclosure PoC for huntr (Protect AI MFV). Benign only.
- Scanner: modelaudit==0.2.49 (cntk_scanner.py). Format: CNTK v2 (.dnn).
modelaudit scan evasion_native_udf.dnn -> Clean / exit 0: a CNTK native UserFunction names an attacker .so via the module key (loaded via Plugin::Load -> dlopen on load = native RCE), but the scanner's key/value split-context fallback drops the module/library keywords. positive_control_samestring.dnn and positive_control_split_strong.dnn fire WARNING - proving the check is live.
- Root cause: cntk_scanner.py:188 split fallback uses _STRONG_LOAD_CONTEXT_RE (:55-58) which omits module/library.
- NOTE: CNTK is EOL; samples are protobuf-map-framed bytes using the AUTHENTIC CNTK key/value strings (module/native/deserialize_method) - the scanner is a pure string scanner (no protobuf parse), so these exercise the exact scanner code path a library-produced .dnn would. Benign marker only.
Files: evasion_native_udf.dnn (bypass), positive_control_*.dnn (fire). Full report in huntr submission.