Daily Tech Briefing
AI 科技速览

每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。

AI 快讯
Hacker News · 2026/8/4 11:01:37
Keyv and friends compromised in active Shai-Hulud supply chain attack

Keyv and friends compromised in active Shai-Hulud supply chain attack

AI 中文解读
知名npm包Keyv及其周边生态正遭受一场代号“Shai-Hulud”的供应链攻击,恶意版本已被悄悄发布,开发者一旦安装就可能中招。 供应链攻击通俗讲就是“下毒”——攻击者不直接黑掉你的电脑,而是混进程序员常用的“零件库”(npm包),把恶意代码伪装成正常更新,让无数项目在不知情时吞下毒药。Keyv是个流行的缓存工具,很多网站和软件都在用它,就像大楼里统一的水管,水管被污染,所有住户都会遭殃。这次被攻破的恶意版本能窃取环境变量、植入后门,甚至可能盗取登录凭证。 对普通人来说,如果你的常用应用后台用了这套“水管”,你的账号信息、聊天记录可能面临泄露风险。短期内建议关注相关应用是否提示更新版本。对开发者而言,务必立即检查是否安装了受影响版本,及时升级到安全补丁,并开启双重验证,避免恶意包混入自己的项目里。这也是给整个开源社区敲响警钟:依赖越多,链上的每一环都马虎不得。
.u-button-primary { overflow: hidden; position: relative; /* Change to relative for containing pseudo-elements */ z-index: 0; background-color: #6551f3; box-shadow: 0px 6px 12px 0px rgba(255, 255, 255, 0.25) inset; } .u-button-primary::before { content: ''; position: absolute; top: 50%; width: 100rem; height: 100rem; left: 50%; background-repeat: no-repeat; background-position: 0 0; background-color: #6551f3; box-shadow: 0px 6px 12px 0px rgba(255, 255, 255, 0.25) inset; background-image: conic-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 1), rgba(255, 255, 255, 0) 25%); filter: blur(0.5px); z-index: -1; transform: translate(-50%, -50%) rotate(0deg); animation: rotate 4s linear infinite; } .u-button-primary::after { content: ''; position: absolute; left: 0.0625rem; top: 0.0625rem; box-shadow: 0px 6px 12px 0px rgba(255, 255, 255, 0.25) inset; width: calc(100% - 0.125rem); height: calc(100% - 0.125rem); border-radius: 10rem; background: inherit; /* Use the same background color as the main box */ transition: box-shadow 0.3s ease; } @media only screen and (max-width: 991px) { body:has(.navbar_dropdown_list.w--open) { overflow: hidden; } } @media only screen and (min-width: 992px) { .u-button-primary.is--xsmaller.no-wrap:hover .u-button-text.is--hover { transform: translateY(0.5rem); /* Corrected: Removed the semi-colon inside translateY */ } /* Pseudo elements for gradient border effect */ .navbar_menu_wrapper::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); top: -0.0625rem; /* -1/16rem */ left: -0.0625rem; /* -1/16rem */ right: -0.0625rem; /* -1/16rem */ bottom: -0.0625rem; /* -1/16rem */ z-index: -1; /* Place behind the wrapper */ border-radius: inherit; /* Match border radius, if any */ } .navbar_menu_wrapper::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #010024; border-radius: inherit; /* Match border radius, if any */ } .navbar_wrap.w-variant-f1a1d9be-daeb-2f88-2f63-a7700b93f44f .navbar_menu_wrapper::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #0b0b13; border-radius: inherit; /* Match border radius, if any */ } } .navbar_list_link:hover { color: #a397f8; } .navbar_list_link:hover .navbar_hover_arrow { transform: translateX(1.25rem); opacity: 1; } .navbar_list_link.is--soon:hover .navbar_hover_arrow { opacity: 0; } .navbar_link_item:hover { color: #a397f8; } .navbar_dropdown:has(.navbar_dropdown_list.w--open) .navbar_dropdown_icon { transform: rotate(180deg); } .navbar_dropdown:has(.navbar_dropdown_list.w--open) .navbar_dropdown_toggle { color: #a397f8; } /* Pseudo elements for gradient border effect */ .navbar_dropdown_list-inner::before, .navbar_menu_button::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); top: -0.0625rem; /* -1/16rem */ left: -0.0625rem; /* -1/16rem */ right: -0.0625rem; /* -1/16rem */ bottom: -0.0625rem; /* -1/16rem */ z-index: -1; /* Place behind the wrapper */ border-radius: inherit; /* Match border radius, if any */ } .navbar_dropdown_list-inner::after, .navbar_menu_button::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #010024; border-radius: inherit; /* Match border radius, if any */ } .navbar_wrap.w-
分享
阅读原文