Merge pull request #9387 from lafirest/fix/ctl_atom_leak

chore: make remsh node name away from the atom DOS attack
This commit is contained in:
lafirest 2022-11-17 19:17:18 +08:00 committed by GitHub
commit 4dd34d11cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -396,7 +396,7 @@ remsh() {
# Generate a random id # Generate a random id
relx_gen_id() { relx_gen_id() {
od -t x -N 4 /dev/urandom | head -n1 | awk '{print $2}' od -t u -N 4 /dev/urandom | head -n1 | awk '{print $2 % 1000}'
} }
call_nodetool() { call_nodetool() {

View File

@ -226,9 +226,14 @@ nodename(Name) ->
this_node_name(longnames, Name) -> this_node_name(longnames, Name) ->
[Node, Host] = re:split(Name, "@", [{return, list}, unicode]), [Node, Host] = re:split(Name, "@", [{return, list}, unicode]),
list_to_atom(lists:concat(["remsh_maint_", Node, os:getpid(), "@", Host])); list_to_atom(lists:concat(["remsh_maint_", Node, node_name_suffix_id(), "@", Host]));
this_node_name(shortnames, Name) -> this_node_name(shortnames, Name) ->
list_to_atom(lists:concat(["remsh_maint_", Name, os:getpid()])). list_to_atom(lists:concat(["remsh_maint_", Name, node_name_suffix_id()])).
%% use the reversed value that from pid mod 1000 as the node name suffix
node_name_suffix_id() ->
Pid = os:getpid(),
string:slice(string:reverse(Pid), 0, 3).
%% For windows??? %% For windows???
create_mnesia_dir(DataDir, NodeName) -> create_mnesia_dir(DataDir, NodeName) ->