-
Notifications
You must be signed in to change notification settings - Fork 437
Cross-platform App Hardening (DexGuard-class), Enterprise-gated #5527
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
shai-almog
wants to merge
111
commits into
master
Choose a base branch
from
app-hardening
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
111 commits
Select commit
Hold shift + click to select a range
ae40837
Add cross-platform App Hardening (DexGuard-class), Enterprise-gated
shai-almog 010fe08
CI: complete copyright headers, /// docs, and force engine build order
shai-almog fc8822a
cn1-hardening: guard ProGuard against JDK 21+ class files
shai-almog efa163b
Address Codex P1 review: frame hierarchy, FQ main class, reactor dep
shai-almog 605f722
Address Codex round-2 review + fix core/CI build breaks
shai-almog 0fffb4c
Address Codex round-3 review (verifier hierarchy, service descriptors…
shai-almog 8899127
docs: satisfy the developer-guide prose gate (Vale + xref + LanguageT…
shai-almog d2ebbef
Address Codex round-4 + Copilot review
shai-almog 5009358
Address Codex round-5 review
shai-almog fdc77f2
Address Codex round-6 review (interface literals, empty-config)
shai-almog 6efa3ef
Address Codex round-7 review
shai-almog d354db3
Address Codex round-8 review
shai-almog 71b9c68
Address Codex round-9 review
shai-almog 95a7fdb
CI: fix illegal '--' inside an XML comment in the plugin POM
shai-almog 495a599
Address Codex round-10 review
shai-almog c94e6dd
Address Codex round-11 review
shai-almog b625567
Address Codex round-12 review
shai-almog df007c4
Address Codex round-13 review + fix developer-guide LanguageTool gate
shai-almog 9fa7384
Fix JS launcher compile: import Display for the hardening stamp
shai-almog 23e52cd
Address Codex review round 14 (unresolved #5527 threads)
shai-almog 107abbb
Fix Vale gate in App-Hardening doc: drop adverb, use contraction
shai-almog f7c4e26
Fix SpotBugs DM_DEFAULT_ENCODING in CrashProtection.safeRawStack
shai-almog 30e4d61
Address Codex review round 15 (#5527)
shai-almog ba739f5
Address Codex review round 16 (#5527)
shai-almog 5435b58
Address Codex review round 18 (#5527)
shai-almog 245c14c
Narrow keep rules and rewrite hardening docs per project-owner review
shai-almog c5404f2
Address Codex review round 19: fix the real ones, push back on one
shai-almog 9c54748
Address Codex round 20: fix two real hoisting bugs
shai-almog 9c12bc2
Address Codex round 21 (mapping-id + idempotence)
shai-almog f47cffb
Address Codex round 22 (docs): correct engine-secrecy claim, note ann…
shai-almog e195c21
Security: never trust client-supplied cn1.hardened / hardenLevel / ma…
shai-almog 2867390
Address Codex round 26 (#5527): preserve metadata on idempotent path …
shai-almog 78c0e90
Doc: qualify SourceFile stripping for the unminified Android case
shai-almog e6aebfc
Address Codex round 27 (#5527): gate SourceFile on verified hardening…
shai-almog 7ba3a56
Keep the generated SVGRegistry under its fixed name
shai-almog 35e2ae2
Address Codex round 29: gate R8 keep rules on verified hardening
shai-almog 7532a4c
Derive crash trace format from platform so JVM traces are not mislabe…
shai-almog bcd9de1
Preserve JS stack coordinates when scrubbing; report unencryptable co…
shai-almog c31273c
Tighten JS frame detection; print replacement frames after setStackTr…
shai-almog 2c09704
Serialize hardening warnings in the report; correct PARANOID profile …
shai-almog 84fab7a
Route raw-stack messages through scrubMessage; base preflight on the …
shai-almog 35b0969
Require a real location for 'at' frame lines; keep invalid harden.lev…
shai-almog fb92dc1
Split oversized hoist <clinit>; report legacy-interface constants; no…
shai-almog 0982015
Validate parenthesized frame locations; reject every enableProguard v…
shai-almog 76917eb
Keep the distinct watch entry class; require a release variant for An…
shai-almog 40a71a5
Report string literals left plaintext because they are too large to e…
shai-almog 00114d0
Report constant-dynamic string exclusions; account for the existing <…
shai-almog 13ec40d
Measure encoded bytecode before growing a method; skip and report whe…
shai-almog 2461ea0
Require a whitespace-free frame identity; size-check the guard-field …
shai-almog 1353f18
Keep R8 source-file metadata; size-check interface method-body string…
shai-almog 5446ef9
Bound raw-stack capture; count annotation-value strings excluded from…
shai-almog ab3d013
Require a dotted/URL frame identity; recurse into nested constant-dyn…
shai-almog 63f050a
Scrub frame URL/query data; keep name-bound background callbacks; cap…
shai-almog ebb8ef8
Keep BackgroundWorker; fall back to per-access encryption instead of …
shai-almog 9de216b
Scrub coordinate-free frame mimics; exclude un-encryptable literals j…
shai-almog 773b977
Preserve only the terminal two coordinate groups in a frame line
shai-almog 75b9446
Size-check hoist LDC->GETSTATIC replacements; count type-use and reco…
shai-almog 4478857
Budget the constant pool for static-final fields and control-flow guards
shai-almog 16cf907
Keep Login subclasses; run the hardening preflight against library-me…
shai-almog 6549725
Document why carrying .java/.kt sources through the demuxer is rename…
shai-almog 6b81363
Validate @-frame source shape before preserving coordinates; skip OFF…
shai-almog 52ed531
Budget per-access ciphertext growth; use inlinee's own sourceFile in …
shai-almog a4ce422
Preserve literal identity across the library boundary; charge widened…
shai-almog 9cf83ca
Apply the engine's platform-safety rules in the hardening preflight
shai-almog 9edd05b
Disclose non-concat invokedynamic string args and short literals in t…
shai-almog 16a5c8f
Preserve static-final ConstantValues a bundled Android source referen…
shai-almog 4f1e274
Honor jar-wide and library exclusions in the static-final string path
shai-almog 60132cf
Exclude the ParparVM runtime jar's literals and jar-wide-exclude budg…
shai-almog d606187
Skip Android R8-rename enforcement when hardening was forced off
shai-almog 0d51b7c
Require indentation before treating an 'at ...' line as a stack frame
shai-almog 0db5a6d
Record real source filenames in the engine's own mapping
shai-almog 862d10b
Require a URL path separator in an @-frame source, not just a dot
shai-almog 2020215
Exclude a pre-Java-8 interface's un-encryptable constant jar-wide
shai-almog fa59896
Accept multi-word V8 frame identities in the at-paren form
shai-almog 7cd8411
Reject conflicting per-slice hardening opt-outs in a combined iOS+Mac…
shai-almog 07e05bb
Combine per-slice hardening opt-outs instead of consulting one slice,…
shai-almog b3ae16c
Restrict at-paren multi-word identities to genuine V8 label shapes
shai-almog 49034a3
Validate the V8 accessor alias content before accepting an at-paren f…
shai-almog e83f164
Apply scrubFrame to raw stack, combine Apple opt-outs in preflight, q…
shai-almog b4ed029
Size the obfuscation dictionary for the biggest class's member count too
shai-almog 2844caf
Stop preserving coordinates from the ambiguous Firefox/Safari @-frame…
shai-almog 875477d
Scrub the whole raw stack uniformly; stop preserving frame coordinates
shai-almog fcbaf7f
Honor a null scrubFrame redaction in the raw stack; size the dictiona…
shai-almog 5c3ae44
Resolve a common supertype from class bytes when a shared base can't …
shai-almog f4f35e8
Include interfaces in byte-based common-supertype resolution
shai-almog 34cb401
Fall back to structural verification when the output verifier can't r…
shai-almog 20ef9be
Decode JSON escapes when reading sourceFile metadata
shai-almog be80678
Harden ParparVM-JS runtime literals; document array-frame contract
shai-almog 5e4833c
Count short static-final constants in the string-coverage disclosure
shai-almog 8cd67a8
Merge remote-tracking branch 'origin/master' into app-hardening
shai-almog 8c9e103
Carry the hardening force-off/library-jars decision per build, not JV…
shai-almog 63a4fe7
Ship a class unhardened when its frame hierarchy is incomplete
shai-almog 474a723
Zero applied counts when a class is discarded as unresolvable
shai-almog 799372c
Escape JSON control characters in sourceFile mapping metadata
shai-almog 374c216
Preserve whitespace in retraced source filenames
shai-almog 364d110
Keep HealthBackgroundListener implementors so their names stay stable
shai-almog a93fc64
Propagate the hardening force-off decision into every local request
shai-almog 42e9d45
Preserve ConstantValue for constants read by a non-inlined GETSTATIC
shai-almog 9757e15
Document interface-merge soundness and the package-relative-resource …
shai-almog 5fb8161
docs: drop the adverb the Vale prose gate flagged
shai-almog 54e0528
Close two gaps in the incomplete-hierarchy and GETSTATIC-owner handling
shai-almog 1bf1604
Gate parparvm-text trace classification on a ParparVM-C platform
shai-almog d4cc154
Distinguish native ParparVM-C from JavaSE by runtime, not platform name
shai-almog fba9418
Accept a verifier report whose TEXT names only a missing type
shai-almog 4124a5e
Read retrace mapping files as UTF-8, not the platform default
shai-almog ffe1519
docs: correct scrubRawStack javadoc to match uniform masking
shai-almog df5a3b6
Run hardening preflight before the Android up-to-date cache short-cir…
shai-almog 8b6485f
Verify data flow per method so a real error survives a missing-type peer
shai-almog 7608043
Bypass the Android up-to-date cache when hardening will actually run
shai-almog 4684e09
Invalidate the Android APK cache on any hardening-outcome change
shai-almog bf5ea64
Fingerprint all effective harden.* settings in the APK cache key
shai-almog File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.