| # PoC - modelaudit CoreML custom-layer bypass via Pipeline sub-model specVersion gate (BL-0108) | |
| Coordinated disclosure PoC for huntr (Protect AI MFV). Benign only. | |
| - Scanner: modelaudit==0.2.49 (coreml_scanner.py). Format: Core ML (.mlmodel). | |
| - `modelaudit scan C_pipeline_hidden_sub_custom.mlmodel` -> Clean/exit 0: a custom-layer neural net wrapped as a Pipeline sub-model with its specificationVersion omitted (proto3 default 0) fails the scanner's version gate (coreml_scanner.py:476-478), so the custom-layer check never runs. `B_pipeline_valid_sub_custom.mlmodel` is byte-identical except a 2-byte specVersion and correctly fires CRITICAL - proving the detector finds custom layers inside pipelines; only the missing version hides it. coremltools still resolves the custom layer in C. | |
| - Benign: the custom layer is a harmless marker; no kernel is shipped. Detection-evasion, not standalone RCE. | |
| Files: C_pipeline_hidden_sub_custom.mlmodel (bypass), B_pipeline_valid_sub_custom.mlmodel + A_plain_nn_custom.mlmodel (fire), D_benign_nn.mlmodel (baseline). Full report in huntr submission. |