| --- |
| license: mit |
| tags: [security, poc, tflite] |
| --- |
| # Harmless PoC: TFLite Micro detection_postprocess max_detections=0 scratch OOB |
|
|
| When FlexBuffer `max_detections=0`, Prepare requests a **0-byte** `sorted_indices` scratch, but Eval still runs NMS and writes via `std::iota` / ArgSort into that buffer. |
|
|
| ## Files |
| - `repro.cc` — isolated MicroContext harness calling real `DetectionPostProcessPrepare/Eval` |
| - `asan.log` — ASan heap-buffer-overflow WRITE at `detection_postprocess.cc:466` |
| - `poc_argsort_asan.cpp` / `asan_argsort.log` — minimal iota mirror |
| - `NOTES.md` |
|
|
| ```bash |
| # See NOTES.md for include paths against a tflite-micro tree. |
| ASAN_OPTIONS=detect_leaks=0 ./repro_asan |
| ``` |
|
|