Skip to content

Commit d0ab516

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 026baf3 + 2200754 commit d0ab516

9 files changed

Lines changed: 88 additions & 7 deletions

File tree

client/node/common/cmdarg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ def parse_args():
7575
start_parser = subparsers.add_parser('start', help="启动节点")
7676
start_parser.add_argument("-t", "--token", dest='token', type=str, help="个人token,在代码分析网站获取", required=True)
7777
start_parser.add_argument("--org-sid", dest="org_sid", help="团队编号,在代码分析网站获取。指定注册为团队的节点,不指定则为公共节点")
78+
start_parser.add_argument("--tag", dest="tag", help="机器标签")
79+
start_parser.add_argument("--create-from", dest="create_from", type=str, help="客户端节点启动渠道")
7880

7981
# quickscan命令
8082
quickscan_parser = subparsers.add_parser('quickscan', help="执行快速分析")

client/node/quicktask/toolloader.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,20 @@ def load_tools(args):
5353
else:
5454
tool_tasks = QuickScan.get_scan_tasks(languages, labels, {})
5555
tool_names = [task['task_name'] for task in tool_tasks]
56+
57+
custom_tools = []
58+
for tool_name in tool_names:
59+
try:
60+
__import__("tool." + tool_name)
61+
except ModuleNotFoundError:
62+
# 记录自定义工具列表
63+
custom_tools.append(tool_name)
64+
except:
65+
LogPrinter.exception("encounter error.")
66+
pass
67+
5668
LogPrinter.info("Initing other tools ...")
57-
ToolLoader(tool_names=tool_names, task_list=tool_tasks, include_common=False).git_load_tools(print_enable=False)
69+
ToolLoader(tool_names=tool_names, task_list=tool_tasks, custom_tools=custom_tools, include_common=False).git_load_tools(print_enable=False)
5870

5971

6072
if __name__ == '__main__':

client/node/servertask/looprunner.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ def __init__(self, args):
4040
TaskRunner.__init__(self)
4141

4242
self._token = args.token
43+
self._tag = args.tag
4344
self._org_sid = args.org_sid
45+
self._create_from = args.create_from
4446
self._server_url = LocalConfig.get_server_url()
4547
# 打印连接的sever地址
4648
LogPrinter.info("using server: %s" % self._server_url)
@@ -140,7 +142,7 @@ def _send_result(self, task):
140142
def run(self):
141143
"""looprunner主函数"""
142144
# 向server注册节点
143-
NodeMgr().register_node(self._server, self._org_sid)
145+
NodeMgr().register_node(self._server, self._tag, self._org_sid, self._create_from)
144146

145147
# 启动心跳上报线程
146148
HeartBeat(self._server).start()

client/node/servertask/nodemgr.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import psutil
1515
import uuid
1616
import sys
17+
import socket
1718

1819
from node import app
1920
from platform import platform
@@ -24,23 +25,34 @@
2425
class NodeMgr(object):
2526
"""本地节点管理"""
2627

27-
def register_node(self, server, org_sid=None):
28+
def get_docker_uuid(self, create_from, tag):
29+
"""如果从docker创建,获取到docker的主机名,与标签一起拼接成为节点唯一标识NODE_UUID"""
30+
if create_from and "docker" == create_from:
31+
host_name = socket.gethostname()
32+
return f"{tag}-{host_name}"
33+
return None
34+
35+
def register_node(self, server, tag=None, org_sid=None, create_from=None):
2836
'''用本地node_uuid向server注册,获取server给的node_id。
2937
如果node_id和本地存储node_id不一致,则抛出异常。
30-
31-
:param server: server的node rpc接口
3238
'''
39+
if not tag:
40+
tag = app.settings.OS_TAG_MAP[sys.platform]
3341
node_uuid = app.persist_data.get('NODE_UUID')
3442
if not node_uuid:
35-
node_uuid = uuid.uuid1().hex
43+
node_uuid = self.get_docker_uuid(create_from, tag)
44+
if not node_uuid:
45+
node_uuid = uuid.uuid1().hex
3646
app.persist_data['NODE_UUID'] = node_uuid
37-
tag = app.settings.OS_TAG_MAP[sys.platform]
47+
3848
data = {
3949
"uuid": node_uuid,
4050
"tag": tag,
4151
"os_info": app.settings.PLATFORMS[sys.platform],
4252
"org_sid": org_sid # 为空时,表示为公共节点,不为空时,表示指定团队的节点
4353
}
54+
if create_from:
55+
data["create_from"] = create_from
4456
node_id = server.register(data)
4557
LogPrinter.info('node(%s) registered in server node id:%s', node_uuid, node_id)
4658
app.persist_data['NODE_ID'] = node_id
0 Bytes
Binary file not shown.
528 Bytes
Binary file not shown.
4.38 KB
Binary file not shown.
516 Bytes
Binary file not shown.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
[
2+
{
3+
"name": "【NodeJs】强化安全规则包",
4+
"description": "针对Nodejs express的安全规则",
5+
"revision": null,
6+
"package_type": "official",
7+
"languages": [
8+
"js"
9+
],
10+
"labels": [
11+
"安全"
12+
],
13+
"checkrule_set": [
14+
{
15+
"checktool": "tca_ql_js",
16+
"checkrule": "express_codeinject",
17+
"severity": "fatal",
18+
"rule_params": null,
19+
"state": "enabled"
20+
},
21+
{
22+
"checktool": "tca_ql_js",
23+
"checkrule": "express_pathtraversal",
24+
"severity": "fatal",
25+
"rule_params": null,
26+
"state": "enabled"
27+
},
28+
{
29+
"checktool": "tca_ql_js",
30+
"checkrule": "express_urlrender",
31+
"severity": "fatal",
32+
"rule_params": null,
33+
"state": "enabled"
34+
},
35+
{
36+
"checktool": "tca_ql_js",
37+
"checkrule": "express_xss",
38+
"severity": "error",
39+
"rule_params": null,
40+
"state": "enabled"
41+
},
42+
{
43+
"checktool": "tca_ql_js",
44+
"checkrule": "express_xxe",
45+
"severity": "fatal",
46+
"rule_params": null,
47+
"state": "enabled"
48+
}
49+
],
50+
"open_saas": false,
51+
"envs": null
52+
}
53+
]

0 commit comments

Comments
 (0)