Merged
Conversation
Introduces jcapslock-agent module for runtime capability detection and policy enforcement: - CapslockAgent: Java agent entry point, instruments JDK classes at startup - CapabilityTransformer: ASM-based bytecode transformer for capability methods - PolicyChecker: Stack inspection and policy enforcement with YAML config support Features: - Log-only mode: monitors capability usage with full stack traces - Policy mode: blocks capabilities for specific packages via SecurityException - Uses capability mappings from core module (java-interesting.cm) Also: - Add dependency-reduced-pom.xml to .gitignore - Disable AssignmentToForLoopParameter inspection (false positive on i++)
Dependency management: - Add protobuf.version (4.33.2) and mockito.version properties - Add asm-commons to parent dependencyManagement - Remove duplicate maven.plugin.version from maven-plugin module - Remove unused jetbrains:annotations dependency Agent fixes: - Fix classloader null check in CapabilityMapper resource loading - Remove unused import in CapabilityTransformer - Add extraArtifacts config to maven-invoker for jcapslock-agent Policy enforcement: - Add policy.yaml for quick-test example - Add BlockedExec test class and PolicyEnforcementTest - Add test-policy.sh E2E test script
Module restructuring: - Split core into core/ (lightweight) and core/analysis/ (SootUp) - Agent depends only on jcapslock-core (5.4MB vs ~20MB) - Maven plugin depends on jcapslock-core-analysis Runtime call graph capture: - Add RuntimeCallGraph for capturing capabilities during test execution - Add JUnit 5 extension (CapslockCallGraphExtension) for test integration - Add CallGraphAssertions for fluent graph assertions in tests - Add GraphMerger utility for combining Graph protos Refactoring: - Extract SootUp-specific methods from GraphProtoBuilder to SootGraphBuilder - Move CallGraphBuilder, ImplicitCapabilityDetector, UnifiedAnalyzer to analysis module - Use --release 17 instead of source/target for cleaner compilation - Fix shade plugin manifest handling
- Rename package from com.test to com.github.serj.jcapslock.examples.quicktest - Switch from exec-maven-plugin to maven-failsafe-plugin for integration tests - Add -Djdk.attach.allowAttachSelf=true to surefire argLine - Update policy.yaml and snapshot.json for new package structure
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Allow to lock a libraries or application's capabilities during runtime. For now, it's on package level but possible to even go on jar level for later.