EasyDynamics / oscal-rest-service

Implementation of the OSCAL REST API
MIT License
19 stars 1 forks source link

Warnings and Errors in liboscal-java Throw Exceptions and Crash Catalog Editing in REST Mode #140

Open xee5ch opened 2 years ago

xee5ch commented 2 years ago

Hi, big fan of your tools. I was experimenting with this tool recently in the oscal-editor-deployment all in one utility with latest. I get the following errors:

Fullish stack trace ```sh 2022-10-07 05:23:43.908 ERROR 1 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataRetrievalFailureException: Failure in loading Oscal object.; nested exception is java.io.IOException: java.lang.IllegalArgumentException: Unable to set the value of field '_uuid' in class 'gov.nist.secauto.oscal.lib.model.Property'.] with root cause java.lang.IllegalAccessException: interface gov.nist.secauto.metaschema.binding.model.IBoundNamedInstance cannot access a member of class gov.nist.secauto.oscal.lib.model.Property with modifiers "private" at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) ~[na:na] at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591) ~[na:na] at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075) ~[na:na] at java.base/java.lang.reflect.Field.set(Field.java:778) ~[na:na] at gov.nist.secauto.metaschema.binding.model.IBoundNamedInstance.setValue(IBoundNamedInstance.java:156) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:470) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ClassDataTypeHandler.get(ClassDataTypeHandler.java:93) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readItem(AbstractNamedModelProperty.java:282) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.ListPropertyInfo.readValue(ListPropertyInfo.java:153) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedModelProperty.readInternal(AbstractNamedModelProperty.java:233) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.AbstractNamedProperty.read(AbstractNamedProperty.java:87) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:449) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readObject(DefaultAssemblyClassBinding.java:345) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.RootAssemblyDefinition.readObject(RootAssemblyDefinition.java:76) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.model.RootAssemblyDefinition.readRoot(RootAssemblyDefinition.java:244) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.json.DefaultJsonDeserializer.deserializeToNodeItemInternal(DefaultJsonDeserializer.java:103) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.AbstractDeserializer.deserializeToNodeItem(AbstractDeserializer.java:91) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.IDeserializer.deserializeToNodeItem(IDeserializer.java:171) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.DefaultBoundLoader.loadInternal(DefaultBoundLoader.java:453) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.DefaultBoundLoader.load(DefaultBoundLoader.java:435) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.IBoundLoader.load(IBoundLoader.java:261) ~[metaschema-java-binding-0.9.0.jar!/:na] at gov.nist.secauto.metaschema.binding.io.IBoundLoader.load(IBoundLoader.java:281) ~[metaschema-java-binding-0.9.0.jar!/:na] at com.easydynamics.oscal.data.repository.file.BaseOscalRepoFileImpl.findById(BaseOscalRepoFileImpl.java:171) ~[oscal-data-repository-file-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at com.easydynamics.oscal.data.repository.file.BaseOscalRepoFileImpl.findById(BaseOscalRepoFileImpl.java:36) ~[oscal-data-repository-file-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at com.easydynamics.oscal.data.repository.file.BaseOscalRepoFileImpl$$FastClassBySpringCGLIB$$51eb9204.invoke() ~[oscal-data-repository-file-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.22.jar!/:5.3.22] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.22.jar!/:5.3.22] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.22.jar!/:5.3.22] at com.easydynamics.oscal.data.repository.file.OscalCatalogRepoFileImpl$$EnhancerBySpringCGLIB$$decf60e6.findById() ~[oscal-data-repository-file-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at com.easydynamics.oscal.service.impl.BaseOscalObjectServiceImpl.findById(BaseOscalObjectServiceImpl.java:93) ~[oscal-object-service-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at com.easydynamics.oscal.service.impl.BaseOscalObjectServiceImpl.findById(BaseOscalObjectServiceImpl.java:21) ~[oscal-object-service-0.0.1-SNAPSHOT.jar!/:0.0.1-SNAPSHOT] at com.easydynamics.oscalrestservice.api.BaseOscalController.findById(BaseOscalController.java:43) ~[classes!/:0.0.1-SNAPSHOT] at com.easydynamics.oscalrestservice.api.CatalogController.findById(CatalogController.java:49) ~[classes!/:0.0.1-SNAPSHOT] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.22.jar!/:5.3.22] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1070) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.22.jar!/:5.3.22] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.22.jar!/:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar!/:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.22.jar!/:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar!/:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.22.jar!/:5.3.22] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.22.jar!/:5.3.22] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar!/:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar!/:na] at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na] 2022-10-07 05:23:48.880 WARN 1 --- [nio-8080-exec-3] g.n.s.m.m.c.c.DefaultConstraintValidator : WARNING: (/catalog/back-matter[1]/resource[73]) The cardinality '0' is below the required minimum '1' for items matching the expression 'rlink|base64'. 2022-10-07 05:23:48.883 WARN 1 --- [nio-8080-exec-3] g.n.s.m.m.c.c.DefaultConstraintValidator : WARNING: (/catalog/back-matter[1]/resource[98]) The cardinality '0' is below the required minimum '1' for items matching the expression 'rlink|base64'. 2022-10-07 05:23:48.883 WARN 1 --- [nio-8080-exec-3] g.n.s.m.m.c.c.DefaultConstraintValidator : WARNING: (/catalog/back-matter[1]/resource[100]) The cardinality '0' is below the required minimum '1' for items matching the expression 'rlink|base64'. 2022-10-07 05:23:48.899 DEBUG 1 --- [nio-8080-exec-3] c.e.o.api.CatalogController : Returning wrapped response of type: java.util.ArrayList 2022-10-07 05:23:48.901 DEBUG 1 --- [ task-4] c.e.o.api.CatalogController : Starting marshalling of object type: java.util.ArrayList 2022-10-07 05:23:51.130 DEBUG 1 --- [ task-4] c.e.o.api.CatalogController : Marshalling complete ```

