关于游戏开发人员在代码中故意破坏安全性的问题

  • B
    BoomerCE
    看了《立体忍者》漏洞介绍,一个重要原因是,本来有个函数是很安全的,当要拷贝的数据的长度大于目标内存块长度的时候就会拒绝拷贝,但是游戏开发人员用额外的参数强制忽略了这个安全性检查,所以直接被用来溢出攻击…

    但是不是说主机游戏的一切内容都要通过第一方审核之后才能发布么,所以很多游戏连发个补丁都非常不容易…

    那么这种游戏开发人员故意造成的安全漏洞到底有没有人管?是谁来管?
  • w
    w酱
    游戏开发人员开发的时候可不一定觉得这是安全漏洞,没发现的自然没人管,任天堂审核也不会找制作者拿源码
  • r
    rhotov
    我想起个事,一开始是说9.2需要用到这个游戏才能进自制系统,但是目前GW利用的漏洞不需要游戏也可以进自制系统,是因为发现了新的漏洞还是?
  • B
    BoomerCE
    默认有安全性检查的函数被故意关闭安全性检查怎么说都是人为制造漏洞吧…

    第一方不检查源代码的话那这检查还有什么用呢…
  • B
    BoomerCE
    http://smealum.net/?p=517

    Gateway 是直接从第 3 步开始,后续是什么我还没看到文章介绍…
  • f
    fr0m
    要检查源码这工程太浩大了= =
  • c
    csy2994
    谁有空给你查源码啊
  • d
    dazzle
    你想太多,程序猿在赶工加班的压力之下什么事都干得出来
  • w
    w酱
    这是代码水平和思路问题,游戏审核又不会审核代码质量
    就像焚化部审游戏一样,谁管你游戏内是怎么进行数据交换的啊......
  • 黄昏之月
    多半不是故意的,某次查错后忘记改回来了
  • e
    endrollex
    好像作者说过,还有其他游戏能用这个漏洞
  • B
    BoomerCE
    既然不检查源代码…为什么给游戏出补丁是非常困难的事情呢?
  • B
    BoomerCE
    这个解释很有道理…不过就《立体忍者》来说,游戏中凡是用到这个函数的地方,大部分都关闭了安全性检查,可能不是一次查错的问题…
  • B
    BoomerCE
    看 5# 回复,9.3 系统之后继续利用这个漏洞的话,至少 Gateway 3DS 这样的利用程度一时半会可能是不行
  • w
    w酱
    补丁需要和主机运营方协商,推送的时间和补丁容量都要考虑,没多大困难,一周到一个月肯定能推送了。
    不过某些厂商就是不想打补丁还要到处找借口而已,比如闪轨1
  • B
    BoomerCE
    话说《微软纸牌精选》《微软麻将》《微软扫雷》这自家的东西推送个修复性补丁前后用去近一年…
  • p
    pf67
    lz一看就知道不是程序猿
  • d
    deadbeef
    lz一看就知道不是程序猿

    大多现有平台的所有可能出溢出问题的函数都提供安全检测机制 为毛还是没一套系统能完全躲过各种溢出漏洞?
    从最早的snprintf偷懒写成sprintf开始就都是一个道理
    故意忽略安全检测不是因为故意要引入BUG 而是根本不曾考虑过这里忽略安全检测会出BUG
    lz可知一套代码要做到健全的错误处理机制比起只是实现功能要难多少倍
  • n
    normalli
    第一方审查代码?别逗了,别人的代码那根本不是人能看的东西。
    —— fromS1 Nyan(NOKIA Lumia 920T)来自: WindowsPhone客户端
  • c
    cfeng123
    挺正常的,比如拿结构中最后一个元素是byData[0]来当作指针用的。后面的空间可能是new出来的
    这种情况,可能用内存拷贝时就会被对应的函数给制止掉,如果能屏蔽对应的报错(警告?),估计程序猿就会屏蔽了
  • a
    asdfg
    这个跟程序员本人的修为也有关系

    因为很多时候你要想办法绕过现存的限制,比如说内存不足啊或者寻址速度太慢啊之类的,这个时候你就要做一些非正常的事情
    但这么做的话有时候会有副作用,比如连安全保护一起给绕过去了
    但水平不够的程序员就意识不到

    或者另一些时候是,你根本不知道技术已经进步了还可以这么用,于是你就用了课堂里教你的古代写法,但那些写法之所以只是课堂教就是因为有各种副作用,之类

    至于去审核别人的源代码,别逗了,绝对不可能
    现在游戏大部分代码都要用在绘图上
    绘图代码在大多数情况下都是一大堆矩阵乘来乘去
    几万行代码里你要找到一个未知错误的指针,绝对没可能的吧…………