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

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


当前回答

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);
        ......
    }
}

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

其他回答

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

我的任务是发现一个用于报告的ODBC DSN,其中密码与用户匹配,并且用户属于数据库服务器管理组。

因此,任何具有此ODBC DSN的PC都可以使用任何ODBC兼容工具通过报表用户读取/更改所有数据(甚至更糟)。不需要授权,而且身份验证非常弱。

我在一家公立医院工作,这个软件几乎安装在该州每家政府医院的每一台电脑上,数据库服务器包含各种敏感的医疗数据(完整的患者详细信息、实验室测试结果等)。

最糟糕的是,我们悄无声息地报告了安全漏洞,然后正式报告,但在我继续在那里工作的2年里,它仍然没有修复,那已经是5年前的事了。

社会工程:

<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.

从bash.org

当我还在上中学的时候,县里的学校系统设置了所有的“安全”软件来防止孩子们接触部分互联网,或者改变配置设置和安装垃圾软件。除了该软件非常边缘的事实(一些shell修改可以通过在文件>保存框中单击鼠标右键绕过),他们还设置了教师的密码来教学。

是啊,真的很安全。

我曾经做过一份工作,其中有一个用Java代码编写的安全层,用于检查用户是否有权编辑DB表列。这是函数的样子:

public boolean canEdit(User user, DBColumn column) {
    if(true) {
        return true;
    } else {
        return false;
    }
}