It seems you're using the most current liboscal-java, so I assume this is an ongoing issue. I am not sure this is a dupe of #111 or another issue altogether. I do recall reports of, in oscal-cli (and I am not sure this bubbles up from liboscal-java): WARNING messages at one time said as much might have been returned as errors when wrapped in a CLI context, not just warnings. Could this explain the stack trace and issues with validations crashing the whole thing? I got it to stop crashing once I slimmed down a catalog I wanted to edit in REST Mode to the bare essentials like so. So, no constraint warnings, no crashes!

Not sure how that helps or how to report that bug to NIST and liboscal-java though.

Example Catalog Shaved Down Until Successful ```json { "catalog": { "uuid": "fdac0321-959f-43ec-a91d-322da7d9761c", "metadata": { "title": "Electronic Version of NIST SP 800-53 Rev 5 Controls and SP 800-53A Rev 5 Assessment Procedures", "last-modified": "2022-08-23T10:36:49.1330265-04:00", "version": "5.1.2", "oscal-version": "1.0.0", "props": [ { "name": "keywords", "value": "Assessment, assessment plan, assurance, availability, computer security, confidentiality, control, control assessment, cybersecurity, FISMA, information security, information system, integrity, personally identifiable information, OSCAL, Open Security Controls Assessment Language, Privacy Act, privacy controls, privacy functions, privacy requirements, Risk Management Framework, security controls, security functions, security requirements, system, system security" } ], "links": [ { "href": "#c3397cc9-83c6-4459-adb2-836739dc1b94", "rel": "alternate" }, { "href": "#f7cf488d-bc64-4a91-a994-810e153ee481", "rel": "canonical" } ], "roles": [ { "id": "creator", "title": "Document creator" }, { "id": "contact", "title": "Contact" } ], "parties": [ { "uuid": "41a93829-b76b-43ec-b9e7-250553511549", "type": "organization", "name": "Joint Task Force, Interagency Working Group", "email-addresses": [ "sec-cert@nist.gov" ], "addresses": [ { "addr-lines": [ "National Institute of Standards and Technology", "Attn: Computer Security Division", "Information Technology Laboratory", "100 Bureau Drive (Mail Stop 8930)" ], "city": "Gaithersburg", "state": "MD", "postal-code": "20899-8930" } ] } ], "responsible-parties": [ { "role-id": "creator", "party-uuids": [ "41a93829-b76b-43ec-b9e7-250553511549" ] }, { "role-id": "contact", "party-uuids": [ "41a93829-b76b-43ec-b9e7-250553511549" ] } ] }, "groups": [ { "id": "ac", "class": "family", "title": "Access Control", "controls": [ { "id": "ac-1", "class": "SP800-53", "title": "Policy and Procedures", "params": [ { "id": "ac-1_prm_1", "props": [ { "name": "aggregates", "ns": "http://csrc.nist.gov/ns/rmf", "value": "ac-01_odp.01" }, { "name": "aggregates", "ns": "http://csrc.nist.gov/ns/rmf", "value": "ac-01_odp.02" } ], "label": "organization-defined personnel or roles" }, { "id": "ac-01_odp.01", "props": [ { "name": "label", "value": "AC-01_ODP[01]", "class": "sp800-53a" } ], "label": "personnel or roles", "guidelines": [ { "prose": "personnel or roles to whom the access control policy is to be disseminated is/are defined;" } ] }, { "id": "ac-01_odp.02", "props": [ { "name": "label", "value": "AC-01_ODP[02]", "class": "sp800-53a" } ], "label": "personnel or roles", "guidelines": [ { "prose": "personnel or roles to whom the access control procedures are to be disseminated is/are defined;" } ] }, { "id": "ac-01_odp.03", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_2" }, { "name": "label", "value": "AC-01_ODP[03]", "class": "sp800-53a" } ], "select": { "how-many": "one-or-more", "choice": [ "organization-level", "mission/business process-level", "system-level" ] } }, { "id": "ac-01_odp.04", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_3" }, { "name": "label", "value": "AC-01_ODP[04]", "class": "sp800-53a" } ], "label": "official", "guidelines": [ { "prose": "an official to manage the access control policy and procedures is defined;" } ] }, { "id": "ac-01_odp.05", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_4" }, { "name": "label", "value": "AC-01_ODP[05]", "class": "sp800-53a" } ], "label": "frequency", "guidelines": [ { "prose": "the frequency at which the current access control policy is reviewed and updated is defined;" } ] }, { "id": "ac-01_odp.06", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_5" }, { "name": "label", "value": "AC-01_ODP[06]", "class": "sp800-53a" } ], "label": "events", "guidelines": [ { "prose": "events that would require the current access control policy to be reviewed and updated are defined;" } ] }, { "id": "ac-01_odp.07", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_6" }, { "name": "label", "value": "AC-01_ODP[07]", "class": "sp800-53a" } ], "label": "frequency", "guidelines": [ { "prose": "the frequency at which the current access control procedures are reviewed and updated is defined;" } ] }, { "id": "ac-01_odp.08", "props": [ { "name": "alt-identifier", "value": "ac-1_prm_7" }, { "name": "label", "value": "AC-01_ODP[08]", "class": "sp800-53a" } ], "label": "events", "guidelines": [ { "prose": "events that would require procedures to be reviewed and updated are defined;" } ] } ], "props": [ { "name": "label", "value": "AC-1" }, { "name": "label", "value": "AC-01", "class": "sp800-53a" }, { "name": "sort-id", "value": "ac-01" } ], "links": [], "parts": [ { "id": "ac-1_smt", "name": "statement", "parts": [ { "id": "ac-1_smt.a", "name": "item", "props": [ { "name": "label", "value": "a." } ], "prose": "Develop, document, and disseminate to {{ insert: param, ac-1_prm_1 }}:", "parts": [ { "id": "ac-1_smt.a.1", "name": "item", "props": [ { "name": "label", "value": "1." } ], "prose": "{{ insert: param, ac-01_odp.03 }} access control policy that:", "parts": [ { "id": "ac-1_smt.a.1.a", "name": "item", "props": [ { "name": "label", "value": "(a)" } ], "prose": "Addresses purpose, scope, roles, responsibilities, management commitment, coordination among organizational entities, and compliance; and" }, { "id": "ac-1_smt.a.1.b", "name": "item", "props": [ { "name": "label", "value": "(b)" } ], "prose": "Is consistent with applicable laws, executive orders, directives, regulations, policies, standards, and guidelines; and" } ] }, { "id": "ac-1_smt.a.2", "name": "item", "props": [ { "name": "label", "value": "2." } ], "prose": "Procedures to facilitate the implementation of the access control policy and the associated access controls;" } ] }, { "id": "ac-1_smt.b", "name": "item", "props": [ { "name": "label", "value": "b." } ], "prose": "Designate an {{ insert: param, ac-01_odp.04 }} to manage the development, documentation, and dissemination of the access control policy and procedures; and" }, { "id": "ac-1_smt.c", "name": "item", "props": [ { "name": "label", "value": "c." } ], "prose": "Review and update the current access control:", "parts": [ { "id": "ac-1_smt.c.1", "name": "item", "props": [ { "name": "label", "value": "1." } ], "prose": "Policy {{ insert: param, ac-01_odp.05 }} and following {{ insert: param, ac-01_odp.06 }} ; and" }, { "id": "ac-1_smt.c.2", "name": "item", "props": [ { "name": "label", "value": "2." } ], "prose": "Procedures {{ insert: param, ac-01_odp.07 }} and following {{ insert: param, ac-01_odp.08 }}." } ] } ] }, { "id": "ac-1_gdn", "name": "guidance", "prose": "Access control policy and procedures address the controls in the AC family that are implemented within systems and organizations. The risk management strategy is an important factor in establishing such policies and procedures. Policies and procedures contribute to security and privacy assurance. Therefore, it is important that security and privacy programs collaborate on the development of access control policy and procedures. Security and privacy program policies and procedures at the organization level are preferable, in general, and may obviate the need for mission- or system-specific policies and procedures. The policy can be included as part of the general security and privacy policy or be represented by multiple policies reflecting the complex nature of organizations. Procedures can be established for security and privacy programs, for mission or business processes, and for systems, if needed. Procedures describe how the policies or controls are implemented and can be directed at the individual or role that is the object of the procedure. Procedures can be documented in system security and privacy plans or in one or more separate documents. Events that may precipitate an update to access control policy and procedures include assessment or audit findings, security incidents or breaches, or changes in laws, executive orders, directives, regulations, policies, standards, and guidelines. Simply restating controls does not constitute an organizational policy or procedure." }, { "id": "ac-1_obj", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.a", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.a-1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.[01]", "class": "sp800-53a" } ], "prose": "an access control policy is developed and documented;" }, { "id": "ac-1_obj.a-2", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.[02]", "class": "sp800-53a" } ], "prose": "the access control policy is disseminated to {{ insert: param, ac-01_odp.01 }};" }, { "id": "ac-1_obj.a-3", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.[03]", "class": "sp800-53a" } ], "prose": "access control procedures to facilitate the implementation of the access control policy and associated controls are developed and documented;" }, { "id": "ac-1_obj.a-4", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.[04]", "class": "sp800-53a" } ], "prose": "the access control procedures are disseminated to {{ insert: param, ac-01_odp.02 }};" }, { "id": "ac-1_obj.a.1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.a.1.a", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.a.1.a-1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[01]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses purpose;" }, { "id": "ac-1_obj.a.1.a-2", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[02]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses scope;" }, { "id": "ac-1_obj.a.1.a-3", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[03]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses roles;" }, { "id": "ac-1_obj.a.1.a-4", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[04]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses responsibilities;" }, { "id": "ac-1_obj.a.1.a-5", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[05]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses management commitment;" }, { "id": "ac-1_obj.a.1.a-6", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[06]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses coordination among organizational entities;" }, { "id": "ac-1_obj.a.1.a-7", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(a)[07]", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy addresses compliance;" } ] }, { "id": "ac-1_obj.a.1.b", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01a.01(b)", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.03 }} access control policy is consistent with applicable laws, Executive Orders, directives, regulations, policies, standards, and guidelines;" } ] } ] }, { "id": "ac-1_obj.b", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01b.", "class": "sp800-53a" } ], "prose": "the {{ insert: param, ac-01_odp.04 }} is designated to manage the development, documentation, and dissemination of the access control policy and procedures;" }, { "id": "ac-1_obj.c", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.c.1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.01", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.c.1-1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.01[01]", "class": "sp800-53a" } ], "prose": "the current access control policy is reviewed and updated {{ insert: param, ac-01_odp.05 }};" }, { "id": "ac-1_obj.c.1-2", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.01[02]", "class": "sp800-53a" } ], "prose": "the current access control policy is reviewed and updated following {{ insert: param, ac-01_odp.06 }};" } ] }, { "id": "ac-1_obj.c.2", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.02", "class": "sp800-53a" } ], "parts": [ { "id": "ac-1_obj.c.2-1", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.02[01]", "class": "sp800-53a" } ], "prose": "the current access control procedures are reviewed and updated {{ insert: param, ac-01_odp.07 }};" }, { "id": "ac-1_obj.c.2-2", "name": "assessment-objective", "props": [ { "name": "label", "value": "AC-01c.02[02]", "class": "sp800-53a" } ], "prose": "the current access control procedures are reviewed and updated following {{ insert: param, ac-01_odp.08 }}." } ] } ] } ] }, { "id": "ac-1_asm-examine", "name": "assessment-method", "props": [ { "name": "method", "ns": "http://csrc.nist.gov/ns/rmf", "value": "EXAMINE" }, { "name": "label", "value": "AC-01-Examine", "class": "sp800-53a" } ], "parts": [ { "name": "assessment-objects", "prose": "Access control policy and procedures\n\nsystem security plan\n\nprivacy plan\n\nother relevant documents or records" } ] }, { "id": "ac-1_asm-interview", "name": "assessment-method", "props": [ { "name": "method", "ns": "http://csrc.nist.gov/ns/rmf", "value": "INTERVIEW" }, { "name": "label", "value": "AC-01-Interview", "class": "sp800-53a" } ], "parts": [ { "name": "assessment-objects", "prose": "Organizational personnel with access control responsibilities\n\norganizational personnel with information security with information security and privacy responsibilities" } ] } ] } ] } ], "back-matter": { "resources": [ { "uuid": "91f992fb-f668-4c91-a50f-0f05b95ccee3", "title": "32 CFR 2002", "citation": { "text": "Code of Federal Regulations, Title 32, *Controlled Unclassified Information* (32 C.F.R. 2002)." }, "rlinks": [ { "href": "https://www.federalregister.gov/documents/2016/09/14/2016-21665/controlled-unclassified-information" } ] } ] } } } ```
tuckerzp commented 2 years ago

