Unable to extract jnotify library (rasp/libjnotify_64bit.so):
java.io.FileNotFoundException: /data/w/tomcat/rasp/libjnotify_64bit.so (Permission denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
java.lang.ExceptionInInitializerError
at org.scijava.nativelib.NativeLoader.<clinit>(NativeLoader.java:107)
at com.baidu.openrasp.v8.V8.Load(V8.java:25)
at com.baidu.openrasp.plugin.js.JS.Initialize(JS.java:44)
at com.baidu.openrasp.EngineBoot.start(EngineBoot.java:56)
at com.baidu.openrasp.ModuleContainer.start(ModuleContainer.java:78)
at com.baidu.openrasp.ModuleLoader.<init>(ModuleLoader.java:74)
at com.baidu.openrasp.ModuleLoader.load(ModuleLoader.java:103)
at com.baidu.openrasp.Agent.init(Agent.java:93)
at com.baidu.openrasp.Agent.premain(Agent.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.io.IOException: Permission denied
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(File.java:2001)
at java.io.File.createTempFile(File.java:2047)
at org.scijava.nativelib.BaseJniExtractor.getTempDir(BaseJniExtractor.java:123)
at org.scijava.nativelib.WebappJniExtractor.<init>(WebappJniExtractor.java:69)
at org.scijava.nativelib.NativeLoader.<clinit>(NativeLoader.java:103)
... 14 more
此时请检查 /tmp 是否有写权限,以及是否有安全防护软件对 /tmp 目录增加了写保护。
7.2 libopenrasp_v8_java.so: failed to map segment from shared object: Permission denied
对于以下两种场景,
机器开启了SELinux,不允许Tomcat加载不符合策略的动态链接库
so释放目录没有执行权限,比如使用了 noexec 参数挂载
Java可能会出现无法加载so的情况,并提示无法创建区段映射:
java.lang.UnsatisfiedLinkError: /var/cache/tomcat/temp/nativelib-loader_4485267645656510327/Classloader.1658314629304.0/libopenrasp_v8_java.so: /var/cache/tomcat/temp/nativelib-loader_4485267645656510327/Classloader.1658314629304.0/libopenrasp_v8_java.so: failed to map segment from shared object: Permission denied
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
at java.lang.Runtime.load0(Runtime.java:810)
at java.lang.System.load(System.java:1088)
at com.baidu.openrasp.nativelib.NativeLibraryUtil.loadNativeLibrary(NativeLibraryUtil.java:340)
at com.baidu.openrasp.nativelib.NativeLoader.loadLibrary(NativeLoader.java:136)
at com.baidu.openrasp.v8.Loader.load(Loader.java:12)
at com.baidu.openrasp.EngineBoot.start(EngineBoot.java:57)
at com.baidu.openrasp.ModuleContainer.start(ModuleContainer.java:78)
at com.baidu.openrasp.ModuleLoader.<init>(ModuleLoader.java:89)
at com.baidu.openrasp.ModuleLoader.load(ModuleLoader.java:117)
at com.baidu.openrasp.Agent.init(Agent.java:94)
at com.baidu.openrasp.Agent.premain(Agent.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
INFO: Couldn't find resource META-INF/lib/linux_arm64/libopenrasp_v8_java.so
[OpenRASP] Failed to load native library, please refer to https://rasp.baidu.com/doc/install/software.html#faq-v8-load for possible solutions.
java.io.IOException: Couldn't load library openrasp_v8_java
at com.baidu.openrasp.nativelib.NativeLoader.loadLibrary(NativeLoader.java:138)
at com.baidu.openrasp.v8.Loader.load(Loader.java:12)
at com.baidu.openrasp.EngineBoot.start(EngineBoot.java:57)
at com.baidu.openrasp.ModuleContainer.start(ModuleContainer.java:78)
at com.baidu.openrasp.ModuleLoader.<init>(ModuleLoader.java:89)
at com.baidu.openrasp.ModuleLoader.load(ModuleLoader.java:118)
目前我们仅支持x64/x86_64两类架构,其他架构会逐步支持
7.4 java.lang.UnsatisfiedLinkError 错误
如果释放的 libopenrasp_v8_java.so 无法加载,Java 会抛出如下异常:
ava.io.IOException: Couldn't load library library openrasp_v8_java
at org.scijava.nativelib.NativeLoader.loadLibrary(NativeLoader.java:141)
at com.baidu.openrasp.v8.V8.Load(V8.java:25)
at com.baidu.openrasp.plugin.js.JS.Initialize(JS.java:44)
at com.baidu.openrasp.EngineBoot.start(EngineBoot.java:56)
at com.baidu.openrasp.ModuleContainer.start(ModuleContainer.java:78)
at com.baidu.openrasp.ModuleLoader.<init>(ModuleLoader.java:74)
at com.baidu.openrasp.ModuleLoader.load(ModuleLoader.java:103)
at com.baidu.openrasp.Agent.init(Agent.java:93)
at com.baidu.openrasp.Agent.premain(Agent.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)
Caused by: java.lang.UnsatisfiedLinkError: no openrasp_v8_java in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1088)
at org.scijava.nativelib.NativeLoader.loadLibrary(NativeLoader.java:136)
... 14 more