Skip to content

Commit 126b936

Browse files
authored
Merge pull request HXSecurity#526 from HXSecurity/beta
bump version to v1.10.0
2 parents 84d586d + 78be5f5 commit 126b936

File tree

93 files changed

+1115
-919
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+1115
-919
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
uses: actions/checkout@v2
6262

6363
- name: Initialize CodeQL
64-
uses: github/codeql-action/init@v1
64+
uses: github/codeql-action/init@v2
6565
with:
6666
languages: ${{ matrix.language }}
6767

@@ -76,7 +76,7 @@ jobs:
7676
maven-version: 3.2.5
7777

7878
- name: Autobuild
79-
uses: github/codeql-action/autobuild@v1
79+
uses: github/codeql-action/autobuild@v2
8080

8181
- name: Perform CodeQL Analysis
82-
uses: github/codeql-action/analyze@v1
82+
uses: github/codeql-action/analyze@v2

dongtai-agent/pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@
8484
<artifactId>gson</artifactId>
8585
<version>${gson.version}</version>
8686
</dependency>
87+
<dependency>
88+
<groupId>com.alibaba.fastjson2</groupId>
89+
<artifactId>fastjson2</artifactId>
90+
<version>${fastjson2.version}</version>
91+
</dependency>
8792
</dependencies>
8893

8994
<build>
@@ -176,6 +181,10 @@
176181
<pattern>com.google</pattern>
177182
<shadedPattern>${shade-prefix}.com.google</shadedPattern>
178183
</relocation>
184+
<relocation>
185+
<pattern>com.alibaba</pattern>
186+
<shadedPattern>${shade-prefix}.com.alibaba</shadedPattern>
187+
</relocation>
179188
</relocations>
180189
</configuration>
181190
</execution>