@xee5ch thank you for submitting an issue! Do you have an example catalog that crashes? I tried to replicate that crash using the usnistgov rev 5 catatlog and could not make it crash with Warnings and Errors. I do feel like I have seen this happen before though...

xee5ch commented 2 years ago

@tuckerzp The sample is the second collapsed details block. I pulled the latest container from ghcr.io and re ran with the official Rev 5 catalog from NIST and cut more and more until the errors didn't show. That's how I got to that example. That does work. That is very small but the official SP 800-53 Rev 5 has a massive amount of cross-reffed links from back matter so once I got it to one control it worked. I removed bc the constraint warnings are errors in code and exception throwing theory I had.

I'll open another report for the UI but separate of this the UI throws an error that there is no back-matter and the resources is an empty array. So I added one resource back! Haha. I'm on mobile now but I'll report that too when I have time tonight.

Do you want the example in the report as a gist would that be easier?

tuckerzp commented 2 years ago

Do you want the example in the report as a gist would that be easier?

Yeah, that would be great! It will be easier to look into if I can make it crash on my machine. I will try to look into this more to figure out why it is crashing. WARNING & ERROR messages should not cause anything to crash usually.

laurelmay commented 2 years ago

Yeah, we have seen this before. It was way worse in v1.0.4.1 of liboscal-java and that seemed to be due to over-eager error throwing on constraint validation. I think v0.9.0 of metaschema fixed that (and therefore liboscal-java v1.0.4.2).

