Policy note first, because it explains the shape of this commit: pins follow rea-agents, and nothing is bumped on its own schedule. This round is the explicit exception - the checker found a real capability gap (REA 6.5.0 advertises recover_javascript_sources while the image shipped nothing for it, so the operation reported provider_missing). docs/UPDATES.md now states the rule and names the only two exceptions: a BEHIND-REA drift, and a MISSING capability. Wakaru 1.14.0 (REA's JavaScript source-recovery engine): - Installed from the official release asset, not npm: REA resolves and fingerprints the executable itself, and the npm route's node_modules/.bin entry is a Node shim it rejects. REA_WAKARU_COMMAND is absolute, as REA requires, and the image also carries util-linux prlimit (REA's resource limiter for it). - The pin is two values on purpose: WAKARU_VERSION and WAKARU_LINUX_X64_SHA256. The digest is REA's own audited value for that asset (docs/javascript-recovery.md in the pinned release), so the build fails if the bytes ever differ. - 13 new harness checks. Five assert REA's admission rules on the binary (absolute path, readable+executable, the exact "wakaru <semver>" banner, the audited digest, prlimit). Eight run the operation: a minified bundle fixture is recovered and the Evidence is asserted on schema fields (provider wakaru, status complete, failed 0, module decompiled, and the fingerprinted digest proving REA ran the audited build), the published module file is checked, and the recovered tree is then analysed with analyze-javascript-application. - The checker gained a digest row comparing our pin with the digest REA documents, and its wakaru row is no longer hardcoded as missing. Bumps applied: Node 24.21.0 to 24.22.0, frida 17.23.2 to 17.23.3, uv 0.13.0 to 0.13.1, supergateway 4.1.0 to 4.2.0, plus Wakaru. Unicorn stays at 2.1.2, and the build proved why: pip refuses unicorn 2.1.4 with ResolutionImpossible because pwntools 4.15.0 declares "unicorn !=2.1.3, !=2.1.4". The constraint is now recorded in the Dockerfile comment, in the docs, and in a HELD map in the checker, which reports such components as "held on <pin>: <reason>" instead of as an available update. Two build defects found and fixed rather than worked around: - The Node layer failed with "sha256sum: no properly formatted checksum lines found": /var/cache/rea-dl is a shared build cache keyed by filename, and it held the PREVIOUS version's SHASUMS256.txt under a version-less name, so the new tarball's checksum line was never found. Cached filenames are now version-qualified (the same hazard was latent for the Wakaru tarball, fixed too), and the stale file was deliberately left in place so the fix had to work without a cache clean. This is documented as a trap in docs/UPDATES.md. - Neither failure could reach GHCR: publishing only runs after verification. Checker semantics now match the policy: exit 1 means the image is wrong NOW (BEHIND-REA, MISSING, MISMATCH) or a new REA release exists (NEW REA - the trigger to move everything). Merely-newer upstream releases are listed as waiting for the next release and do not fail the weekly job, which is the difference between a useful reminder and a permanently red run. Verification: full per-engine sweep on all four rebuilt images, 0 failures - all 120/0/3, ghidra 108/0/8, hopper 101/0/7, ida 93/0/11, exit 0 everywhere. Full log (kernel string redacted) in docs/verify-engines.txt; image sizes in docs/IMAGES.md refreshed from make sizes.
2.2 KiB
Third-party notices
This repository is MIT-licensed (see LICENSE) and covers the
files here: the Dockerfile, compose files, scripts and documentation.
The image it builds installs a lot of third-party software, each of which keeps its own licence and terms. That installed set is:
| Component | Licence |
|---|---|
| Ghidra | Apache-2.0 |
| OpenJDK 21 | GPL-2.0-with-classpath-exception |
| Node.js | MIT |
REA (rea-agents) |
MIT |
| Qt6 runtime (Hopper's dependency) | LGPL-3.0 |
| Hopper (Linux demo package) | commercial; the public demo build is redistributed here exactly as downloaded from the vendor |
| WABT | Apache-2.0 |
| Wakaru | Apache-2.0 |
| Apktool | Apache-2.0 |
| jadx-headless-mcp | Apache-2.0 |
| .NET SDK 8 | MIT |
ILSpy / ilspycmd |
MIT |
| pwntools | MIT |
| pyelftools | public domain |
| Unicorn | GPL-2.0 |
| pwndbg | MIT |
| unblob | MIT |
| mitmproxy | MIT |
Wireshark / tshark and capinfos |
GPL-2.0 |
| sigrok-cli / libsigrokdecode | GPL-3.0 |
Android platform-tools (adb) |
Apache-2.0 |
| binwalk | MIT |
| wine | LGPL-2.1 |
| Frida | wxWindows Library Licence (LGPL-2.1-based) |
| supergateway | MIT |
| uv | Apache-2.0 / MIT |
| Google Chrome (stable) | proprietary; packaged .deb redistributed as downloaded from Google |
| e2fsprogs, dosfstools, mtools, device-tree-compiler, squashfs-tools, cpio, sleuthkit, 7-Zip, cabextract, yara, upx, nasm, qemu-user-static, cross toolchains, X11/Qt/font libraries | the licence of each Debian/Ubuntu package (predominantly GPL/LGPL/BSD/MIT — see /usr/share/doc/<package>/copyright inside the image) |
Not included, on purpose
IDA Pro / IDA Home / IDA Free and JEB are not included in any image
this project builds. They must be obtained and licensed separately by the
operator, and redistributing them is not permitted by their licences — keep any
image that contains your own IDA or JEB install private. See
BYO-LICENSES.md and ida-variants.md.
A licensed Hopper package is likewise yours to supply: the repo only ever
downloads the vendor's public demo build, and a licensed .deb you drop into
vendor/ (never committed — see .gitignore) is your responsibility to keep
private.