Follow

睡得早,醒得早=-=
继续昨晚的探究。

一、账号重复问题

在殆站上发现pawoo_support和pixiv这俩pawoo的官方号也被镜像了,所以推测他们把当时库内所有来自pawoo的账号都执行了“镜像化”操作。

如果殆站在“镜像化”前有殆站本地账号叫smallsun,但pawoo中也有个用户叫smallsun,执行“镜像化”操作会有什么后果呢。

* smallsun是我可爱的小机器人,目前休假中zzz.

在测试站查询

id | username | domain
----+----------+---------
24 | smallsun | b612.me
63 | smallsun |
(2 rows)

可见测试站有个远程smallsun用户,本地也有个smallsun用户。

执行“镜像化”语句:
update accounts set domain=null where domain='b612.me' and username='smallsun';

出现报错:
ERROR: duplicate key value violates unique constraint "index_accounts_on_username_and_domain_lower"
DETAIL: Key (lower(username::text), COALESCE(lower(domain::text), ''::text))=(smallsun, ) already exists.

意思是本地已经有smallsun用户了,由于唯一索引限制,不能够把b612.me的smallsun用户”镜像化“

但是!这个唯一索引限制在6月21日前有bug,在6月21日之前执行上面的update语句是能够“镜像”成功的。

github.com/tootsuite/mastodon/

这里我们手动drop掉这个索引,把有bug的索引
加回去:
drop index index_accounts_on_username_and_domain_lower;

CREATE UNIQUE INDEX index_accounts_on_username_and_domain_lower on accounts (lower((username)::text), lower((domain)::text)) ;

然后执行update语句,测试站本地就有两个smallsun账号了

id | username | domain
----+----------+---------
24 | smallsun |
63 | smallsun |
(2 rows)

此时刷新testodon.md.tn/@smallsun的界面,显示的是镜像用户(id=24)的页面。
登录smallsun(id=63),只会显示本地smallsun
自己的嘟文,不会显示镜像账户的嘟文。

再把镜像用户的域名改回原来的b612.me,刷新testodon.md.tn/@smallsun,又会显示本地smallsun(id=63)的界面。

总结:如果你的pawoo账号用户名先前在殆站已被人使用了,你也可能被镜像了,但是只不过由于重名页面上显示的是殆站重名用户的页面。

二、镜像账户已被封禁问题及无法删除账户问题

如图一,殆知阁昨天发的微博中提到,被镜像的账户早已被管理员删了,但是嘟文没删。

实际上,由于只是批量把远程账户”镜像化“为本地账户,殆站本地数据库user表中并没有这些远程账户的登录信息(email,hash后的密码啊之类的),所以从后台上看,这些镜像化账户本来就是已删除状态,根本不是管理员先前手动删除的。(测试站界面见图二)

因为是已删除状态,所以管理界面上不会有封禁这个按钮(这也就是他说的删不掉账户),故殆知阁只是点进嘟文把嘟文都删了,并没有从后台删除账户。

殆知阁可以查一下那些是本地账户但是没有登录信息的账户,基本上便都是镜像号了。

后台执行

tootctl accounts delete 用户名

这个指令能够把账户变为彻底封禁状态,但是可能有两个问题。

1是执行的过程中会报错, Private key is needed,因为殆知阁库里并没有远程用户私钥(无关紧要)(除非重新生成)
2.是如果有同名用户,可能会把殆站同名用户给封掉。

三、李鬼问题

有嘟友发现有人蓄意冒充镜像用户。
简单的做法就是直接向数据库插入嘟文数据,这样不用伪造登录信息。
麻烦一点的做法就是伪造登录信息到user表

我在测试站伪造了自己镜像账号的登录信息并成功登录,并执行
tootctl accounts rotate --all
生成新密钥

如图三,便能够登录成功甚至还能和原账号互动。

此时李鬼等登录者能看到你之前发送到测试站的所有非公开嘟文。

发送一条冒充嘟文,但这条嘟文的实际地址会指向测试站的地址(如图四)而不是像镜像过来的嘟文那样指向源站地址,这一点,如果有嘟友认为有人冒充,可以确认下。当然嘟文发布时间和嘟文实际地址都也是能在数据库里面改掉的。

综上

1.殆站很有可能是直接把所有pawoo.net的账户都置为本地账户。
2.这些账户默认都是已删除状态。
3.可能在殆站会有重名账户出现。
4.如果殆站管理员对某个嘟友”有兴趣“
是可以伪造登录信息进行冒充的。

5.如果有殆站账户,可以在殆站搜索被镜像的原账户,比如@ pixiv这些管理号,看在殆站搜到的这些原账户的嘟文和镜像账户的嘟文是否一致。

如果在殆站搜到的原账户只有最近的嘟文,比如18、19年的嘟文都看不到,那么殆站可能就是直接把pawoo.net的账户都置为本地账户。

如果在殆站搜到的原账户和镜像账户一样多,18、19年的旧嘟文也能看到,那就更恐怖了,说明殆站是把pawoo.net的账户copy了一遍后作了处理后重新写入数据库的。

6.还可以验证下镜像用户有没有被修改公钥,不修改公钥镜像用户发的嘟文只能殆站自身看到了。

7.反对因为pawoo被墙所以殆站建了镜像的说法,这种账户镜像和我们熟知的“镜像”分明是两回事。即便不镜像殆站上也能通过搜索@用户名 @pawoo.net看到同样的嘟文信息。

@star 一个确认的镜像号是:
mao.mastodonhub.com/@manul

据说转嘟copy了,但回复是李鬼。

@star 目前看来,这个镜像号所有地址都指向猫站本身……这一个镜像号可能单纯就是有人先占了用户名?

@star 我看了下那条“兔狲真君和兔狲门下”,人家说的其实是微博的“每日兔狲……搞不好是单纯重名也有可能。

@flyover manul这个单词有重复也是很有可能的。
殆站这个manul账号特征上不像其他的镜像号。

@star pawoo.net/@manul/1053653271228
看了下pawoo的说明,似乎同时被抓了镜像号&之前有重名用户……

@flyover 大概是这样的
数据库中重名用户id比镜像号id小,所以个人界面优先显示的是重名用户的嘟文。

别人的转发中转发的是pawoo.net的真身。

但是因为他们把pawoo.net改为本地账户,所以重名号和镜像号username重复了。

故点进去这个同样的username就显示重名号的界面了

@flyover 这个帐号可能是没有搞伪造登录的。

@star 还有个问题,这样的账号在about页上或者管理页面上会计数吗?

@mashiro 已删除状态都不会的,但是会占着用户名

@mashiro 可以先用sql筛一遍所有的元pawoo账户再用这个删。

@mashiro 想到这样的话,重名用户可能会先被删掉吧。还是要从数据库层面删id?

@star 对的,应该得用ID删

其实mastodon之前就有类似duplicate问题的报告 github.com/tootsuite/mastodon/

Sign in to participate in the conversation
B612星球 - Asteroid B612

B612是小王子的小星球(建站三周年快乐)
因为很小,所以容纳不了多少人。
这里是温馨的树洞,欢迎来到这里吐槽、记录生活。
本站用户域名为b612.me 出于安全原因考虑,访问本站时请使用b612.icu(使用app时也请使用这个域名)

今天你能看到多少次日落呢?


本站活跃人数很少(冷清清~),不大适合追求社交与关注的朋友,注册前请三思!