Now we're seeing a weird issue with reflection down in the metaschema library (which we also saw in v1.0.4.1 but was mostly hidden by the constraint validation errors):

java.lang.IllegalAccessException: interface gov.nist.secauto.metaschema.binding.model.IBoundNamedInstance cannot access a member of class gov.nist.secauto.oscal.lib.model.Property with modifiers "private"
        at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:361) ~[na:na]
        at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:591) ~[na:na]
        at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075) ~[na:na]
        at java.base/java.lang.reflect.Field.set(Field.java:778) ~[na:na]
        at gov.nist.secauto.metaschema.binding.model.IBoundNamedInstance.setValue(IBoundNamedInstance.java:156) ~[metaschema-java-binding-0.9.0.jar!/:na]
        at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readInternal(DefaultAssemblyClassBinding.java:470) ~[metaschema-java-binding-0.9.0.jar!/:na]
        at gov.nist.secauto.metaschema.binding.model.DefaultAssemblyClassBinding.readItem(DefaultAssemblyClassBinding.java:381) ~[metaschema-java-binding-0.9.0.jar!/:na]

The odd thing here is that it seems to be highly inconsistent and transient for a specific failure. I have failed to reproduce a minimal example that fails every time. I think this is at a minimum related to #111 but it very well could be exactly the same thing.

