Monday, January 7, 2019

[08] 针对用户名/密码的比较使用了非大小写敏感函数

https://curl.haxx.se/docs/CVE-2016-8616.html

重新使用连接时,curl对用户名和密码与现有连接进行不区分大小写的比较。这会导致猜测密码的复杂性下降许多。

在对代码进行重新抽象化时,我发现类似的问题通常出现在开发者封装了一个不区分大小写的比较函数,而名称却没有表示清楚。除非特别归纳测试用例,这类问题很难通过普通自动化测试发现。

-        if(!strequal(needle->user, check->user) ||
-           !strequal(needle->passwd, check->passwd)) {
+        if(strcmp(needle->user, check->user) ||
+           strcmp(needle->passwd, check->passwd)) {