你见过的最糟糕的安全漏洞是什么?为了保护罪犯,限制细节可能是个好主意。

不管怎样,这里有一个关于如果你发现了安全漏洞该怎么办的问题,还有一个关于如果公司(似乎)没有回应该怎么办的问题。


当前回答

对我来说,最糟糕的,最可怕的,最危险的,犯罪的疏忽,但在彻底破坏整个系统的安全方面,奇怪的优雅总是来自the Daily WTF:

客户端PHP

function saveform()
{
  var firstName = escapeSql(mainForm.elements.txtFirstName.value);
  var lastName = escapeSql(mainForm.elements.txtLastName.value);
  /* ... */
  var offerCode = escapeSql(mainForm.elements.txtOfferCode.value);

  var code =
  '  $cn = mssql_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD)           ' +
  '          or die("ERROR: Cannot Connect to $DB_SERVER");                ' +
  '  $db = mssql_select_db($DB_NAME, $cn);                                 ' +
  '                                                                        ' +
  '  if (mssql_query("SELECT 1 FROM APPS WHERE SSN=\''+ssn+'\'", $cn)) ' +
  '  { $ins = false; }                                                     ' +
  '  else                                                                  ' +
  '  { $ins = true; }                                                      ' +
  '                                                                        ' +
  '  if ($ins) {                                                           ' +
  '    $sql = "INSERT INTO APPS (FIRSTNM, LASTNM, ..., OFFERCD) VALUES ("; ' +
  '    $sql+= "\''+firstName+'\',";                                        ' +
  '    $sql+= "\''+lastName+'\',";                                         ' +
  '    $sql+= "\''+offerCode+'\')";                                        ' +
  '                                                                        ' +
  '  /* ... */                                                             ' +
  '                                                                        ' +
  '  mssql_query($sql, $cn);                                               ' +
  '  mssql_close($cn);                                                     ';

  execPhp(code);
}

就盯着它看一分钟。想想你所能做的一切。女士们先生们,这是洛夫克拉夫特的杰作。

其他回答

作为对所有读者的提醒,无论是否知情:我刚刚从一个专业那里买了一本800页的2008年版权的关于这个主题的书——在序言中,作者做了一个“嘿,等一下……”,在序言中详细指出,不止一个拥有丰富证书和现场经验的安全专业人士,嗯哼,被赋予了意义,……因为他们看到了一些看起来相对新手的入侵。

如果把它当作看似无害的,那么由于未经授权的活动,就会引发正式诉讼。作为一个专业人士,他们中的一些人被毁了。

我注意到的最后一次入侵涉及一家主要的银行服务,该服务已经存在了很长时间,以至于市民很少听到他们的品牌名称。整个商店的所有数据都是未加密的——但是,对于不知情的人来说,奇怪的是,这家银行实体已经成为了一个“清算所”(我不知道统计数据,但它超过了一半),为不止一个零售品牌的信贷提供商处理信用卡交易。

入侵者只是在空投处放置了一个(装置)。(这是电信公司从世界各地进入的线路)没有花哨或复杂的交通监控工具,只有基本的。我建议每个人都监控今年2月以来的所有信用活动:所获得的是与当前活跃和有效信用账户上的有效名称相匹配的有效cc#。

空前的。

像往常一样,它是一个没有安全专业知识的人从管理权威的位置上运行一个商店。工程术语是“失效模式分析”……

我们有一个旧的计算机集群,在我工作的一个实验室里没有运行。几个本科生认为,让它运行起来会很有趣,这样他们就可以学习一点并行计算了。他们让它运行起来,结果证明它非常有用。

One day I came in and was checking out the stats...It was running at 100%. Now this was a 24 node cluster and there were only 3 of us that ever used it so it was a little strange that it was running at this load. I started playing with it, trying to figure out what was loading it...turned out someone had gained access and was using it as their own little porn server and spammer. I asked the undergrads what kind of security they put on it, they looked at me and said "Security? We didn't think it would need any."

我给它加了个密码,就这样。把它用作色情服务器的人原来是一个本科生的朋友。

当关键IT员工离开公司时,不更改管理密码。

public class AuthenticationServlet extends HttpServlet
{
    private String userName;
    private String password;

    protected doPost(HttpServletRequest req, HttpServletResponse resp)
           throws ServletException, IOException
    {
        userName = request.getParameter("userName");
        password = request.getParameter("password");
        authenticateUser(userName,password);
        ......
    }
}

显然,正如有人在自动化负载测试中发现的那样,单例和缺乏同步会导致安全问题。

意外地将数据库根密码提交给源代码控制。这很糟糕,因为它是Sourceforge上的源代码控制。

不用说,密码很快就改了。