dongtai-agent/src/main/java/io/dongtai/iast/agent/Agent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ private static String[] parseAgentArgs(String[] args) throws ParseException {
3838
attachOptions.addOption(build("log_level", "log_level", "optional: DongTai agent log print level."));
3939
attachOptions.addOption(build("log_path", "log_path", "optional: DongTai agent log print path."));
4040
attachOptions.addOption(build("log_disable_collector", "log_disable_collector", "optional: DongTai agent disable log collector."));
41+
attachOptions.addOption(build("disabled_plugins", "disabled_plugins", "optional: DongTai agent disable plugins."));
4142

4243
CommandLineParser parser = new DefaultParser();
4344
HelpFormatter formatter = new HelpFormatter();

dongtai-agent/src/main/java/io/dongtai/iast/agent/AgentLauncher.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import io.dongtai.iast.agent.manager.EngineManager;
44
import io.dongtai.iast.agent.monitor.MonitorDaemonThread;
5-
import io.dongtai.iast.agent.monitor.impl.AgentStateMonitor;
65
import io.dongtai.iast.agent.report.AgentRegisterReport;
76
import io.dongtai.iast.common.constants.AgentConstant;
87
import io.dongtai.iast.common.scope.ScopeManager;
@@ -164,13 +163,6 @@ private static void install(final Instrumentation inst) {
164163
if (send) {
165164
LogCollector.extractFluent();
166165
DongTaiLog.info("Agent registered successfully.");
167-
Boolean agentStat = AgentRegisterReport.agentStat();
168-
if (!agentStat) {
169-
AgentStateMonitor.isCoreRegisterStart = false;
170-
DongTaiLog.info("Detection engine not started, agent waiting to be audited.");
171-
} else {
172-
AgentStateMonitor.isCoreRegisterStart = true;
173-
}
174166
shutdownHook = new ShutdownThread();
175167
Runtime.getRuntime().addShutdownHook(shutdownHook);
176168
loadEngine(inst);
@@ -187,7 +179,7 @@ private static void install(final Instrumentation inst) {
187179
private static void loadEngine(final Instrumentation inst) {
188180
EngineManager engineManager = EngineManager.getInstance(inst, LAUNCH_MODE, EngineManager.getPID(), AGENT_STATE);
189181
MonitorDaemonThread daemonThread = MonitorDaemonThread.getInstance(engineManager);
190-
if (MonitorDaemonThread.delayTime <= 0 && AgentStateMonitor.isCoreRegisterStart) {
182+
if (MonitorDaemonThread.delayTime <= 0) {
191183
daemonThread.startEngine();
192184
}
193185

dongtai-agent/src/main/java/io/dongtai/iast/agent/IastProperties.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class IastProperties {
3333
put("log_path", PropertyConstant.PROPERTY_LOG_PATH);
3434
put("log_disable_collector", PropertyConstant.PROPERTY_LOG_DISABLE_COLLECTOR);
3535
put("uuid_path", PropertyConstant.PROPERTY_UUID_PATH);
36+
put("disabled_plugins", PropertyConstant.PROPERTY_DISABLED_PLUGINS);
3637
}};
3738

3839
private static IastProperties instance;
@@ -223,7 +224,7 @@ public String getServerToken() {
223224
public String getIsDownloadPackage() {
224225
if (null == isDownloadPackage) {
225226
isDownloadPackage = System.getProperty(PropertyConstant.PROPERTY_SERVER_PACKAGE,
226-
cfg.getProperty(PropertyConstant.PROPERTY_SERVER_PACKAGE, "true"));
227+
cfg.getProperty(PropertyConstant.PROPERTY_SERVER_PACKAGE, "false"));
227228
}
228229
return isDownloadPackage;
229230
}

dongtai-agent/src/main/java/io/dongtai/iast/agent/fallback/FallbackConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.dongtai.iast.agent.fallback;
22

3+
import com.alibaba.fastjson2.JSONObject;
34
import com.google.gson.reflect.TypeToken;
45
import io.dongtai.iast.agent.IastProperties;
56
import io.dongtai.iast.agent.fallback.entity.*;
@@ -15,7 +16,7 @@
1516
import io.dongtai.iast.common.state.State;
1617
import io.dongtai.log.DongTaiLog;
1718
import io.dongtai.log.ErrorCode;
18-
import org.json.JSONObject;
19+
1920

2021
import java.lang.reflect.Field;
2122
import java.util.*;
@@ -111,7 +112,7 @@ private static FallbackConfigEntity parseRemoteConfigResponseV2(String remoteRes
111112
try {
112113
// 默认响应标识调用失败
113114
if (REMOTE_CONFIG_DEFAULT_META.equals(remoteResponse)
114-
|| REMOTE_CONFIG_DEFAULT_META.equals(new JSONObject(remoteResponse).get("data").toString())) {
115+
|| REMOTE_CONFIG_DEFAULT_META.equals(JSONObject.parseObject(remoteResponse).get("data").toString())) {
115116
FallbackConfig.enableAutoFallback = false;
116117
if (AgentState.getInstance().isFallback()) {
117118
DongTaiLog.info("fallback remote config empty, auto fallback closed, starting agent");

dongtai-agent/src/main/java/io/dongtai/iast/agent/manager/EngineManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.dongtai.iast.agent.*;
44
import io.dongtai.iast.agent.fallback.FallbackManager;
5+
import io.dongtai.iast.agent.monitor.MonitorDaemonThread;
56
import io.dongtai.iast.agent.report.AgentRegisterReport;
67
import io.dongtai.iast.agent.util.*;
78
import io.dongtai.iast.common.state.AgentState;
@@ -36,7 +37,7 @@ public class EngineManager {
3637
private final IastProperties properties;
3738
private final String launchMode;
3839
private Class<?> classOfEngine;
39-
private FallbackManager fallbackManager;
40+
private final FallbackManager fallbackManager;
4041
private final AgentState agentState;
4142

4243
/**

dongtai-agent/src/main/java/io/dongtai/iast/agent/monitor/MonitorDaemonThread.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,8 @@ public void run() {
5555
if (MonitorDaemonThread.delayTime > 0) {
5656
try {
5757
Thread.sleep(delayTime);
58-
} catch (InterruptedException ignore) {
59-
}
60-
if (AgentStateMonitor.isCoreRegisterStart) {
6158
startEngine();
59+
} catch (InterruptedException ignore) {
6260
}
6361
}
6462
// 引擎启动成功后,创建子线程执行monitor任务
@@ -81,7 +79,6 @@ public void startEngine() {
8179
// jdk8以上
8280
status = engineManager.extractPackage();
8381
status = status && engineManager.install();
84-
status = status && engineManager.start();
8582
}
8683
if (!status) {
8784
DongTaiLog.info("DongTai IAST started failure");

dongtai-agent/src/main/java/io/dongtai/iast/agent/monitor/impl/AgentStateMonitor.java

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.dongtai.iast.agent.monitor.impl;
22

3+
import com.alibaba.fastjson2.JSON;
4+
import com.alibaba.fastjson2.JSONObject;
35
import io.dongtai.iast.agent.manager.EngineManager;
46
import io.dongtai.iast.agent.monitor.IMonitor;
57
import io.dongtai.iast.agent.monitor.MonitorDaemonThread;
@@ -9,11 +11,11 @@
911
import io.dongtai.iast.agent.util.ThreadUtils;
1012
import io.dongtai.iast.common.constants.AgentConstant;
1113
import io.dongtai.iast.common.constants.ApiPath;
14+
import io.dongtai.iast.common.state.AgentState;
1215
import io.dongtai.iast.common.state.State;
1316
import io.dongtai.iast.common.state.StateCause;
1417
import io.dongtai.log.DongTaiLog;
1518
import io.dongtai.log.ErrorCode;
16-
import org.json.JSONObject;
1719

1820
import java.util.HashMap;
1921
import java.util.Map;
@@ -23,7 +25,6 @@
2325
*/
2426
public class AgentStateMonitor implements IMonitor {
2527
private final EngineManager engineManager;
26-
public static Boolean isCoreRegisterStart = false;
2728
private static final String NAME = "AgentStateMonitor";
2829

2930
public AgentStateMonitor(EngineManager engineManager) {
@@ -37,50 +38,73 @@ public String getName() {
3738

3839
@Override
3940
public void check() {
41+
AgentState agentState = this.engineManager.getAgentState();
4042
try {
41-
if (this.engineManager.getAgentState().getState() == null) {
43+
if (agentState.getState() == null) {
4244
return;
4345
}
4446

45-
if (this.engineManager.getAgentState().isUninstalledByCli()) {
47+
if (agentState.isUninstalledByCli()) {
4648
HttpClientUtils.sendPost(ApiPath.ACTUAL_ACTION,
47-
HeartBeatReport.generateAgentActualActionMsg(this.engineManager.getAgentState()));
49+
HeartBeatReport.generateAgentActualActionMsg(agentState));
4850
return;
4951
}
5052

51-
if (!this.engineManager.getAgentState().isFallback() && !this.engineManager.getAgentState().isException()) {
52-
String expectState = checkExpectState();
53-
if (State.RUNNING.equals(expectState) && this.engineManager.getAgentState().isPaused()) {
53+
Map<String, Object> stringStringMap = checkExpectState();
54+
// 默认值
55+
String expectState = "other";
56+
boolean allowReport = true;
57+
58+
if (stringStringMap != null) {
59+
expectState = stringStringMap.get("exceptRunningStatus").toString();
60+
if (null != stringStringMap.get("allowReport")) {
61+
allowReport = !"0".equals(stringStringMap.get("allowReport").toString());
62+
}
63+
}
64+
65+
if (allowReport && !agentState.isAllowReport()) {
66+
DongTaiLog.info("engine is allowed to report data");
67+
agentState.setAllowReport(allowReport);
68+
} else if (!allowReport && agentState.isAllowReport()) {
69+
DongTaiLog.info("engine is not allowed to report data");
70+
agentState.setAllowReport(allowReport);
71+
}
72+
73+
if (!agentState.isFallback() && !agentState.isException() && agentState.isAllowReport() && agentState.isAllowReport()) {
74+
if (State.RUNNING.equals(expectState) && agentState.isPaused()) {
5475
DongTaiLog.info("engine start by server expect state");
5576
engineManager.start();
56-
engineManager.getAgentState().setState(State.RUNNING).setCause(StateCause.RUNNING_BY_SERVER);
57-
} else if (State.PAUSED.equals(expectState) && this.engineManager.getAgentState().isRunning()) {
77+
agentState.setState(State.RUNNING).setCause(StateCause.RUNNING_BY_SERVER);
78+
} else if (State.PAUSED.equals(expectState) && agentState.isRunning()) {
5879
DongTaiLog.info("engine stop by server expect state");
5980
engineManager.stop();
60-
engineManager.getAgentState().setState(State.PAUSED).setCause(StateCause.PAUSE_BY_SERVER);
81+
agentState.setState(State.PAUSED).setCause(StateCause.PAUSE_BY_SERVER);
6182
}
6283
}
6384
HttpClientUtils.sendPost(ApiPath.ACTUAL_ACTION,
64-
HeartBeatReport.generateAgentActualActionMsg(this.engineManager.getAgentState()));
85+
HeartBeatReport.generateAgentActualActionMsg(agentState));
6586
} catch (Throwable t) {
6687
DongTaiLog.warn(ErrorCode.AGENT_MONITOR_THREAD_CHECK_FAILED, getName(), t);
6788
}
6889
}
6990

70-
private String checkExpectState() {
91+
private Map<String, Object> checkExpectState() {
7192
try {
72-
Map<String, String> parameters = new HashMap<String, String>();
93+
Map<String, String> parameters = new HashMap<>();
7394
parameters.put("agentId", String.valueOf(AgentRegisterReport.getAgentId()));
7495
String respRaw = HttpClientUtils.sendGet(ApiPath.EXCEPT_ACTION, parameters).toString();
7596
if (!respRaw.isEmpty()) {
76-
JSONObject resp = new JSONObject(respRaw);
97+
JSONObject resp = JSON.parseObject(respRaw);
7798
JSONObject data = (JSONObject) resp.get("data");
78-
return data.get("exceptRunningStatus").toString();
99+
Map<String, Object> objectObjectHashMap = new HashMap<>(2);
100+
String s = data.toJSONString();
101+
objectObjectHashMap = JSON.parseObject(s, Map.class);
102+
return objectObjectHashMap;
79103
}
80104
} catch (Throwable e) {
81-
return "other";
105+
return null;
82106
}
83-
return "other";
107+
return null;
84108
}
85109

86110
@Override

dongtai-agent/src/main/java/io/dongtai/iast/agent/report/AgentRegisterReport.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.dongtai.iast.agent.report;
22

3+
import com.alibaba.fastjson2.JSON;
4+
import com.alibaba.fastjson2.JSONArray;
5+
import com.alibaba.fastjson2.JSONObject;
36
import io.dongtai.iast.agent.IastProperties;
47
import io.dongtai.iast.agent.manager.EngineManager;
58
import io.dongtai.iast.agent.middlewarerecognition.IServer;
@@ -10,8 +13,7 @@
1013
import io.dongtai.iast.common.utils.base64.Base64Encoder;
1114
import io.dongtai.log.DongTaiLog;
1215
import io.dongtai.log.ErrorCode;
13-
import org.json.JSONArray;
14-
import org.json.JSONObject;
16+
1517

1618
import java.io.*;
1719
import java.net.*;
@@ -27,7 +29,6 @@ public class AgentRegisterReport {
2729
public static AgentRegisterReport INSTANCE;
2830
private String projectName = null;
2931
private static Integer agentId = -1;
30-
private static Integer coreRegisterStart = 1;
3132
final IServer server = ServerDetect.getWebserver();
3233
private static String AGENT_NAME = null;
3334
private static String HOST_NAME = null;
@@ -211,7 +212,7 @@ private String readIpInfo() {
211212
} else {
212213
jsonObject.put("isAddress", "0");
213214
}
214-
network.put(jsonObject);
215+
network.add(jsonObject);
215216
}
216217
}
217218
return network.toString();
@@ -258,12 +259,11 @@ public static Boolean send() {
258259
*/
259260
private void setAgentData(StringBuilder responseRaw) {
260261
try {
261-
JSONObject responseObj = new JSONObject(responseRaw.toString());
262+
JSONObject responseObj = JSON.parseObject(responseRaw.toString());
262263
Integer status = (Integer) responseObj.get("status");
263264
if (status == 201) {
264265
JSONObject data = (JSONObject) responseObj.get("data");
265266
agentId = (Integer) data.get("id");
266-
coreRegisterStart = (Integer) data.get("coreAutoStart");
267267
} else {
268268
DongTaiLog.error(ErrorCode.AGENT_REGISTER_RESPONSE_CODE_INVALID, responseRaw);
269269
}
@@ -273,10 +273,6 @@ private void setAgentData(StringBuilder responseRaw) {
273273
}
274274
}
275275

276-
public static Boolean agentStat() {
277-
return coreRegisterStart == 1;
278-
}
279-
280276
private static String generateUUID() {
281277
String uuidPath = IastProperties.getInstance().getUUIDPath();
282278
if (uuidPath == null || uuidPath.isEmpty()) {

0 commit comments

Comments
 (0)