@tuckerzp Thank you for taking on the investigation into this; I think that primarily we're going to need to find a path to reliably reproducing this issue to find so we can open an issue on (or make a PR to) liboscal-java or metaschema-java as appropriate.

xee5ch commented 2 years ago

Now we're seeing a weird issue with reflection down in the metaschema library (which we also saw in v1.0.4.1 but was mostly hidden by the constraint validation errors)

Interesting, has anyone filed this upstream with David Waltermire and the NIST team? I don't mind helping there.

The odd thing here is that it seems to be highly inconsistent and transient for a specific failure. I have failed to reproduce a minimal example that fails every time. I think this is at a minimum related to #111 but it very well could be exactly the same thing.

I don't want help finding a Metaschema repro for this, @tuckerzp or @kylelaker?

And as for managing this bug, I don't mind linking or closing and marking this as dupe to focus on that.

laurelmay commented 2 years ago

Interesting, has anyone filed this upstream with David Waltermire and the NIST team? I don't mind helping there.

Not yet -- I think we were hoping to actually find a cause and to make sure we're not doing something silly on our end first. And frankly, this issue has sorta slipped my mind. We did eagerly adopt 1.0.4.2 almost purely with the intention of seeing whether this was still an issue.

The odd thing here is that it seems to be highly inconsistent and transient for a specific failure. I have failed to reproduce a minimal example that fails every time. I think this is at a minimum related to #111 but it very well could be exactly the same thing.

I don't want help finding a Metaschema repro for this, @tuckerzp or @kylelaker?

If you're able to provide any guidance here, we'd certainly appreciate it! Especially when it comes to peeling away the liboscal-java layer and diving into reproing against metaschema. But even with liboscal-java, I think this comes up with (as you highlighted) the cross-referencing. But I can't even make the 800-53 rev5 catalog do it all the time.

And as for managing this bug, I don't mind linking or closing and marking this as dupe to focus on that.

I think we'll keep them both open for now. Since this one is actually having a conversation, we might just keep this issue around and close #111 later.