Files
trufflehog/pkg/analyzer/analyzers/mysql/scopes.go
MiccahandJoe Leon 2424683923 Analyze (#3099)
* Add POC analyze sub-command

* Address lint errors

* [chore] Embed scopes at compile time

* [chore] Move subcommand check up to prevent printing metrics

* added http logging to most analyzers

* Use custom RoundTripper with default http.Client

* Create framework of interfaces, structs, and protos

* Merge main

* Add AnalysisInfo to detectors.Result

* Hide analyze subcommand

* Update gen_proto.sh

* Update protos

* Make protos

* Update analyzer data types

* Rename argument to credentialInfo

---------

Co-authored-by: Joe Leon <[email protected]>
2024-07-25 12:06:05 -07:00

100 lines
5.4 KiB
Go

package mysql
type PrivTypes struct {
Global bool
Database bool
Table bool
Column bool
Routine bool
Proxy bool
Dynamic bool
}
// https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-global-privileges:~:text=%27localhost%27%3B-,Privileges%20Supported%20by%20MySQL,-The%20following%20tables
var SCOPES = map[string]PrivTypes{
// Static privs
"ALTER": {Global: true, Database: true, Table: true},
"ALTER ROUTINE": {Global: true, Database: true, Routine: true},
"CREATE": {Global: true, Database: true, Table: true},
"CREATE ROLE": {Global: true},
"CREATE ROUTINE": {Global: true, Database: true},
"CREATE TABLESPACE": {Global: true},
"CREATE TEMPORARY TABLES": {Global: true, Database: true},
"CREATE USER": {Global: true},
"CREATE VIEW": {Global: true, Database: true, Table: true},
"DELETE": {Global: true, Database: true, Table: true},
"DROP": {Global: true, Database: true, Table: true},
"DROP ROLE": {Global: true},
"EVENT": {Global: true, Database: true},
"EXECUTE": {Global: true, Database: true, Routine: true},
"FILE": {Global: true},
"GRANT OPTION": {Global: true, Database: true, Table: true, Routine: true, Proxy: true}, // Not granted on ALL PRIVILEGES
"INDEX": {Global: true, Database: true, Table: true},
"INSERT": {Global: true, Database: true, Table: true, Column: true},
"LOCK TABLES": {Global: true, Database: true},
"PROCESS": {Global: true},
"PROXY": {Proxy: true}, // Not granted on ALL PRIVILEGES
"REFERENCES": {Global: true, Database: true, Table: true, Column: true},
"RELOAD": {Global: true},
"REPLICATION CLIENT": {Global: true},
"REPLICATION SLAVE": {Global: true},
"SELECT": {Global: true, Database: true, Table: true, Column: true},
"SHOW DATABASES": {Global: true},
"SHOW VIEW": {Global: true, Database: true, Table: true},
"SHUTDOWN": {Global: true},
"SUPER": {Global: true},
"TRIGGER": {Global: true, Database: true, Table: true},
"UPDATE": {Global: true, Database: true, Table: true, Column: true},
// This is a special case, it's not a real privilege
"USAGE": {Global: true, Database: true, Table: true, Column: true, Routine: true},
// Dynamic privs
"ALLOW_NONEXISTENT_DEFINER": {Global: true, Dynamic: true},
"APPLICATION_PASSWORD_ADMIN": {Global: true, Dynamic: true},
"AUDIT_ABORT_EXEMPT": {Global: true, Dynamic: true},
"AUDIT_ADMIN": {Global: true, Dynamic: true},
"AUTHENTICATION_POLICY_ADMIN": {Global: true, Dynamic: true},
"BACKUP_ADMIN": {Global: true, Dynamic: true},
"BINLOG_ADMIN": {Global: true, Dynamic: true},
"BINLOG_ENCRYPTION_ADMIN": {Global: true, Dynamic: true},
"CLONE_ADMIN": {Global: true, Dynamic: true},
"CONNECTION_ADMIN": {Global: true, Dynamic: true},
"ENCRYPTION_KEY_ADMIN": {Global: true, Dynamic: true},
"FIREWALL_ADMIN": {Global: true, Dynamic: true},
"FIREWALL_EXEMPT": {Global: true, Dynamic: true},
"FIREWALL_USER": {Global: true, Dynamic: true},
"FLUSH_OPTIMIZER_COSTS": {Global: true, Dynamic: true},
"FLUSH_STATUS": {Global: true, Dynamic: true},
"FLUSH_TABLES": {Global: true, Dynamic: true},
"FLUSH_USER_RESOURCES": {Global: true, Dynamic: true},
"GROUP_REPLICATION_ADMIN": {Global: true, Dynamic: true},
"GROUP_REPLICATION_STREAM": {Global: true, Dynamic: true},
"INNODB_REDO_LOG_ARCHIVE": {Global: true, Dynamic: true},
"INNODB_REDO_LOG_ENABLE": {Global: true, Dynamic: true},
"MASKING_DICTIONARIES_ADMIN": {Global: true, Dynamic: true},
"NDB_STORED_USER": {Global: true, Dynamic: true},
"PASSWORDLESS_USER_ADMIN": {Global: true, Dynamic: true},
"PERSIST_RO_VARIABLES_ADMIN": {Global: true, Dynamic: true},
"REPLICATION_APPLIER": {Global: true, Dynamic: true},
"REPLICATION_SLAVE_ADMIN": {Global: true, Dynamic: true},
"RESOURCE_GROUP_ADMIN": {Global: true, Dynamic: true},
"RESOURCE_GROUP_USER": {Global: true, Dynamic: true},
"ROLE_ADMIN": {Global: true, Dynamic: true},
"SENSITIVE_VARIABLES_OBSERVER": {Global: true, Dynamic: true},
"SERVICE_CONNECTION_ADMIN": {Global: true, Dynamic: true},
"SESSION_VARIABLES_ADMIN": {Global: true, Dynamic: true},
"SET_ANY_DEFINER": {Global: true, Dynamic: true},
"SET_USER_ID": {Global: true, Dynamic: true},
"SHOW_ROUTINE": {Global: true, Dynamic: true},
"SKIP_QUERY_REWRITE": {Global: true, Dynamic: true},
"SYSTEM_USER": {Global: true, Dynamic: true},
"SYSTEM_VARIABLES_ADMIN": {Global: true, Dynamic: true},
"TABLE_ENCRYPTION_ADMIN": {Global: true, Dynamic: true},
"TELEMETRY_LOG_ADMIN": {Global: true, Dynamic: true},
"TP_CONNECTION_ADMIN": {Global: true, Dynamic: true},
"TRANSACTION_GTID_TAG": {Global: true, Dynamic: true},
"VERSION_TOKEN_ADMIN": {Global: true, Dynamic: true},
"XA_RECOVER_ADMIN": {Global: true, Dynamic: true},
}