|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project are documented here. The format follows |
| 4 | +[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project |
| 5 | +adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 6 | + |
| 7 | +## [Unreleased] |
| 8 | + |
| 9 | +### Added |
| 10 | + |
| 11 | +- `--extra-string-payloads <FILE>` flag: append a user-supplied corpus of string-injection payloads (one per line, UTF-8) to the built-in `STRING_FUZZ_VALUES`. Use case: second-order injection corpora aimed at downstream consumers — Shellshock, Log4j JNDI, custom SSTI, regex-bypass strings, engagement-specific lists. Built-ins are preserved; the file extends them. Hard caps: 10 MB / 10,000 payloads. |
| 12 | +- 9 pytest cases for the new loader (`tests/test_extra_string_payloads.py`): blank-line drop, whitespace preservation, missing-file / invalid-UTF-8 errors, file-size and payload-count caps, `~` expansion, and a Shellshock + Log4j sanity check. |
| 13 | +- README "Custom string corpora" section with a worked Shellshock / Log4j JNDI example. |
| 14 | +- `LICENSE` (MIT) |
| 15 | +- `NOTICE` file attributing Eclipse Tahu (Apache-2.0) per §4(d) |
| 16 | +- `SECURITY.md` with disclosure contact and scope |
| 17 | +- "Responsible Use" callout in `README.md` |
| 18 | +- README "License" and "Third-Party" sections |
| 19 | + |
| 20 | +### Changed |
| 21 | + |
| 22 | +- README air-gapped setup example uses `~/tahu` instead of an OS-specific path |
| 23 | +- `STRING_FUZZ_VALUES` now has an explanatory header comment clarifying these payloads are transmitted over MQTT (not exec'd locally) |
| 24 | + |
| 25 | +### Removed |
| 26 | + |
| 27 | +- Internal-project attribution comment from `FuzzLogger` docstring |
| 28 | + |
| 29 | +## [0.2] — 2026-05-06 |
| 30 | + |
| 31 | +### Added |
| 32 | + |
| 33 | +- `--setup` flag automating `pip install`, Tahu clone, and protobuf compile |
| 34 | +- `--tahu-path` for air-gapped installs from a pre-staged Tahu directory |
| 35 | +- `--output-dir` with per-run directory layout (`./sparkplug-runs/<UTC-ts>_<host>/`) |
| 36 | +- `--tls`, `--cafile`, `--insecure` TLS options (default port becomes 8883 with `--tls`) |
| 37 | +- `MQTT_USERNAME` / `MQTT_PASSWORD` env vars; `-P -` reads password from stdin without echo |
| 38 | +- `--probe-anon-write` to confirm whether the broker accepts unauthenticated PUBLISH |
| 39 | +- pytest harness with 23 tests covering `FuzzLogger`, topic helpers, output paths, and `--tahu-path` validation |
| 40 | +- README options table, version flag, flower-box header |
| 41 | + |
| 42 | +### Changed |
| 43 | + |
| 44 | +- `FuzzLogger` timestamps now UTC with `Z` suffix at second resolution (was microsecond, local TZ) |
| 45 | +- `paho.mqtt` transport logger throttled to WARNING by default; scales with `-v` / `-vv` |
| 46 | +- Deprecated `datetime.utcnow()` calls replaced with timezone-aware UTC |
| 47 | + |
| 48 | +### Fixed |
| 49 | + |
| 50 | +- Handler guard prevents duplicate logging when `setupLogging` is re-invoked |
| 51 | +- Several review findings from internal code review: log bloat, deprecation warnings, TLS hardening |
| 52 | + |
| 53 | +## [0.1] — 2026-04-16 |
| 54 | + |
| 55 | +### Added |
| 56 | + |
| 57 | +- Initial public-prep version: 12 fuzz categories (~635 test cases) |
| 58 | +- Network discovery (`DeviceTracker`) |
| 59 | +- Spoofed birth/death and NCMD/DCMD targeting against discovered devices |
| 60 | +- JSON-lines output (`sparkplug_fuzz.jsonl`) with TX / RX / EVENT records |
| 61 | +- Auto-reconnect with NBIRTH/DBIRTH re-establishment |
| 62 | +- Self-echo filtering, publish-error counter, STATE topic decode fix |
| 63 | + |
| 64 | +[Unreleased]: https://github.com/BishopFox/sparkplugFuzzer/compare/v0.2...HEAD |
| 65 | +[0.2]: https://github.com/BishopFox/sparkplugFuzzer/releases/tag/v0.2 |
| 66 | +[0.1]: https://github.com/BishopFox/sparkplugFuzzer/releases/tag/v0.1 |
0 commit comments