Hacker News | 📄 原文链接 | 2026-11-06 收录

SSH 的 256 字节漏洞:musl 上的 OpenSSH 十年空门

来源:sshhole.com — 2026-11-05

📋 概述

作者把一条 2016 年就存在于 musl 的边界条件翻了出来:在 Alpine、OpenWrt、Buildroot 以及大量 Docker 基础镜像里,密码字段是 * 的账号(root、只允许密钥登录的部署用户、LDAP 用户)本来永不可能用密码登录,实际却会接受任何长度超过 256 字节的密码。链条不长:2012 年 musl 为了不让程序在 crypt() 返回 NULL 时崩溃,改成失败时返回单个星号;二十天后又因为 sha512crypt 越算越慢,把输入截断到 256 字节。于是「超长密码被截断 → 比对前的哈希变成星号 → 与存储的星号相等」这条路径就成立了。文章按年份把 1980 年的 /etc/passwd、1997 年 crypt() 的 NULL 约定、2012 年的两次提交、2019 年的补丁逐段串起来,是一次完整的软件考古。

🔑 核心要点

💡 金句

accounts that should never take a password at all (root, your key-only deploy user, ldap users, the default user on alpine's aws and azure images) take any password longer than 256 characters.
← 返回 Hacker News 首页