Skip to content

Commit f281f1e

Browse files
fjlshekhirin
authored andcommitted
node: prevent exposing engine API on unauthenticated endpoint (ethereum#25939)
* node: prevent exposing engine API on unauthenticated endpoint * node: improve RPC setup
1 parent 67eb037 commit f281f1e

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

node/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ func (api *adminAPI) StartWS(host *string, port *int, allowedOrigins *string, ap
269269
if err := server.setListenAddr(*host, *port); err != nil {
270270
return false, err
271271
}
272-
openApis, _ := api.node.GetAPIs()
272+
openApis, _ := api.node.getAPIs()
273273
if err := server.enableWS(openApis, config); err != nil {
274274
return false, err
275275
}

node/node.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -392,15 +392,15 @@ func (n *Node) startRPC() error {
392392
}
393393
}
394394
var (
395-
servers []*httpServer
396-
open, all = n.GetAPIs()
395+
servers []*httpServer
396+
openAPIs, allAPIs = n.getAPIs()
397397
)
398398

399-
initHttp := func(server *httpServer, apis []rpc.API, port int) error {
399+
initHttp := func(server *httpServer, port int) error {
400400
if err := server.setListenAddr(n.config.HTTPHost, port); err != nil {
401401
return err
402402
}
403-
if err := server.enableRPC(apis, httpConfig{
403+
if err := server.enableRPC(openAPIs, httpConfig{
404404
CorsAllowedOrigins: n.config.HTTPCors,
405405
Vhosts: n.config.HTTPVirtualHosts,
406406
Modules: n.config.HTTPModules,
@@ -412,12 +412,12 @@ func (n *Node) startRPC() error {
412412
return nil
413413
}
414414

415-
initWS := func(apis []rpc.API, port int) error {
415+
initWS := func(port int) error {
416416
server := n.wsServerForPort(port, false)
417417
if err := server.setListenAddr(n.config.WSHost, port); err != nil {
418418
return err
419419
}
420-
if err := server.enableWS(n.rpcAPIs, wsConfig{
420+
if err := server.enableWS(openAPIs, wsConfig{
421421
Modules: n.config.WSModules,
422422
Origins: n.config.WSOrigins,
423423
prefix: n.config.WSPathPrefix,
@@ -428,13 +428,13 @@ func (n *Node) startRPC() error {
428428
return nil
429429
}
430430

431-
initAuth := func(apis []rpc.API, port int, secret []byte) error {
431+
initAuth := func(port int, secret []byte) error {
432432
// Enable auth via HTTP
433433
server := n.httpAuth
434434
if err := server.setListenAddr(n.config.AuthAddr, port); err != nil {
435435
return err
436436
}
437-
if err := server.enableRPC(apis, httpConfig{
437+
if err := server.enableRPC(allAPIs, httpConfig{
438438
CorsAllowedOrigins: DefaultAuthCors,
439439
Vhosts: n.config.AuthVirtualHosts,
440440
Modules: DefaultAuthModules,
@@ -449,7 +449,7 @@ func (n *Node) startRPC() error {
449449
if err := server.setListenAddr(n.config.AuthAddr, port); err != nil {
450450
return err
451451
}
452-
if err := server.enableWS(apis, wsConfig{
452+
if err := server.enableWS(allAPIs, wsConfig{
453453
Modules: DefaultAuthModules,
454454
Origins: DefaultAuthOrigins,
455455
prefix: DefaultAuthPrefix,
@@ -464,24 +464,24 @@ func (n *Node) startRPC() error {
464464
// Set up HTTP.
465465
if n.config.HTTPHost != "" {
466466
// Configure legacy unauthenticated HTTP.
467-
if err := initHttp(n.http, open, n.config.HTTPPort); err != nil {
467+
if err := initHttp(n.http, n.config.HTTPPort); err != nil {
468468
return err
469469
}
470470
}
471471
// Configure WebSocket.
472472
if n.config.WSHost != "" {
473473
// legacy unauthenticated
474-
if err := initWS(open, n.config.WSPort); err != nil {
474+
if err := initWS(n.config.WSPort); err != nil {
475475
return err
476476
}
477477
}
478478
// Configure authenticated API
479-
if len(open) != len(all) {
479+
if len(openAPIs) != len(allAPIs) {
480480
jwtSecret, err := n.obtainJWTSecret(n.config.JWTSecret)
481481
if err != nil {
482482
return err
483483
}
484-
if err := initAuth(all, n.config.AuthPort, jwtSecret); err != nil {
484+
if err := initAuth(n.config.AuthPort, jwtSecret); err != nil {
485485
return err
486486
}
487487
}
@@ -570,9 +570,9 @@ func (n *Node) RegisterAPIs(apis []rpc.API) {
570570
n.rpcAPIs = append(n.rpcAPIs, apis...)
571571
}
572572

573-
// GetAPIs return two sets of APIs, both the ones that do not require
573+
// getAPIs return two sets of APIs, both the ones that do not require
574574
// authentication, and the complete set
575-
func (n *Node) GetAPIs() (unauthenticated, all []rpc.API) {
575+
func (n *Node) getAPIs() (unauthenticated, all []rpc.API) {
576576
for _, api := range n.rpcAPIs {
577577
if !api.Authenticated {
578578
unauthenticated = append(unauthenticated, api)

0 commit comments

Comments
 (0)