Harden untrusted input and sensitive data handling#127
Conversation
Confine external blob access, sanitize redacted databases, and require explicit plugin authorization. Bound HAR parsing, prevent replay redirect leaks and CSV formula injection, update vulnerable dependencies, restore Parquet support, and add security regression tests plus CI auditing.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 935ab6c5da
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Addressed the actionable P2 review feedback in stacked PR #128: #128 The fix removes matching graphql_fields rows before deleting their parent entries under foreign-key enforcement, retains compatibility with databases without that table, and adds a regression test. Validation: cargo test --all-features --locked (196 tests passed) and git diff --check. |
Stage output database copies until redaction completes so failures preserve any existing destination. Wrap PII entry rewrites in a single transaction, defer prune filesystem deletion until after commit, and retain external files still referenced by surviving blobs. Add regressions for rollback, publication failure, overwrite, and shared external paths.
Propagate SQLite decoding errors while protecting surviving external blob paths so malformed databases roll back before filesystem deletion. Clean rollback-journal sidecars with staged databases and add regressions for both cases.
Back up an existing destination database and its SQLite sidecars as a recoverable set before publishing staged output. Move orphaned-blob cleanup into the PII and redact transactions so cleanup errors roll back every logical rewrite. Add restore, replacement, and cleanup-failure regressions.
Simulate a failed final rename and verify the prior destination database and every SQLite sidecar are restored without leaving a backup directory.
Propagate malformed entry hashes, orphan blob hashes, and pruned external paths instead of silently skipping them. Add regressions proving malformed pruned paths and entry hashes roll back the import transaction.
Fail closed on every prune row decode
Fail closed on malformed prune paths
Make sensitive rewrites and prune cleanup atomic
Fix GraphQL field pruning under foreign keys
Summary
Changes
--pluginauthorization for configured executables and disable automatic replay redirects.Testing
cargo test --all-features --lockedpassed: 60 library tests, 60 binary tests, and 76 integration tests.cargo auditreported zero known vulnerabilities; three informational unmaintained-package warnings remain.cargo clippy --all-features --all-targets --lockedcompleted successfully with existing non-blocking warnings.git diff --checkpassed.Notes
--plugin <name>on every run.--allow-external-pathsand can be confined with--external-path-root.