Skip to content

Commit de4ebae

Browse files
author
奇淼(piexlmax
authored
Merge pull request #242 from HXSecurity/sca-feature
Sca feature
2 parents 70d915a + 5fe3334 commit de4ebae

35 files changed

+7781
-3211
lines changed

package-lock.json

Lines changed: 166 additions & 187 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"dependencies": {
1111
"@antv/g6": "4.1.11",
1212
"@innologica/vue-dropdown-menu": "^0.1.4",
13+
"@types/sortablejs": "^1.13.0",
1314
"axios": "^0.21.0",
1415
"cookies-js": "^1.2.3",
1516
"core-js": "^3.6.5",
@@ -19,6 +20,7 @@
1920
"markdown-it-xss": "^1.0.2",
2021
"node-sass": "^5.0.0",
2122
"nprogress": "^0.2.0",
23+
"sortablejs": "^1.15.0",
2224
"view-design": "^4.6.1",
2325
"vue": "^2.6.11",
2426
"vue-class-component": "^7.2.3",

src/config/lang/zh_cn.ts

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -203,15 +203,12 @@ export default {
203203
term5: ``,
204204
term6: ``,
205205
term7: ``,
206-
p1:
207-
'若尚未启动 Web 应用服务器,请启动 Web 应用服务器。然后再浏览器访问应用。稍等1-2分钟,刷新系统配置页面,点击Agent管理,查看Agent是否注册成功。如果没有注册成功,按照如下步骤进行排查:',
206+
p1: '若尚未启动 Web 应用服务器,请启动 Web 应用服务器。然后再浏览器访问应用。稍等1-2分钟,刷新系统配置页面,点击Agent管理,查看Agent是否注册成功。如果没有注册成功,按照如下步骤进行排查:',
208207
p2: '1. 检查 agent.jar 文件',
209-
p3:
210-
'运行 java -jar /tmp/agent.jar 命令,查看是否反馈 agent.jar 的使用帮助,如果没有,说明 agent.jar 文件不正确,请重新下载然后检查 agent.jar 文件,如果仍然不正确,请前往 github 给工程师提交 issue,我们会及时给您回复',
208+
p3: '运行 java -jar /tmp/agent.jar 命令,查看是否反馈 agent.jar 的使用帮助,如果没有,说明 agent.jar 文件不正确,请重新下载然后检查 agent.jar 文件,如果仍然不正确,请前往 github 给工程师提交 issue,我们会及时给您回复',
211209
p4: '2. 检查网络情况',
212210
p51: '在 Web 应用服务器中,检查是否可访问',
213-
p52:
214-
'服务,如果不可访问,说明网络不通,请解决网络访问的问题;如果网络不存在问题,请前往 github 给工程师提交 issue,我们会及时给您回复',
211+
p52: '服务,如果不可访问,说明网络不通,请解决网络访问的问题;如果网络不存在问题,请前往 github 给工程师提交 issue,我们会及时给您回复',
215212
title2: '确认Agent端所在环境在我们的支持列表中。',
216213
},
217214
python: {
@@ -234,26 +231,21 @@ export default {
234231
'term6-3': '- pip >= 19.2.3',
235232
manualInstallationDesc: '找到第一步下载的压缩文件执行以下命令',
236233
settings: '项目配置',
237-
p1:
238-
'若尚未启动 Web 应用服务器,请启动 Web 应用服务器。然后再浏览器访问应用。稍等1-2分钟,刷新系统配置页面,点击Agent管理,查看Agent是否注册成功。如果没有注册成功,按照如下步骤进行排查:',
234+
p1: '若尚未启动 Web 应用服务器,请启动 Web 应用服务器。然后再浏览器访问应用。稍等1-2分钟,刷新系统配置页面,点击Agent管理,查看Agent是否注册成功。如果没有注册成功,按照如下步骤进行排查:',
239235
p2: '1. 检查 dongtai-agent-python.tar.gz 文件',
240-
p3:
241-
'运行pip3 install ./dongtai-agent-python.tar.gz 命令,查看是否反馈 dongtai-agent-python.tar.gz 的使用帮助,如果没有,说明 dongtai-agent-python.tar.gz文件不正确,请重新下载然后检查 dongtai-agent-python.tar.gz文件,如果仍然不正确,请前往 github 给工程师提交 issue,我们会及时给您回复',
236+
p3: '运行pip3 install ./dongtai-agent-python.tar.gz 命令,查看是否反馈 dongtai-agent-python.tar.gz 的使用帮助,如果没有,说明 dongtai-agent-python.tar.gz文件不正确,请重新下载然后检查 dongtai-agent-python.tar.gz文件,如果仍然不正确,请前往 github 给工程师提交 issue,我们会及时给您回复',
242237
p4: '2. 检测Django项目的setting.py文件,MIDDLEWARE配置是否有增加',
243238
p5: `'dongtai_agent_python.middlewares.django_middleware.FireMiddleware'`,
244239
p6: '3. 检查网络情况',
245240
p71: '在 Web 应用服务器中,检查是否可访问',
246-
p72:
247-
' 服务,如果不可访问,说明网络不通,请解决网络访问的问题;如果网络不存在问题,请前往 github 给工程师提交 issue,我们会及时给您回复',
241+
p72: ' 服务,如果不可访问,说明网络不通,请解决网络访问的问题;如果网络不存在问题,请前往 github 给工程师提交 issue,我们会及时给您回复',
248242
settingName: '配置项目名称',
249-
n1:
250-
'配置系统环境变量projectName,demoProjectName为自定义项目名称,与web页面,项目管理中新增项目名称保持一致,否则无法上报流量',
243+
n1: '配置系统环境变量projectName,demoProjectName为自定义项目名称,与web页面,项目管理中新增项目名称保持一致,否则无法上报流量',
251244
n2: 'linux/mac命令导入:',
252245
n3: 'export projectName=demoProjectName',
253246
n4: 'Windows 增加环境变量:',
254247
n5: '验证: 命令行 直接输入 env 即可查看',
255-
n6:
256-
'注意,若无法配置系统环境变量,可更改agent配置文件,修改项目名称,找到python安装agent扩展包路径地址,例如:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/dongtai_agent_python修改dongtai_agent_python/config.json中的project.name,系统环境变量projectName优先级高于配置文件中的project.name;',
248+
n6: '注意,若无法配置系统环境变量,可更改agent配置文件,修改项目名称,找到python安装agent扩展包路径地址,例如:/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/dongtai_agent_python修改dongtai_agent_python/config.json中的project.name,系统环境变量projectName优先级高于配置文件中的project.name;',
257249
},
258250
php: {
259251
ManualInstallation: '手动安装',
@@ -719,19 +711,15 @@ export default {
719711
detailR: '请输入匹配方式',
720712
fixR: '请输入匹配规则',
721713
t: '敏感数据配置',
722-
p1:
723-
'敏感信息检测功能正式开启公测,为了检测敏感信息泄漏的安全风险,需要配置敏感信息的匹配规则及相关的策略。',
714+
p1: '敏感信息检测功能正式开启公测,为了检测敏感信息泄漏的安全风险,需要配置敏感信息的匹配规则及相关的策略。',
724715
'p1-1': '检测位置:',
725716
'p1-2': '1. HTTP Request Param 参数',
726717
'p1-3': '2. HTTP Request Post Data',
727718
'p1-4': '3. HTTP Response Data',
728719
p2: '流程(以增加 手机号码泄漏 为例):',
729-
p3:
730-
'1. 进入 “策略管理” 页面,新增策略 “手机号码泄漏”,填写策略描述、修复建议并选择启用;',
731-
p4:
732-
'2. 返回 当前页面,点击 “新增匹配规则” 按钮,选择 策略名称为 “手机号码泄漏”,匹配方式为 “正则匹配”,填写 “匹配规则”,然后点击保存即可。',
733-
tip:
734-
'策略名称的来自 策略管理 中的策略名称,如不存在,可联系管理员前往策略管理 新增策略',
720+
p3: '1. 进入 “策略管理” 页面,新增策略 “手机号码泄漏”,填写策略描述、修复建议并选择启用;',
721+
p4: '2. 返回 当前页面,点击 “新增匹配规则” 按钮,选择 策略名称为 “手机号码泄漏”,匹配方式为 “正则匹配”,填写 “匹配规则”,然后点击保存即可。',
722+
tip: '策略名称的来自 策略管理 中的策略名称,如不存在,可联系管理员前往策略管理 新增策略',
735723
fixP: '输入正则表达式的规则,用于匹配当前策略',
736724
testP: '输入完内容后,点击运行按钮进行测试',
737725
search: '搜索',
@@ -862,8 +850,7 @@ export default {
862850
vul_verifiy: '主动验证',
863851
infoTitle: 'Agent 配置',
864852
agentThreshold: 'Agent 停止阈值',
865-
vul:
866-
'主动验证功能用于验证存在污点调用链的漏洞是否真实有效。主动验证时, engine 自动识别攻击参数位置,并构造 payload,然后从 Agent 内部重放 HTTP/HTTPS 流量,进行验证。该功能非必须功能,关闭不会造成漏洞检测结果的变化,如不需要,可自行关闭。',
853+
vul: '主动验证功能用于验证存在污点调用链的漏洞是否真实有效。主动验证时, engine 自动识别攻击参数位置,并构造 payload,然后从 Agent 内部重放 HTTP/HTTPS 流量,进行验证。该功能非必须功能,关闭不会造成漏洞检测结果的变化,如不需要,可自行关闭。',
867854
open: '当CPU利用率满足阈值条件时,Agent自动停止。',
868855
close: '当CPU利用率低于阈值条件时,Agent自动启动。',
869856
cpu: 'CPU 利用率 ',

src/services/sca.ts

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import request from '@/utils/request'
22
import { iResponse } from '@/services/types'
33
import { Message } from 'element-ui'
44
import { i18n } from '@/config/lang'
5+
import { Params } from './../views/taint/types/search.d'
56
interface scaListParams {
67
page?: number
78
pageSize?: number
@@ -15,14 +16,45 @@ interface scaListParams {
1516

1617
export default () =>
1718
new (class {
19+
vulProjectAssets(params: any): Promise<iResponse> {
20+
return request.get('/vul_project_assets', {
21+
params,
22+
baseURL: '/openapi/sca/v1',
23+
})
24+
}
25+
26+
assetVulDetail(data: any): Promise<iResponse> {
27+
return request.get('/asset_vul_detail/' + data.aggr_id, {
28+
baseURL: '/openapi/sca/v1',
29+
})
30+
}
31+
32+
assetVulProjects(aggr_id: any, params: any): Promise<iResponse> {
33+
return request.get('/asset_vul_projects/' + aggr_id, {
34+
params,
35+
baseURL: '/openapi/sca/v1',
36+
})
37+
}
38+
39+
assetVuls(aggr_id: any): Promise<iResponse> {
40+
return request.get('/asset_vuls/' + aggr_id, {
41+
baseURL: '/openapi/sca/v1',
42+
})
43+
}
44+
45+
assetProjects(aggr_id: any): Promise<iResponse> {
46+
return request.get('/asset_projects/' + aggr_id, {
47+
baseURL: '/openapi/sca/v1',
48+
})
49+
}
1850
// scaList
19-
scaList(params: scaListParams): Promise<iResponse> {
20-
return request.get('/scas', { params })
51+
scaList(data: any): Promise<iResponse> {
52+
return request.post('/scas', data)
2153
}
2254

2355
// scaSummary
24-
scaSummary(params: scaListParams): Promise<iResponse> {
25-
return request.get('/sca/summary', { params })
56+
scaSummary(data: any): Promise<iResponse> {
57+
return request.post('/sca/summary', data)
2658
}
2759

2860
// getScaDetail

src/services/setting.ts

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ interface agentListParams {
99

1010
export default () =>
1111
new (class {
12+
enum(): Promise<iResponse> {
13+
return request.get('/circuit_config/enum/all')
14+
}
15+
1216
agentUpdate(): Promise<iResponse> {
1317
return request.get('/agent/status/update', { timeout: 1000 })
1418
}
@@ -17,6 +21,12 @@ export default () =>
1721
return request.post('/agent/alias/modified', data)
1822
}
1923

24+
audit(data: any): Promise<iResponse> {
25+
return request.post('/agent/audit', data)
26+
}
27+
28+
// agentList(params: any): Promise<iResponse> {
29+
// return request.get('/agents', { params })
2030
// agentList(params: agentListParams): Promise<iResponse> {
2131
// return request.get('/agents', { params })
2232
// }
@@ -34,7 +44,7 @@ export default () =>
3444
})
3545
}
3646

37-
agentList(params: agentListParams): Promise<iResponse> {
47+
agentList(params: any): Promise<iResponse> {
3848
return request.get('/agents', {
3949
params,
4050
baseURL: process.env.VUE_APP_BASE_API_V2,
@@ -162,6 +172,10 @@ export default () =>
162172
return request.get('/program_language')
163173
}
164174

175+
vulRecheckPayload(params: any): Promise<iResponse> {
176+
return request.get('/vul_recheck_payload', { params })
177+
}
178+
165179
hookRuleList(params: {
166180
type: string
167181
page: number
@@ -179,6 +193,7 @@ export default () =>
179193
}): Promise<iResponse> {
180194
return request.get('/engine/hook/rule_types', { params })
181195
}
196+
182197
ruleTypeAdd(params: {
183198
type: string
184199
name: string
@@ -210,6 +225,14 @@ export default () =>
210225
return request.post('/engine/hook/rule/modify', params)
211226
}
212227

228+
vul_recheck_payload(params: any): Promise<iResponse> {
229+
return request.post('/vul_recheck_payload', params)
230+
}
231+
232+
edit_vul_recheck_payload(data: any): Promise<iResponse> {
233+
return request.put('/vul_recheck_payload/' + data.id, data)
234+
}
235+
213236
ruleDisable(params: { rule_id: string }): Promise<iResponse> {
214237
return request.get('/engine/hook/rule/disable', { params })
215238
}
@@ -225,6 +248,15 @@ export default () =>
225248
changeStatus(params: any): Promise<iResponse> {
226249
return request.get('/engine/hook/rule/status', { params })
227250
}
251+
252+
changeVulStatus(data: any): Promise<iResponse> {
253+
return request.put('/vul_recheck_payload/status', data)
254+
}
255+
256+
delVulStatus(data: any): Promise<iResponse> {
257+
return request.delete('/vul_recheck_payload/' + data.id)
258+
}
259+
228260
ruleDelete(params: { rule_id: string }): Promise<iResponse> {
229261
return request.get('/engine/hook/rule/delete', { params })
230262
}
@@ -313,6 +345,26 @@ export default () =>
313345
return request.get(`/version_control/versionlist`)
314346
}
315347

348+
machinecode(): Promise<iResponse> {
349+
return request.get(`/license/machinecode`)
350+
}
351+
352+
isAuthenticated(): Promise<iResponse> {
353+
return request.get(`/license/is_authenticated`)
354+
}
355+
356+
uploadLicense(data: any): Promise<iResponse> {
357+
return request.post(`/license/upload_license`, data)
358+
}
359+
360+
detailLicense(): Promise<iResponse> {
361+
return request.get(`/license/detail_license`)
362+
}
363+
364+
currentConcurrency(): Promise<iResponse> {
365+
return request.get(`/license/current_concurrency`)
366+
}
367+
316368
get_sca_strategy(params: any): Promise<iResponse> {
317369
return request.get(
318370
`/scadb/maven/bulk?page=${params.page}&page_size=${params.page_size}&name=${params.name}`
@@ -343,8 +395,28 @@ export default () =>
343395
get_license_list(): Promise<iResponse> {
344396
return request.get(`/scadb/license_list`)
345397
}
398+
399+
circuitPriority(row: any, data: any): Promise<iResponse> {
400+
return request.put(`/circuit_config/${row.id}/priority`, data)
401+
}
402+
403+
circuitReset(row: any): Promise<iResponse> {
404+
return request.put(`/circuit_config/${row.id}/reset`)
405+
}
406+
346407
get_threshold(): Promise<iResponse> {
347-
return request.get(`/threshold/settings/get`)
408+
return request.get(`/circuit_config`)
409+
}
410+
411+
createCircuit(data: any): Promise<iResponse> {
412+
return request.post(`/circuit_config`, data)
413+
}
414+
415+
updateCircuit(data: any): Promise<iResponse> {
416+
return request.put(`/circuit_config/` + data.id, data)
417+
}
418+
getCircuit(id: any): Promise<iResponse> {
419+
return request.get(`/circuit_config/` + id)
348420
}
349421

350422
save_threshold(data: any): Promise<iResponse> {
@@ -355,7 +427,7 @@ export default () =>
355427
}
356428

357429
del_threshold(data: any): Promise<iResponse> {
358-
return request.post(`/threshold/settings/del`, data)
430+
return request.delete(`/circuit_config/` + data.id)
359431
}
360432

361433
webhook_type(): Promise<iResponse> {

0 commit comments

Comments
 (0)