惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
D
Docker
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
IT之家
IT之家
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
B
Blog
D
DataBreaches.Net

Deno

Deno 2.8 | Deno Claw Patrol: an open-source security firewall for agents | Deno Fresh 2.3: Zero JS by default, View Transitions, and Temporal support | Deno Deno 2.7: Temporal API, Windows ARM, and npm overrides | Deno Build a dinosaur runner game with Deno, pt. 6 | Deno Build a dinosaur runner game with Deno, pt. 5 | Deno Deno Deploy is Generally Available | Deno Introducing Deno Sandbox | Deno Build a dinosaur runner game with Deno, pt. 4 | Deno Build a dinosaur runner game with Deno, pt. 3 | Deno Build a dinosaur runner game with Deno, pt. 2 | Deno React / Next.js Denial-of-Service Vulnerability: Deno Deploy users protected | Deno Deno 2.6: dx is the new npx | Deno Build a dinosaur runner game with Deno, pt. 1 | Deno React Server Functions / Next.js Vulnerability: Deno Deploy users protected | Deno My highlights from the new Deno Deploy | Deno Deno's Other Open Source Projects | Deno How Deno protects against npm exploits | Deno Help Us Raise $200k to Free JavaScript from Oracle | Deno Deno 2.5: Permissions in the config file | Deno Fresh 2.0 Graduates to Beta, Adds Vite Support | Deno Deno 2.4: deno bundle is back | Deno JavaScript™ Trademark Update | Deno What's coming to JavaScript | Deno A brief history of JavaScript | Deno Reports of Deno's Demise Have Been Greatly Exaggerated | Deno An Update on Fresh | Deno How Plaid migrated 100 services to a new database platform 5x faster with Deno | Deno Deno 2.3: Improved deno compile, local npm packages, and more | Deno Add JSR packages with pnpm and Yarn | Deno
January 4th incident update | Deno
Kitson Kelly · 2022-01-05 · via Deno

On January 4th at 23:59 UTC for about 40 minutes, modules available on deno.land/x and deno.land/std failed to load properly. This was due to a buggy patch that made code be served as HTML rather than raw text. This post details what exactly happened and what we are doing to prevent this in the future.

All services are now operating normally again. No data was lost. We take outages like these seriously and sincerely apologize for the disruption.

Timeline of events

At 23:59 UTC a change was merged into the deno.land repo which improved completion suggestions for language server clients. It also included a refactor of the code that determined if the raw code should be served to a client or the code wrapped in HTML for display in a browser. The code made an incorrect assumption about the run-time client’s behavior, causing HTML to be served to run-time clients instead of the raw code.

At 00:20 UTC on Wednesday a reversion of this logic was attempted, but the deployment was unsuccessful.

At 00:39 UTC the code was amended again to refer to an earlier deployment of deno.land directly for the dependencies, which allowed the code to be deployed and restored service.

Root cause

deno.land/x and deno.land/std served code wrapped in an HTML user interface to run-times, instead of the plain code. The code was refactored to provide more complaint content negotiation, but did not account that run-time clients like the Deno CLI and Deno Deploy provide an Accept header in requests that indicates that all content types are acceptable, including text/html, therefore the code served HTML to those clients.

Deno Deploy lacked a “revert” capability, meaning that reverting to the previous commit was not possible and rolling forward to a new commit, which had dependencies on code hosted on deno.land/x and deno.land/std was not straight forward.

The code which determines if a client gets HTML or the plain code was tested using an incorrect assumption about what headers are sent from the Deno CLI and Deploy.

Impact

During the 40 minute outage, new deployments to Deno Deploy which had dependencies on deno.land/x or deno.land/std failed, indicating that the dependency was not a valid module. Also, any remote dependencies for deno.land/x or deno.land/std which were not cached locally in Deno CLI would have also failed, indicating that the dependency was not a valid module.

What’s next?

We are adding tests to deno.land worker to test the correct behavior of this code. We are also working on adding a feature to Deno Deploy to allow a “rollback” or a “revert” to a previous deployment.