作弊检测
CBCTF 内置多维度自动作弊检测,管理员可查看、确认或驳回检测结果。
检测机制
1. token_magic — 设备指纹不匹配
同一账号的 JWT 中绑定的设备指纹(FingerprintJS 生成)与当前请求的设备指纹不一致,说明该账号在不同设备上使用,可能存在账号共享行为。
2. same_device — 多账号共用设备
多个不同账号(跨队伍)使用相同的设备指纹,说明可能是同一台设备用多个账号参赛。
3. same_web_ip — 多队伍共用 Web IP
多支队伍的 Web 请求(登录、提交等)来自同一公网 IP,可能存在同场地协作或账号共享。
4. same_victim_ip — 多队伍共用靶机访问 IP
多支队伍访问靶机的 IP 相同(capture 捕获),强烈暗示存在跨队协作。
5. wrong_flag — 跨队 flag 提交
队伍提交了属于另一支队伍的动态 flag,表明存在 flag 共享行为。
作弊记录字段
作弊状态
管理员处理流程
- 访问比赛的作弊记录列表(
admin:cheat:list) - 查看各条记录的
type、reason、相关队伍信息 - 结合 IP 历史(
admin:ip:search)和流量捕获进行综合判断 - 更新
type为cheater或pass(admin:cheat:update) - 在
comment中填写处置说明 - 标记
checked: true
重新运行检测
需要 admin:cheat:create 权限。对当前比赛所有数据重新运行全量作弊检测,适用于比赛结束后的全面审查。
批量删除
需要 admin:cheat:delete 权限。删除该比赛的所有作弊记录(谨慎使用)。
IP 白名单
在 config.yaml 中配置 IP 白名单,白名单内的 IP 不触发 IP 类作弊检测:
误报场景说明
以下场景可能导致误报,管理员应结合实际情况判断:
Tip
建议将竞赛现场的出口 IP 加入白名单,或在 Helm values 中配置 cbctf.cheat.ip.whitelist。
