【发布时间】:2018-03-18 22:39:46
【问题描述】:
我在 16.04 Linux 机器上为 PostgreSQL (v9.6) 安装了 timescaledb 扩展 (v.5.0) 并观察到 Postgres 进程占用 100% CPU:
这是top 命令的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19885 postgres 20 0 192684 3916 1420 S 98.3 0.1 5689:04 x3606027128
我运行查询 SELECT pid, datname, usename, query FROM pg_stat_activity 并找到两个奇怪的查询
pid datname username query
19882 postgres postgres select Fun013301 ('./x3606027128 &')
19901 postgres postgres select Fun013301 ('./ps3597605779 &')
函数 Fun013301 在 postgres 数据库中不存在。我不知道./x3606027128 命令是什么!?
【问题讨论】:
-
我认为您的问题会在dba.stackexchange.com 得到更多关注;)。
-
你应该打开一个问题 - 但我看到你已经这样做了。
-
它可能是一种恶意软件,它以某种方式潜入您的 postgres 安装,因为它隐藏在生成的名称下并在后台执行占用 CPU 的程序。我会检查您最近安装任何东西的来源,而不仅仅是 timescaledb。
-
看起来使用 SQL 注入来保存恶意软件文件
x3606027128,创建了一个函数Fun013301,该函数使用 shell 运行来自参数的命令,并运行该函数来启动恶意软件。我怀疑对使用数据库集群的应用程序的攻击。您可能使用超级用户帐户 (postgres) 连接到数据库,这是一种非常糟糕的做法,并且会使此类攻击更容易 - 您应该为该帐户创建一个特殊的用户帐户和专用数据库。