首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

肖尔

摘要

1980 the first star back in old unix your password hash just sat in /etc/passwd , right next to your username. in a file everyone could read. in 1980 bill joy put a * there for an account called daemo...

the musl crypt NULL password hash just you unix your
2026-11-05 1 阅读 约9分钟阅读 josemrb
分享:
字号:
1980 年,旧 unix 中的第一个星星你的密码哈希就位于 /etc/passwd 中,就在你的用户名旁边。在每个人都可以阅读的文件中。 1980 年,Bill Joy 在一个名为 daemon 的帐户中添加了 * 。没有人应该以它的身份登录。 * 不是哈希,因此没有密码可以匹配它。 unix 今天仍然这样做 3bsd · /etc/passwd · 1980 地址 github.com/dspinellis/unix-history-repo/blob/BSD-3/etc/passwd 下一个字段是真实姓名。他在 1990 年代写了“魔鬼本人”,sshd 如何检查你的密码,所以现在哈希值位于 /etc/shadow 中,看起来像 $6$abc$k2P9... 。 $6$ 表示 sha512,abc 是盐,其余的是您输入密码的实际哈希值,sshd 使用相同的盐对其进行哈希处理并检查结果是否相同。相同=你在。就是这样,如果该字段只是 * ?没有什么可以匹配的。输入您想要的任何内容,它永远不会让您在 20 世纪 90 年代再看到一条细则规则。如果 crypt() 无法完成其工作,则返回 NULL。就像如果盐要求系统没有的某种算法一样,没有什么可以计算,所以你得到 NULL 而不是散列单个 unix 规范 · crypt() · 1997 地址 pubs.opengroup.org/onlinepubs/7908799/xsh/crypt.html 非常清楚。但很多程序从不检查 NULL。他们只是将 crypt() 返回的内容与存储的字段进行比较,命中 NULL,然后崩溃 2012 crypt 停止说 NULL,所以 musl(alpine 下的 libc)一切正常,crypt() 只是不再返回 NULL。如果失败,则返回单个字符。该字符永远无法与真实密码匹配,因此程序不会崩溃,他们只是看到错误的密码,现在猜测他们为“?”选择了哪个字符,是的。星星。再次。 musl · b3c4cc12 · 2012 年 8 月 地址 git.musl-libc.org/cgit/musl/commit/?id=b3c4cc12 “据报道”。 musl · b3c4cc12 · diff 地址 git.musl-libc.org/cgit/musl/commit/?id=b3c4cc12 “不应该发生”消失了,NULL 消失了,“*”在 2012 年三周后,然后 musl 添加了 sha512 密码。问题是,密码越长,sha512crypt 的速度就越慢,因此有人可以发送一个巨大的密码,并使您的服务器长时间繁忙。所以 musl 只是将其限制为 256 字节,并拒绝任何更长的内容 musl · 88bf5a8a · aug 29 2012 地址 git.musl-libc.org/cgit/musl/commit/?id=88bf5a8a 在“*”提交后二十天顺便说一句 musl · crypt_sha512.c @ 88bf5a8a 地址git.musl-libc.org/cgit/musl/tree/src/misc/crypt_sha512.c?id=88bf5a8a 所以过去的 256 字节 crypt 失败。当 crypt 失败时......它会显示“*”。 musl · crypt_sha512.c 地址 git.musl-libc.org/cgit/musl/tree/src/crypt/crypt_sha512.c 一直在评论中 2016 sshd 借用了 bob 的盐 CVE-2016-6210。向 sshd 询问一个不存在的用户,它立即拒绝,因为没有任何内容可以进行哈希处理。真正的用户需要更长的时间。所以只要计时,你就知道谁存在这个修复有点有趣。没有真正的哈希值要检查? sshd 无论如何都会获取其他帐户的盐并散列您的密码,只是为了浪费相同的时间。仍然是不,只是速度较慢 no openssh-commits · jul 2016 地址lists.mindrot.org/pipermail/openssh-commits/2016-July/005428.html“针对无效用户”。而且,事实证明,真正的用户带有 * 。 2019 → 2022 修复 2019。结果发现 alpine 的 docker 镜像没有 root 密码。根本不。 CVE-2019-5021。 alpine 通过锁定 root 来修复它!但没有帕姆,!还会杀死 ssh 密钥。和云图像通过密钥登录。 2022. alpine 3.16 将根目录切换为 * 。仍然锁定,钥匙再次工作 alpine aports · fbe926af · 于 2022 年 3.16 发货 地址 gitlab.alpinelinux.org/alpine/aports/-/commit/fbe926af.patch 旁白:没有。 2016 → 2026 安静的十年为什么没人注意到?好吧,也许有人这么做了。也许有人在密码提示中粘贴了错误的内容,半条松弛消息或整个 ssh 密钥,然后它就让他们进来了。你从来没有在密码提示中粘贴错误的内容?惊人的。未设置密码的新盒子不受影响。阴影中的 * 需要先尝试一次错误。 openssh 在 openbsd 和 glibc 上进行测试,musl 不测试 sshd,大多数发行版都通过 pam,它甚至从不调用 crypt 来表示 * 。据任何人所知,没有人注意到。据任何人所知。有些人确实很接近 libc-alpha · debian #714219 · 2013 地址 sourceware.org/legacy-ml/libc-alpha/2013-07/msg00046.html debian 开发人员要求 glibc 复制 musl 的 "*" 。六年后,debian 转向 libxcrypt,它显示“*0”,并关闭了该错误。相差一个字符。 musl 邮件列表 · 2024 年 12 月 地址 openwall.com/lists/musl/2024/12/31/2 该帖子是关于 busybox passwd 破解 257 个字符的密码的。相同的“*”,相同的限制。没有人说“sshd” openssh-commits · 2026 年 10 月 30 日 地址lists.mindrot.org/pipermail/openssh-commits/2026-October/013271.html 安全审查修复了 pick_salt() 。该错误位于其下方四行。四天前我找到了它。 2026 年 11 月,我是如何遇到它的,我正在摆弄 openssh,主要是它与 libc 对话的无聊部分,比如密码。人们d
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