Daily Tech Briefing
AI 科技速览
每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。
Hacker News · 2026/8/4 11:01:37

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-
分享
阅读原文 ↗