Security Collab Space Meeting - September 29, 2025 ๐Ÿ”— **Source:** [Security Collab Space Meeting - September 29, 2025](https://www.youtube.com/watch?v=PsYTTXuKvuU) > [!note]+ Document Notes > tags: [nodejs, npm-security, supply-chain, publishing-security] > author: OpenJS Foundation Security Collab Space > source: YouTube > reference: https://www.youtube.com/watch?v=PsYTTXuKvuU > date created: 2024-12-19 14:30 > > # ๐Ÿท๏ธ Title: Security Collab Space Meeting - September 29, 2025 > <!-- deep-read:sections start --> ## ๐Ÿงฐ Action Inbox - [H1] Review npm publishing guidance draft for main track talk โ€” feedback needed before Node Collab Summit #security - [H2] Create DM group for expanded collab summit session planning โ€” include James and interested parties #collaboration - [H3] Stack rank feature requests for GitHub/npm teams โ€” prioritized ask list from collaborators #strategy ## ๐Ÿงญ Table of Contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main Content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action Items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future Research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning Styles Assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility Assessment](#-accessibility-assessment) - [๐ŸŒ DEIB Assessment](#-deib-assessment) - [โœ… Logical Validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO Analysis](#-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) ### ๐Ÿ”— References - [OpenJS Foundation](https://openjsf.org/) - [npm Security Best Practices](https://docs.npmjs.com/security) ## ๐Ÿ“ Summary - OpenJS Security Collab Space discusses npm publishing security guidance and Node.js collab summit session planning - Focus on creating practical recommendations for maintainers while addressing enterprise needs - Current trusted publishing deemed inadequate for solo maintainers due to lack of two-factor authentication - Session will produce prioritized feature requests for GitHub and npm teams - Discussion reveals significant gaps in current security workflows and tooling ## ๐Ÿ“– Main Content The meeting centers on developing comprehensive guidance for secure npm publishing practices. Wes is preparing both a main track talk and a Node.js collab summit session, with the latter focused on generating concrete asks for the GitHub and npm teams. The discussion reveals that current "trusted publishing" features are inadequate, particularly for solo maintainers, as they lack proper two-factor authentication support. Key security recommendations emerging include local publishing workflows with ephemeral tokens, granular access controls, and resistance to account takeover attacks. Enterprise users face additional challenges with token rotation requirements and automation needs that current tooling doesn't adequately support. The conversation expands to broader supply chain security topics, including Node.js permission models and their limitations in preventing sophisticated attacks that use process spawning to escape sandboxes. ## ๐Ÿ—’๏ธ Notes #### โฑ๏ธ [00:00](https://youtu.be/PsYTTXuKvuU?t=0) โ€” [H1] npm Publishing Security Guidance Introduction - Key idea: Creating non-complicated guidance for complex npm publishing security - Evidence: "creating some guidance and trying to make it not complicated even though we think it will be complicated no matter what" #### โฑ๏ธ [02:15](https://youtu.be/PsYTTXuKvuU?t=135) โ€” [H2] Two-Part Approach: Main Track and Collab Summit - Key idea: Main track focuses on four reasonable setups with pros/cons analysis - Evidence: "four reasonable setups with pros and cons and really trying to focus for those folks on how to think about this problem" #### โฑ๏ธ [04:30](https://youtu.be/PsYTTXuKvuU?t=270) โ€” [H3] Enterprise vs Individual Publisher Requirements - Key idea: Corporate environments need different, stronger security recommendations - Evidence: "Are they the same recommendations for an enterprise or a corporation to follow, or are there different stronger recommendations" #### โฑ๏ธ [08:45](https://youtu.be/PsYTTXuKvuU?t=525) โ€” [H1] Token Management Challenges for Organizations - Key idea: Seven-day token rotation creates operational nightmares for large teams - Evidence: "this whole thing of them cycling those every seven days is a nightmare. Like we can't do it right" #### โฑ๏ธ [12:00](https://youtu.be/PsYTTXuKvuU?t=720) โ€” [H2] Trusted Publishing Inadequacy for Solo Maintainers - Key idea: Current trusted publishing lacks two-factor authentication support - Evidence: "there is not a single scenario today that is acceptable with trusted publishing... especially for a solo maintainer" #### โฑ๏ธ [15:30](https://youtu.be/PsYTTXuKvuU?t=930) โ€” [H3] Account Takeover Vulnerability in Multi-Maintainer Setups - Key idea: Protected environments can be bypassed through account compromise - Evidence: "if one of the accounts are taken over fully taken over... they can add a new user and it can be anybody" #### โฑ๏ธ [18:45](https://youtu.be/PsYTTXuKvuU?t=1125) โ€” [H2] Staged Publishing Alternative Workflow - Key idea: Publish to non-latest tags first, then promote with two-factor auth - Evidence: "publish to a next disc tag... you would have a secondary workflow for the promote" #### โฑ๏ธ [22:00](https://youtu.be/PsYTTXuKvuU?t=1320) โ€” [H3] One-Way Settings Operational Concerns - Key idea: Irreversible security settings require fine-grained permissions or support workflows - Evidence: "you can't even onboard publishers unless you've gone through and made sure they are like really experienced" #### โฑ๏ธ [26:15](https://youtu.be/PsYTTXuKvuU?t=1575) โ€” [H1] Most Secure Local Publishing Workflow - Key idea: Physical machine token storage provides strongest security for solo maintainers - Evidence: "the most secure approach is local publish with a token that only lives on a physical machine" #### โฑ๏ธ [29:30](https://youtu.be/PsYTTXuKvuU?t=1770) โ€” [H2] Ephemeral Token Workflow Recommendation - Key idea: Login, publish, logout workflow with token deletion for security - Evidence: "npm log in npm publish npm log out... that token is ephemeral" #### โฑ๏ธ [33:45](https://youtu.be/PsYTTXuKvuU?t=2025) โ€” [H3] CI Publishing with Third-Party Integration - Key idea: Granular tokens with external OTP handling can work for some scenarios - Evidence: "I use a granular publish token... but it relies on a third party server" #### โฑ๏ธ [38:00](https://youtu.be/PsYTTXuKvuU?t=2280) โ€” [H2] Permission Model Limitations Against Sophisticated Attacks - Key idea: Node.js permission model can be bypassed through process spawning - Evidence: "they used node as the entry point... they exec, you know, the the claw to basically say unsafeely run all these commands" #### โฑ๏ธ [42:15](https://youtu.be/PsYTTXuKvuU?t=2535) โ€” [H3] eBPF Kernel-Level Sandboxing Research - Key idea: Kernel-level restrictions could provide more effective sandboxing than file path permissions - Evidence: "once you start to restrict that by the kernel using ebpf you can be way more you can definitely create a sandbox" #### โฑ๏ธ [45:30](https://youtu.be/PsYTTXuKvuU?t=2730) โ€” [H1] Extended Collab Summit Session Planning - Key idea: Expanding session scope to cover both npm publishing and Node.js security - Evidence: "extend your proposal a bit... from 30 minutes to 1 hour and then we start from npm and then we jump to no.js" ## ๐Ÿ“š References - [npm Documentation](https://docs.npmjs.com/) - [Node.js Security Working Group](https://github.com/nodejs/security-wg) - [OpenJS Foundation Security Collab Space](https://github.com/openjs-foundation/security-collab-space) ## ๐Ÿ—ฃ๏ธ Paraphrase - Current npm publishing security requires complex manual workflows to achieve adequate protection - Trusted publishing features are incomplete and inadequate for most use cases, especially solo maintainers - Enterprise organizations face significant operational challenges with current token management requirements - Node.js permission model has fundamental limitations that sophisticated attacks can bypass - The security community needs to provide prioritized, actionable feedback to platform maintainers ## ๐Ÿ“ฐ Newsletter **Securing Your npm Publishing Workflow: Key Insights from OpenJS Security Collab** The OpenJS Security Collab Space recently discussed critical gaps in npm publishing security and practical recommendations for maintainers. Key takeaway: current "trusted publishing" features lack adequate two-factor authentication support, making them unsuitable for most scenarios. **Practical Benefits:** - Clear guidance on secure local publishing workflows - Understanding of enterprise-specific security challenges - Roadmap for platform improvements needed from GitHub/npm **Essential Security Workflow:** 1. Use ephemeral tokens (npm login โ†’ publish โ†’ logout) 2. Implement granular access controls where possible 3. Plan for account takeover scenarios, not just automated attacks The discussion highlights the need for better tooling around staged publishing, one-way security settings, and kernel-level sandboxing approaches for comprehensive supply chain security. Resources: [OpenJS Security Collab](https://github.com/openjs-foundation/security-collab-space), [npm Security Best Practices](https://docs.npmjs.com/security), [Node.js Security Working Group](https://github.com/nodejs/security-wg) ## โœ… Action Items #### DevRel - Developer education: Security workshop curriculum for npm publishing best practices - Developer experience: Document security workflow pain points and API gaps - Community engagement: Facilitate feedback collection from enterprise users on token management #### OSPO - Security Management: Vulnerability assessment of current npm publishing workflows - Policy & Governance: Establish secure publishing guidelines for organizational packages - Developer Support: Training materials for secure token lifecycle management #### Community - Maintainers: Security assessment templates for solo vs multi-maintainer projects - Contributors: Onboarding materials covering secure development practices - Ecosystem: Cross-project coordination on security tooling standards #### WordPress - Security: Audit WordPress package publishing workflows against npm security recommendations - Documentation: Update publishing guidelines to reflect current security best practices ## ๐Ÿงช Hypotheses - Local publishing with ephemeral tokens provides better security than CI-based publishing for solo maintainers - Current trusted publishing adoption is low due to inadequate two-factor authentication support - Enterprise token rotation requirements create security gaps rather than improvements - Kernel-level sandboxing (eBPF) would be more effective than application-level permission models ### ๐Ÿ“Š Methodology - Comparative security analysis of publishing workflows under different attack scenarios - Survey enterprise users about current token management pain points and workflows - Threat modeling analysis comparing account takeover vs automated attack resistance ### โ“ Questions - How can npm implement granular, time-limited token creation APIs for better automation? - What would adoption look like for kernel-level sandboxing solutions in the Node.js ecosystem? - How should the community prioritize security improvements versus usability concerns? ### ๐Ÿ”ฎ Future Research - eBPF-based sandboxing integration with Node.js runtime and package management - API design for automated, secure token lifecycle management - Cross-platform security workflow standardization across package managers ### ๐Ÿ’ก Implications - Practice: Organizations need to reassess current npm publishing workflows and token management practices - Policy: Platform providers need clearer prioritization of security features versus convenience - Security: Current security models have fundamental limitations requiring architectural changes - Education: Security guidance must account for operational complexity in real-world deployments ### ๐Ÿง  Learning Styles Assessment Reading level estimate: Flesch-Kincaid Grade Level 12-14 (technical discussion) #### ๐Ÿ‘€ Visual learners - Present: None identified in audio-only meeting - Improve: Security workflow diagrams, threat model visualizations, comparison charts #### ๐Ÿ”Š Aural learners - Present: Full meeting recording with technical discussion - Improve: Edited highlights reel with key security recommendations #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: Detailed explanations of security concepts and trade-offs - Improve: Glossary of technical terms, analogies for complex security concepts #### ๐Ÿงฉ Kinesthetic learners - Present: None in discussion format - Improve: Hands-on workshops, token management labs, security audit checklists #### ๐Ÿง  Logical learners - Present: Risk assessment frameworks, comparative security analysis - Improve: Decision trees for security choices, threat modeling templates #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: Collaborative discussion format, community feedback integration - Improve: Security review partnerships, group threat modeling sessions #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: Individual assessment of security practices - Improve: Self-assessment security checklists, personal workflow templates #### ๐ŸŒฟ Naturalistic learners - Present: Ecosystem thinking about security interdependencies - Improve: Supply chain mapping exercises, ecosystem impact analysis ### ๐Ÿ“Š Accessibility Assessment #### Screen reader semantics - Present: Audio content available, technical discussion well-structured - Improve: Transcript with proper heading structure, technical term definitions #### Keyboard navigation - Present: Standard video player controls - Improve: Timestamped navigation, searchable transcript interface #### Contrast and readability - Present: Audio-only content avoids visual contrast issues - Improve: High-contrast transcript formatting, clear visual hierarchy #### Text resizing and reflow - Present: Not applicable for audio content - Improve: Responsive transcript layout supporting zoom to 200% #### Media and captions - Present: Audio available but no captions provided - Improve: Professional captions with technical term accuracy, downloadable transcript #### Forms and interactions - Present: Simple video controls only - Improve: Interactive transcript with timestamp jumping, note-taking features ### ๐ŸŒ DEIB Assessment #### Cultural breadth - Present: English-only discussion, primarily North American perspectives - Improve: Multi-regional security practice examples, internationalization considerations #### Inclusive language - Present: Technical jargon defined in context, professional tone - Improve: Plain language security summaries, avoid assumptions about organizational resources #### Neurodiversity support - Present: Structured agenda, clear topic transitions - Improve: Content warnings for complex technical discussions, processing time accommodation #### Representation - Present: Male-dominated technical discussion typical of security spaces - Improve: Diverse speaker representation, accessibility of participation #### Psychological safety - Present: Respectful technical debate, acknowledgment of different perspectives - Improve: Explicit inclusion of different organizational contexts and constraints ### โœ… Logical Validity #### Strong reasoning - Deductive strength: Security workflow analysis follows clear threat modeling principles - Inductive strength: Conclusions drawn from specific attack patterns and platform limitations - Causal reasoning: Clear connection between security measures and attack prevention - Analogical strength: Enterprise vs individual security needs appropriately compared #### Fallacies - Appeal to authority: Minimal, mostly technical expertise appropriately referenced - False dilemma: Some oversimplification of security vs usability trade-offs #### Tone of voice - Overall tone: Technical, collaborative, solution-focused with appropriate urgency about security gaps ### ๐Ÿ›ก๏ธ DARVO Analysis - Deny: No denial patterns observed in technical security discussion - Attack: No attacks on accusers present - Reverse victim/offender: No victim/offender dynamics present - Emotional cues and rhetoric: Frustration with platform limitations expressed constructively ## ๐ŸŽฏ Conclusion The meeting reveals significant gaps between current npm security tooling and real-world security needs, particularly for enterprise users and solo maintainers. While trusted publishing was intended to improve security, its lack of proper two-factor authentication makes it unsuitable for most use cases. The discussion emphasizes the need for prioritized, actionable feedback to platform maintainers, with local publishing using ephemeral tokens emerging as the most practical secure workflow currently available. Future improvements require both platform-level changes and potentially architectural shifts toward kernel-level --- ## Full Transcript [00:13] Everyone, welcome to the September 29th<br>[00:16] meeting of the OpenJS Security Collab.<br>[00:20] Uh, good to see everyone. So, two topics<br>[00:23] um are always good for walk-on topics if<br>[00:25] we've got them. Uh but the first one we<br>[00:27] wanted to talk about was npm publishing.<br>[00:29] This is something we had talked about um<br>[00:33] last week and around creating um some<br>[00:37] guidance<br>[00:39] and trying to make it not complicated<br>[00:41] even though we think it will be<br>[00:43] complicated no matter what. Um and<br>[00:46] sounds like Wes you're going to prepare<br>[00:48] a node collab summit session on the<br>[00:50] above. So maybe you could talk a little<br>[00:51] bit about that.<br>[00:53] >> Yeah. Yeah. So um two-part. So last week<br>[00:56] we uh also added to the agenda me doing<br>[01:00] a talk on the main track uh with a<br>[01:04] similar content. Um so the<br>[01:10] I'll split up here a little bit and just<br>[01:13] spend most of the time on the summit<br>[01:14] here. But the uh I've started doing the<br>[01:16] prep for the talk. Uh, I'll probably<br>[01:19] send some notes to y'all for feedback<br>[01:22] just to make sure that I'm, you know,<br>[01:23] broadly not missing anything or or um,<br>[01:27] you know, sending a message that we<br>[01:29] think uh, could be better. Um but it<br>[01:33] generally comes down to uh sort of four<br>[01:39] reasonable setups<br>[01:42] with pros and cons and really trying to<br>[01:45] focus for those folks on how to think<br>[01:48] about this problem. not necessarily to<br>[01:51] propose them all uh like in depth with<br>[01:55] details of why like I'll I'll talk about<br>[01:57] pros and cons but those will be more to<br>[01:59] point out like what works why it works<br>[02:01] and why other things don't and then the<br>[02:04] session which is where I think uh we<br>[02:06] have more to do here will be to sort of<br>[02:09] take some of this content uh make sure<br>[02:12] everybody in our like you know<br>[02:15] collaborator circle really understands<br>[02:17] why this is important what the details<br>[02:19] are and and dig into<br>[02:22] particularly the like here's the only<br>[02:25] working way and maybe this one kind of<br>[02:28] works but you have to do you know X Y<br>[02:30] and Z and then from that get a really<br>[02:35] strong message to take back to the<br>[02:37] GitHub and npm folks with like we hashed<br>[02:40] this out at the collab summit session<br>[02:43] and this is coming from the node core<br>[02:46] you know and foundation you<br>[02:49] collaborators, we're signing off on this<br>[02:52] message. Here are the things we're<br>[02:53] asking you to do to help us move this<br>[02:56] forward. Um, and so that's kind of where<br>[02:58] I'm thinking the session uh would<br>[03:01] specifically like have that as a goal<br>[03:03] for the outcome, which is why I think it<br>[03:05] makes sense as a collab session, even<br>[03:07] though it's not, you know, specifically<br>[03:09] Node.js related like Node publishes a<br>[03:11] bunch of packages. Um but really what I<br>[03:14] want to get is like these are you know<br>[03:16] core people in the ecosystem who have<br>[03:19] agreed this is the the asks these are<br>[03:23] the gaps that we're asking you know<br>[03:24] GitHub uh to fill uh in the you know<br>[03:29] immediate hopefully future. Um,<br>[03:33] I think that's probably enough if folks<br>[03:36] think that's Yeah. Okay.<br>[03:39] >> I know. Um, I know we focus on the maint<br>[03:42] maintainers and the the community<br>[03:44] publishers here, but I'm wondering do<br>[03:47] those same recommendations.<br>[03:49] Are they the same recommendations for an<br>[03:51] enterprise or a corporation to follow,<br>[03:54] or are there different stronger<br>[03:56] recommendations a corporation or<br>[03:58] enterprise should follow? Um, I'd be<br>[04:01] curious from that working for such a<br>[04:03] large organization that's very<br>[04:04] riskaverse. Um, but uh, so if I I guess<br>[04:09] the maybe the the the<br>[04:12] question to ask is is there something<br>[04:14] corporations should be pushing on their<br>[04:16] GitHub contacts and contracts and TAMs<br>[04:20] and that kind of thing as well in the<br>[04:22] meantime?<br>[04:24] That's an awesome question and one that<br>[04:26] I'm definitely have not put together a<br>[04:29] clear answer for, but I also operate<br>[04:31] the, you know, npm account for for<br>[04:34] Netflix, so like, you know, I've I've<br>[04:36] done this a bit. Um,<br>[04:40] I probably will need to think about that<br>[04:42] a little bit more deeply, but<br>[04:45] uh most of these recommendations are<br>[04:48] universal because they are not<br>[04:51] necessarily about the type of org. It's<br>[04:53] about the fundamentals of uh is it<br>[04:57] resistant to automated publish? Is it<br>[05:01] resistant to account takeover? Is it<br>[05:04] resistant to mistakes being made in your<br>[05:08] CI workflows or in your local developer<br>[05:10] machines?<br>[05:12] And those apply to us all. Uh I think<br>[05:17] the things that<br>[05:20] we probably need to dig into uh for<br>[05:24] organizations and that so I I'll give<br>[05:27] you a link uh once I'm done talking I'll<br>[05:29] go find it. Um because I brought this up<br>[05:31] in one of the community feedback things<br>[05:33] is like we manage the tokens my team<br>[05:35] manages the tokens for all of our folks<br>[05:37] who Yeah. Okay. Yeah. And this whole<br>[05:39] thing of them cycling those every seven<br>[05:41] days is a nightmare. Like we can't do it<br>[05:44] right. Um,<br>[05:46] that would be, you know, I didn't use<br>[05:49] the word nightmare in the post. Uh,<br>[05:51] Jordan, though, I I you know, understand<br>[05:53] why you said I think what you said in<br>[05:55] the first one, but I it's like, you<br>[05:56] know, I I did try to tone the language<br>[05:58] back so that it felt, you know, um like<br>[06:01] I wasn't on the attack mode. Uh but it<br>[06:03] is<br>[06:04] >> that makes it more more uh better<br>[06:06] received anyway. So, that's<br>[06:08] >> yeah,<br>[06:08] >> a good idea.<br>[06:09] >> Um but I mean, but it is frankly just<br>[06:11] unt won't work, right? Uh and so<br>[06:15] the problem is that the alternatives<br>[06:18] uh don't provide<br>[06:22] what any larger org needs first. Um we<br>[06:26] do all this manually today. Uh it is a<br>[06:29] big pain.<br>[06:31] But the asks for that type of thing is a<br>[06:34] lot more centered around automation uh<br>[06:38] you know authentication integrations and<br>[06:41] stuff like that which would improve<br>[06:43] there and I don't think<br>[06:46] that<br>[06:48] those those asks are typically larger<br>[06:51] and so if we're going to focus on<br>[06:52] enterprises coming to ask that I think<br>[06:54] we would need to sort of prioritize a<br>[06:57] little bit because the fundamentals are<br>[06:59] still not yet met right so like if push<br>[07:01] us off tokens, the 7-day tokens, then<br>[07:04] that means we our our only options are<br>[07:07] non two-factor off options, which are to<br>[07:10] me totally off the table, right? So that<br>[07:13] so they basically your one good one that<br>[07:16] was basically a you know uh a token with<br>[07:20] enforced two-factor off is actually no<br>[07:22] longer tenable because now you have to<br>[07:23] renew that token every seven days and<br>[07:25] the teams who manage the publish are not<br>[07:27] the teams that manage the the access,<br>[07:29] right? Um, so for orgs that that's<br>[07:31] pretty impactful. Um,<br>[07:34] sorry, I've got a whiteboard where I<br>[07:35] wrote some of these out and I'm just<br>[07:37] looking up at it to make sure I'm not<br>[07:38] missing um<br>[07:41] anything. Oh, and then the other thing<br>[07:43] is the uh<br>[07:45] uh removal. This I think was Jordan your<br>[07:48] issue. The other one the um the T-top<br>[07:51] removal or whatever is the that removal<br>[07:54] would also impact this<br>[07:57] >> workflow which is again just<br>[07:59] a regression for for the users who need<br>[08:02] that. Um, and their answer right now is<br>[08:05] go to trusted publishing which has a<br>[08:07] whole slew of, you know, we've got a a<br>[08:09] whole slew of things we have to cover<br>[08:10] with them before that can be actually<br>[08:13] >> I mean and trusted publishing is it's<br>[08:15] it's an incomplete feature anyway,<br>[08:16] right? Like it doesn't it doesn't work<br>[08:18] for a number of use cases. So it's just<br>[08:19] not it even if it if using it would fix<br>[08:23] all the problems which it doesn't it's<br>[08:25] not possible for everyone to use it. So<br>[08:27] it's just not a viable like thing that<br>[08:30] to require everyone to do. Um would that<br>[08:34] make sense if we uh describe uh very<br>[08:38] clearly to uh especially for is for<br>[08:42] maintainers solo maintainers uh in which<br>[08:45] situations trust publishing wouldn't<br>[08:48] work for that like uh in which case or<br>[08:52] which scenarios they should not they<br>[08:54] must not use that uh<br>[08:56] >> all scenarios there is not a single<br>[08:58] scenario today that is acceptable with<br>[09:00] trusted publishing.<br>[09:02] even for a solo maintainer.<br>[09:04] >> No, especially for a solo maintainer.<br>[09:06] So, uh it it actually is slightly more<br>[09:09] secure in a multimontainer setup because<br>[09:11] you can use your other maintainers as a<br>[09:14] substitute for second factor. There is<br>[09:17] no two-factor off setup that works with<br>[09:21] the current trusted publishing. So,<br>[09:23] basically, you're you end up relying on<br>[09:25] GitHub<br>[09:27] protected environments.<br>[09:29] >> Yes. Yes. And<br>[09:30] >> it only works if you have another<br>[09:32] maintainer available to approve it.<br>[09:36] >> And then that is<br>[09:40] not resistant to account takeover.<br>[09:45] So it is only resistant to automated<br>[09:49] publishing<br>[09:51] which helps with things like mistakes<br>[09:52] and and that right. Uh but if your co-<br>[09:56] if your if one of the accounts are taken<br>[09:58] over<br>[10:00] fully taken over here to be clear we<br>[10:02] really actually mean fully taken over<br>[10:04] not just fished into one step here but<br>[10:07] like this would be you know uh<br>[10:09] >> you can log in as the user on the<br>[10:11] >> you can log in as the user and and take<br>[10:12] and change their settings then right<br>[10:15] that's what you need to do this so it's<br>[10:16] not like a low bar here to be clear I'm<br>[10:18] not trying to say as bad as what we just<br>[10:20] saw with you know NX but as soon as that<br>[10:24] happens now they uh they can add a new<br>[10:28] user and it can be anybody and they can<br>[10:31] then just go and approve their own thing<br>[10:33] via their second<br>[10:34] >> make a sock puppet account to be the<br>[10:35] secondary. Yeah.<br>[10:36] >> And so the only thing here that will<br>[10:38] remedy that is if they build because<br>[10:42] this doesn't exist today<br>[10:44] off back into the npm side for trusted<br>[10:48] publishing and then integrate it back<br>[10:50] into the the um<br>[10:51] >> Yeah. Yeah. Got it. or if they built the<br>[10:54] thing that the RFC calls decided should<br>[10:56] be built 5 years ago that they never<br>[10:57] built staged publishing because then you<br>[10:59] could publish from anywhere and then a<br>[11:01] maintainer could use any form of two<br>[11:03] factor multiple maintainers even to<br>[11:04] approve and promote a stage publish but<br>[11:07] it's unlikely and this is also in my<br>[11:10] talk I am going to talk about uh a<br>[11:13] substitute for staged publish here which<br>[11:15] is that your automated pipelines uh<br>[11:19] publish to a next disc tag and either<br>[11:22] hard code that or do something that<br>[11:24] basically makes a um you know<br>[11:27] >> it slow roll and then you would have a<br>[11:29] secondary workflow for the promote. It's<br>[11:32] too factor. Yeah.<br>[11:33] >> And that would help at least again make<br>[11:35] it harder to do the what Shy Halude did,<br>[11:38] which was just basically find everybody,<br>[11:40] you know, anything and just publish 100.<br>[11:43] >> That would work if npm added a way to<br>[11:45] restrict new publishes to only being on<br>[11:49] a on a set number of tags or certain<br>[11:52] tags and basically disallow publishing<br>[11:54] to go straight to latest. If you could<br>[11:56] do that then like that would be perfect<br>[12:00] and then it would be somewhat secure<br>[12:02] especially if it was a one-way setting<br>[12:03] that once you turned it on on a package<br>[12:05] you couldn't turn it off. Um,<br>[12:07] >> okay. So, we probably need resistance to<br>[12:09] atto.<br>[12:10] >> Okay. Okay. So, one way settings we need<br>[12:11] to talk about.<br>[12:12] >> Yeah, that's dangerous.<br>[12:14] >> Well, it's not dangerous necessarily. It<br>[12:16] is. Uh, it could be<br>[12:20] >> Mhm.<br>[12:20] >> fine.<br>[12:22] Uh,<br>[12:23] but there's a bunch of scenarios where<br>[12:26] it takes somebody on the operational<br>[12:28] side possibly having to do support work<br>[12:31] that does not exist today to to make<br>[12:34] that functional, right? So imagine one<br>[12:38] user goes in and makes a setting change<br>[12:42] without consulting the team<br>[12:45] and we don't have package level uh fine<br>[12:49] grain permissions today. So you are<br>[12:51] either a fully trusted owner of the<br>[12:54] package or not. And so because we don't<br>[12:58] have that fine grain, it means that you<br>[12:59] can't even onboard publishers unless<br>[13:02] you've gone through and made sure they<br>[13:04] are like<br>[13:05] really experienced and know that that<br>[13:08] setting is a one-way setting. And if you<br>[13:10] go tick that box and hit save,<br>[13:13] >> we now are stuck and we can't publish.<br>[13:15] >> That's fair. And so you so they need to<br>[13:18] then go on the have either support that<br>[13:20] can very quickly undo the one way or<br>[13:23] they need<br>[13:25] workflows that undo the one way. Like<br>[13:26] there's a whole bunch of like uh<br>[13:28] operational features that would need to<br>[13:30] be done to have that be true for either<br>[13:33] trusted publishing or this you know<br>[13:35] these other theoretical features we<br>[13:37] would do if we wanted to go one way. Um,<br>[13:40] and so I'm I'm when we talk about these<br>[13:43] one way things, I think Marshall maybe<br>[13:44] also made some suggestions about going<br>[13:47] one way. I think there was some<br>[13:48] suggestions on the GitHub releases being<br>[13:51] one way once you go uh immutable uh was<br>[13:55] another comment folks made. And both of<br>[13:57] those have these problems, right? where<br>[13:59] you either need to have the fine grained<br>[14:01] off controls to make sure that's only in<br>[14:03] the hands of your like you know core<br>[14:05] folks or you need uh to have some<br>[14:08] support workflow that can undo the one<br>[14:10] way if it was done on accident. Um so<br>[14:15] yeah<br>[14:15] >> yeah that's fair<br>[14:17] >> okay so uh uh the TLDD there is that do<br>[14:21] not use th trusted publishing yet uh and<br>[14:25] still keep using the npm tokens uh and<br>[14:28] having a more secure uh uh workflow for<br>[14:32] that. All right, makes sense. Um, yeah,<br>[14:37] for essentially for for a single<br>[14:39] maintainer project, I nobody has<br>[14:41] provided me evidence to contradict that<br>[14:43] the most secure approach is local<br>[14:45] publish with a token that only lives on<br>[14:47] a physical machine. So that it really<br>[14:48] has to be a guy with a wrench or an<br>[14:50] account takeover to to to hijack my<br>[14:53] stuff. Um, for multiple maintainer<br>[14:55] projects, as as was hinted, like<br>[14:57] >> there it's a different trade-off. And<br>[15:00] even though publishing from CI<br>[15:02] approaches, which are almost always one<br>[15:04] factor, they don't have to be, but they<br>[15:06] almost always are. Uh even though that's<br>[15:08] like objectively less secure in in a lot<br>[15:12] of ways, it's for m multiple users<br>[15:14] because it's auditable and you can<br>[15:15] control permissions and stuff like there<br>[15:18] may that may be a worthy trade-off, but<br>[15:19] like those are your choices basically.<br>[15:21] But but but in those cases of local<br>[15:23] publishing with an existing token uh<br>[15:26] that's stored locally, wouldn't that be<br>[15:29] for instance the the recent event of the<br>[15:32] supply chain attacks uh your token could<br>[15:35] be leaked, right? Wouldn't it be more<br>[15:37] safer if when you are publishing a new<br>[15:40] package, you create a new token uh that<br>[15:43] is that lives just once and then you<br>[15:45] delete that?<br>[15:46] >> Yeah. So that um<br>[15:47] >> that's what I'm actually going to<br>[15:48] recommend in the talk to be clear. Uh<br>[15:50] okay. Yeah,<br>[15:51] >> because that<br>[15:52] >> Okay, so no spoilers.<br>[15:54] >> No spoilers here. You know, if if if we<br>[15:56] think there's another way, I mean,<br>[15:57] Jordan, tell me if you think I'm wrong,<br>[15:59] but I'm going to say what I was planning<br>[16:01] to say at least is uh that this is our<br>[16:05] let's start from scratch. Here's our<br>[16:07] first experience here. And it turns out<br>[16:09] it's actually probably the most secure<br>[16:12] if you do X, Y, and Z. And then X, Y,<br>[16:14] and Z was going to be uh login, publish,<br>[16:18] and then delete the token locally. uh<br>[16:21] which is all you actually have to do is<br>[16:22] remove your npmrc. Now the token is<br>[16:24] still valid uh on public npm but<br>[16:28] presumably you if you do this workflow<br>[16:30] where you uh npm log in npm publish npm<br>[16:36] log out<br>[16:38] uh you<br>[16:40] that token is ephemeral in that like<br>[16:43] nobody's going to they'd have to hack<br>[16:44] npm to steal it and at that point<br>[16:48] >> and actually I don't even they probably<br>[16:49] they'd have to crack it you know what I<br>[16:51] mean like we're talking<br>[16:52] >> to replace the the binary Yeah.<br>[16:54] >> So, what I would what I would suggest as<br>[16:56] a modification to that is because it's<br>[16:59] really annoying if you have to do it<br>[17:01] each publish is that you can set a you a<br>[17:05] setting in your npmrc so that on every<br>[17:07] time you run npm publish as like a pre<br>[17:10] pre-publish it gives you a URL that you<br>[17:13] have to visit to get a token. You get<br>[17:15] the token, you paste it in the prompt<br>[17:17] and then it keeps it in your npmrc even<br>[17:19] but uh it lasts for a period of time an<br>[17:22] hour, two hours, a day, whatever<br>[17:24] something finite and then uh and then<br>[17:28] you can reuse that and so like and then<br>[17:31] it becomes if it can be invalidated<br>[17:33] after that period of time then it<br>[17:34] doesn't matter if you delete it you just<br>[17:35] keep it until npm tells you oh you need<br>[17:37] a new one now<br>[17:39] >> and love this but<br>[17:42] >> uh that needs to be npm building that.<br>[17:44] So I'm correct<br>[17:45] >> specifically talking about things you<br>[17:47] can do today.<br>[17:48] >> Okay, got it.<br>[17:49] >> And then the session, this collab summit<br>[17:52] session is where I want to really dive<br>[17:53] into these type of things and say is<br>[17:56] that is asking that is that better than<br>[18:00] asking this, you know, other workflow.<br>[18:02] Like when we're going to ask them<br>[18:03] something, we need to be crisp about<br>[18:05] like this is the ranked order of<br>[18:08] importance.<br>[18:10] We understand like and you know you were<br>[18:12] on uh actually oh I think you made you<br>[18:14] may miss the call with Leo right? Uh<br>[18:16] >> uh yes I did. I was on a plane at the<br>[18:17] time<br>[18:17] >> because Leo was making very clear we<br>[18:20] have limited time. We have to be very uh<br>[18:23] uh ruthless in prioritization so that we<br>[18:26] can get the things that are most<br>[18:27] important done. And so what I'm want to<br>[18:29] come out of that with is actually like<br>[18:31] stack rank these as a you know feature<br>[18:33] request list and be like if you do none<br>[18:36] of the other ones this top one is the<br>[18:38] one we're really asking you for first<br>[18:40] right and so like that workflow sounds<br>[18:43] great uh but like today what that would<br>[18:47] need is like some new APIs so right they<br>[18:49] don't even have APIs for user management<br>[18:51] at all zero right uh you have to back<br>[18:55] you know uh<br>[18:58] engineer them from the website requests<br>[19:00] and like those are not stable so like<br>[19:02] don't go do that uh right so like manual<br>[19:05] is what you have here and so what I'm<br>[19:07] doing in the talk is really saying here<br>[19:09] is a manual workflow that works today if<br>[19:11] you are a maintainer and and this local<br>[19:14] one is it's what I do most of the time<br>[19:17] I'm not you know perfect nobody is but<br>[19:19] like I get my project ready to publish I<br>[19:24] run npm login I publish it with<br>[19:26] two-factor off and then I I just delete<br>[19:29] the npmrc entirely because I don't keep<br>[19:31] a local npmrc but like you know you can<br>[19:34] also npm log out uh and then that<br>[19:38] achieves this primary goal here if you<br>[19:42] want to go the extra mile. I'm also<br>[19:43] going to mention going into because I<br>[19:45] don't think people know this. You have<br>[19:46] to go into the npm UI and delete the<br>[19:48] tokens uh for them to actually be<br>[19:51] revoked. Uh npm logout doesn't actually<br>[19:54] do that. it just deletes it from your<br>[19:55] local system. Uh so like again I'm gonna<br>[19:58] that's the like local uh recommended<br>[20:02] workflow there.<br>[20:05] And then I did want to add one last<br>[20:07] thing here on top of Jordan's uh nobody<br>[20:11] has presented one that is uh good enough<br>[20:15] or whatever comment. Sorry I don't<br>[20:16] remember. I'm missing your words. But uh<br>[20:19] I do think that there is a CI publish<br>[20:24] workflow that is good enough.<br>[20:28] It does include third party integrations<br>[20:31] so that you can do<br>[20:34] second factor<br>[20:36] and I think that is good enough and I<br>[20:38] think Jordan you even use that somewhere<br>[20:41] >> in one yeah so the the in one project I<br>[20:44] use it I use a granular publish token so<br>[20:46] for only that package and but it relies<br>[20:48] on a third party server so it only works<br>[20:51] because I have a third party server I<br>[20:53] trust that's not practical for to demand<br>[20:55] of or expect of open source people If uh<br>[20:58] GitHub could build something natively<br>[20:59] that uh removed the need for a third<br>[21:02] party server, then that is what everyone<br>[21:04] should do.<br>[21:05] >> But just to be clear, the third party<br>[21:06] integration only handles the the one<br>[21:09] time<br>[21:10] >> it only handled inputting an OTP token<br>[21:14] and putting it into a thing.<br>[21:16] >> Even the trust there is reasonable in<br>[21:18] that they don't that's they only have<br>[21:19] one factor. So, as long as you have what<br>[21:22] you mentioned, a granular access token,<br>[21:25] which<br>[21:26] enforces two-factor off, even the third<br>[21:29] party couldn't publish on your behalf<br>[21:32] because all they're handling is the OTP.<br>[21:34] >> That's true.<br>[21:35] >> And so, I think that that's<br>[21:39] requirements.<br>[21:40] >> I don't I wonder how many OTP codes it<br>[21:43] would take to reverse engineer the seed,<br>[21:45] but um that would be other than that, I<br>[21:48] think you're right. valid uh and you are<br>[21:52] this is why you know you're thinking<br>[21:54] this is what we need uh but also uh I<br>[21:57] think it's higher number of publishes<br>[21:59] than any package on current npm.<br>[22:02] >> Yeah that that's likely.<br>[22:06] So, I I think that one So, I think<br>[22:08] there's two coming out of this. Like,<br>[22:10] I'm I think there's really two here that<br>[22:13] work. Um,<br>[22:15] and then there's two that are<br>[22:20] some people will call it good enough.<br>[22:22] Uh,<br>[22:24] and I will call those out, but I don't<br>[22:26] call them good enough. And then I think<br>[22:28] they apply universally to anybody<br>[22:30] publishing packages depending on their<br>[22:32] own personal risk assessment. Um, you<br>[22:36] know, like I think for like an org, like<br>[22:39] Steve, this is where this started here.<br>[22:40] We went on a bit of a deep dive, but<br>[22:42] like for an org, having people, you<br>[22:44] know, get tokens and put them on their<br>[22:45] local machine is probably not, uh, you<br>[22:50] know, what most orgs are going to want.<br>[22:52] Um, what we do is we mint them and, uh,<br>[22:57] encrypt them with one of our internal,<br>[23:00] uh, you know, security tools. uh and<br>[23:03] then granularly hand out access. Uh and<br>[23:07] those are all backed by, you know,<br>[23:09] two-factor off and all sorts of other<br>[23:11] stuff that that make that more<br>[23:14] reasonable. Um but still turn on<br>[23:17] two-factor off. So like again it comes<br>[23:20] back to the same thing of like the the<br>[23:23] orgs have to do the same thing and we<br>[23:24] should really make it easy for the orgs<br>[23:26] because if we make it easy for the orgs<br>[23:27] we'll make it easy for everybody because<br>[23:28] orgs have it worse by having to manage<br>[23:30] so many you know users and complicated<br>[23:33] things.<br>[23:42] Should we move on to the next topic<br>[23:44] which is related to this topic but maybe<br>[23:47] get concrete? Um so this was the ask<br>[23:50] around um defining topics for the<br>[23:51] Node.js collapse summit.<br>[23:53] >> Uh actually I think this is what uh I I<br>[23:57] don't know exactly. Uh maybe we might<br>[24:00] have something different for Noode.js<br>[24:02] itself but uh I think it's all in the<br>[24:05] same uh in the same discussion right<br>[24:09] Wes.<br>[24:12] I think it feels that way. Yeah, I mean<br>[24:15] I am I am I will say I think I multiple<br>[24:19] times I have mentioned this to folks and<br>[24:22] they have brought up other supply chain<br>[24:25] things like I was going to like your<br>[24:28] comment in the chat right here about<br>[24:30] checking the sham of the binary right<br>[24:33] that is actually not the main focus of<br>[24:36] what I'm trying to get at there's<br>[24:38] holistic supply chain security I'm<br>[24:41] specifically trying to get toward like<br>[24:42] what are the publish settings and what<br>[24:44] are the workflows that are that are<br>[24:46] there feels like there's something here.<br>[24:48] So like you said checking the npm you<br>[24:51] know binary for malicious you know<br>[24:54] modifications uh uh uh Bishek uh ner I<br>[24:58] don't know if you all are familiar um uh<br>[25:01] with him he's uh works on lavaote when I<br>[25:04] brought this up on blue sky was like hey<br>[25:06] I hope you're going to mention not<br>[25:08] running in post install scripts and<br>[25:09] here's my lava mo package for that I<br>[25:12] think there's more to it so if we wanted<br>[25:14] to do two and talk about like the other<br>[25:18] stuff<br>[25:20] like I feel like there's definitely room<br>[25:22] for that<br>[25:25] >> but from nojs perspective what else we<br>[25:28] can do because I I think the initial<br>[25:31] idea of the permission model was to uh<br>[25:34] prevent those access uh if the whenever<br>[25:38] you uh people try to have a a post<br>[25:41] installing script that executes a nojs<br>[25:44] binary they will inherit the the parent<br>[25:48] permission model flags and then you know<br>[25:51] it could have some some some prevent<br>[25:53] some attacks but I don't know what else<br>[25:55] we could do from nojsi.<br>[25:57] >> Yeah that's the kind of stuff the<br>[25:59] permission model is the stuff I was<br>[26:00] thinking where we could like probably<br>[26:02] brainstorm a bit and come up with some<br>[26:04] good you know I I did copy your safe npx<br>[26:07] script and I I made some modifications<br>[26:09] for myself but like expecting users to<br>[26:11] do that seems pretty low. So it<br>[26:13] definitely feels like for a whole bunch<br>[26:15] of those kind of<br>[26:16] >> when you're when you're talking about<br>[26:18] mechanisms for maintainers, you can<br>[26:20] recommend workarounds and and and<br>[26:22] complex flows. When you're talking about<br>[26:23] protections for users, pretty much<br>[26:25] anything like it's it's great to be able<br>[26:27] to say, hey, if you're really worried,<br>[26:29] this is the things you can do, but<br>[26:31] unless it's changing the defaults, it's<br>[26:34] basically not going to move the needle<br>[26:35] in my opinion. Um, and for npm install,<br>[26:39] only npm can change those defaults.<br>[26:43] and node can make strong recommendations<br>[26:45] and if there's features right like if we<br>[26:47] could find a permissions model set of<br>[26:50] settings<br>[26:52] >> that worked for some 80% case I don't<br>[26:57] know what we'd want to set as a bar to<br>[26:59] then recommend to npm to implement and<br>[27:02] then if there was other additional you<br>[27:04] know user experience changes that need<br>[27:06] to happen because frankly I I you know<br>[27:07] the permissions model<br>[27:10] in a real project is like a nightmare<br>[27:13] because they're just the user is just<br>[27:15] getting peppered with with like I don't<br>[27:17] know should it be able to read that? I<br>[27:19] don't I just some random<br>[27:22] >> package that's in my transitives. Deno<br>[27:24] and Android and stuff have that type of<br>[27:25] permission model and and users like like<br>[27:29] pretty empirically do the exact same<br>[27:31] thing they do with like terms of service<br>[27:32] agreements is they just go agree agree<br>[27:34] agree approve approve approve and like<br>[27:36] it's a great idea until everyone gets<br>[27:39] tired of it and that happens very<br>[27:40] quickly<br>[27:42] >> like the the major flaw with OKAP as a<br>[27:45] thing is that like<br>[27:46] >> it's it's not like humans don't don't<br>[27:48] want to do that<br>[27:51] >> there is there's there are some some<br>[27:53] settings that could apply globally in<br>[27:55] case of npm. Uh we have mentioned that<br>[27:58] some some flags could only be changed if<br>[28:00] npm changed the the full but uh in case<br>[28:04] of uh the environment variable node<br>[28:05] options you can you can make that global<br>[28:08] and basically whenever you run npm uh it<br>[28:11] will uh get that node options by def<br>[28:14] whenever it spawns a nojs process. So if<br>[28:17] you define that that you want to have<br>[28:19] the permission enabled to any NodeJS<br>[28:21] process that might work. Uh but as as<br>[28:25] Jordan mentioned uh if you run uh you<br>[28:29] need to define a set of policies for<br>[28:32] each project and that might be a<br>[28:33] nightmare that that might be no that<br>[28:35] that will be a nightmare because a lot<br>[28:38] of uh projects they read from different<br>[28:40] files and on on the startup they if they<br>[28:43] are reading from open SSL configuration<br>[28:46] they need to understand why they are<br>[28:47] reading that and why that's the def uh<br>[28:50] but yeah uh that that's<br>[28:54] And then to add on top of it the recent<br>[28:56] attack uh<br>[28:58] you know and I I have to look into it I<br>[29:00] haven't tried to set this up but uh<br>[29:02] spawning processes means that the<br>[29:05] permission model there<br>[29:08] right won't be transitive so you you<br>[29:11] know set the permission model in npx and<br>[29:13] then npx goes off and the what was the I<br>[29:16] I don't think this attack got a name<br>[29:18] this was the first in the series of<br>[29:20] attacks here over the past month. Um, it<br>[29:23] was the one that used uh local AI agents<br>[29:28] to actually like pick up and find all<br>[29:31] the the tokens on the machine. So what<br>[29:35] they did is they used node uh I can't<br>[29:38] remember specifically which was it<br>[29:39] exeact file to call claude and whatever<br>[29:44] all these other uh local binaries<br>[29:48] uh are and those are the what they<br>[29:50] actually did to do the work. I don't<br>[29:52] know if you all saw this. There's a good<br>[29:53] blog post I can find the link to, but<br>[29:55] basically they just based in all the<br>[29:56] unsafe flags. And so basically they used<br>[29:59] node as the entry point, but as long as<br>[30:02] the node process had child process exec,<br>[30:06] they basically had a free reign. And so<br>[30:08] they exec, you know, the the claw to<br>[30:12] basically say unsafeely run all these<br>[30:14] commands and now you've escaped the<br>[30:15] sandbox. So you need like a little bit<br>[30:18] more right than just<br>[30:22] >> whenever you uh enable the permission<br>[30:25] model the exac and spawn are blocked by<br>[30:27] the fool. So that would would prevent if<br>[30:32] this is the is the entry point.<br>[30:33] >> But but the point is then you you get a<br>[30:35] reasonable use, right? So the reasonable<br>[30:38] use here is that almost every tool<br>[30:42] that you have to run in an XP npx style<br>[30:46] calls spawn in some form. And<br>[30:50] >> yes,<br>[30:50] >> maybe they shouldn't, but they all do<br>[30:53] for reasons. And so then as soon as you<br>[30:55] enable it, you now have enabled it for<br>[30:58] all<br>[31:00] use cases there, which could then mean<br>[31:03] you enabled it for one you know it<br>[31:04] needed to do and you got one you didn't<br>[31:07] want.<br>[31:08] >> Yes. Uh if you spawn a no.js process<br>[31:12] from a nojs process, the permission<br>[31:15] model flags are inherit. So if you don't<br>[31:17] have access to the parent, you don't<br>[31:19] have in the child. But you can print<br>[31:21] that on a bash script. Yeah, exactly.<br>[31:24] That's literally what I was going to<br>[31:25] say, which is what they did. They<br>[31:26] spawned, you know, the the<br>[31:28] >> the inheriting mechanism is environment<br>[31:30] variables, which you can override when<br>[31:31] you launch anything<br>[31:35] >> like there's no there's no way in<br>[31:36] computers to like only allow you to<br>[31:40] launch like to force you to to propagate<br>[31:43] those that policy down. So, it's just<br>[31:45] it's not effective in that regard.<br>[31:49] >> Yeah, that makes sense.<br>[31:50] >> Yeah. So I I feel like there are<br>[31:51] improvements here and I think there's<br>[31:53] probably user experience things that we<br>[31:55] could talk about on how to make policy<br>[31:58] API more functional for real projects.<br>[32:02] Right? Again all four of this like let's<br>[32:05] >> give some people some suggestions on how<br>[32:07] they can do it a little better. But I<br>[32:08] look at things, you know, like um like<br>[32:11] Lavaote and uh what's the other one that<br>[32:15] uh uh<br>[32:18] >> SCS<br>[32:19] >> chain guards thing or well yeah<br>[32:22] whatever. Like there's a<br>[32:23] >> chain no chain guards thing is just like<br>[32:25] uh<br>[32:26] >> I was trying to broaden<br>[32:27] >> they're giving you images that have been<br>[32:29] checked already.<br>[32:30] >> Sorry. I was trying to broaden the<br>[32:31] umbrella. Yeah. So all of these things<br>[32:34] that sit outside of this that are trying<br>[32:36] to help improve, right? So chain guard's<br>[32:39] thing is one check, right? There's the I<br>[32:41] think uh node source has some verified<br>[32:43] modules thing as well. Uh<br>[32:47] >> so has a wrapper.<br>[32:48] >> Socket has a rapper. All these things<br>[32:50] that sit outside are great additions to<br>[32:53] the ecosystem that we can recommend, but<br>[32:55] they don't work for everybody because<br>[32:57] they will have different levels of<br>[33:00] opinions, right? like some things, you<br>[33:03] know, would if I tried to roll them out<br>[33:04] at work, nobody would be able to adopt<br>[33:06] them. It would break everything, right?<br>[33:08] And like I can't so I I'm my hands are<br>[33:10] tied. Even though it might be more<br>[33:12] secure, I can't do that, right? And so I<br>[33:14] think we'd all have a different list of<br>[33:16] what those things are. And so there's no<br>[33:20] like fundamental, you know, nugget<br>[33:22] there, whereas like permissions model<br>[33:24] enables it via the platform so that<br>[33:26] those people could take different<br>[33:29] opinions.<br>[33:29] >> Yeah. So there there's one thing that we<br>[33:32] are experimenting and that also b uh uh<br>[33:35] related a bit with a talk that toas did<br>[33:39] to node confl<br>[33:47] support to node.js JS that basically uh<br>[33:50] the the problem of the permission model<br>[33:52] is that we relies on file paths. We<br>[33:54] don't rely on on resource which means<br>[33:56] that if you spawn another process uh<br>[33:59] that could be rejected and there are<br>[34:01] many ways there are many educates you<br>[34:03] need to cover and most of the time you<br>[34:05] won't be able to cover all of them. uh<br>[34:08] uh but once you uh start start to<br>[34:10] restrict that by uh by the kernel uh<br>[34:13] using ebpf you you can be way more you<br>[34:16] can definitely create a sandbox for that<br>[34:19] uh if that's in the scope of node.js JS<br>[34:22] or not. Uh that's up to discussion<br>[34:25] because uh a lot a lot of companies they<br>[34:28] create a ecosystem around that and<br>[34:31] that's uh that's unrelated to the<br>[34:33] platform they're using. If they're using<br>[34:34] PHP, if they're using NodeJS, uh it just<br>[34:37] works. Uh but this is an research and<br>[34:40] there is one t that did for nodecom<br>[34:44] which is basically it creates a sandbox<br>[34:47] by the terminal. For each terminal<br>[34:49] process, they have a kind of uh uh<br>[34:53] mechanism that send box all the commands<br>[34:55] you run to to make it safer. Uh and that<br>[35:00] prevents some leak uh if you are trying<br>[35:03] to read from a file where you don't you<br>[35:05] don't have access or if you are trying<br>[35:07] to respond a process, it's kind kind of<br>[35:10] auditable. Uh but yeah, that's that's a<br>[35:13] long discussion.<br>[35:17] It sounds to me like we have enough for<br>[35:18] another session.<br>[35:20] Like, right. I mean, this feels we've<br>[35:23] just spent almost the entire meeting<br>[35:24] talking about these things. It feels<br>[35:26] like we have<br>[35:29] we could do them back toback or I don't<br>[35:31] know if people would be overwhelmed with<br>[35:33] too much security deep thinking. Um, but<br>[35:36] like it feels to me like there's a lot<br>[35:38] to talk about here.<br>[35:45] Do you want to I guess the action item<br>[35:47] here would be do we want to make another<br>[35:49] proposal? I can't run another thing.<br>[35:51] It's too late for me to sign up for<br>[35:52] that. But Raphael, I would totally be<br>[35:54] thereating.<br>[35:56] >> I actually would like to uh instead of<br>[35:59] creating a different proposal, we just<br>[36:01] extend your proposal a bit. Uh maybe uh<br>[36:05] from 30 minutes to 1 hour and then we<br>[36:08] start uh from npm and then we jump to<br>[36:11] no.js. you we you know because they<br>[36:14] overlap a bit uh and uh I don't like<br>[36:17] context switching. So imagine going to a<br>[36:20] different meeting you know like maybe we<br>[36:22] can find good things there.<br>[36:25] >> That works for me. Uh James is my uh<br>[36:30] volunteer on partnering on that and he<br>[36:31] is not here. Um but I could start a DM<br>[36:34] maybe<br>[36:36] >> with you and him and just say hey we<br>[36:38] were on the security thing. He's I mean<br>[36:40] he's you know pretty flexible here I<br>[36:42] think but he was definitely more focused<br>[36:43] on the publishing aspect because you<br>[36:46] know they he was looking at pinos and<br>[36:48] Matteo had you know<br>[36:50] >> we have been discussing that for a fest<br>[36:52] five.<br>[36:52] >> Yeah that's what I that was why he was<br>[36:54] you know into it. Um<br>[36:55] >> well and I'm not going to as I told you<br>[36:57] Wes like I'm not going to precommmit to<br>[36:59] doing organizational work on it but like<br>[37:01] I will be as available as you need<br>[37:04] during the session.<br>[37:06] >> Yeah.<br>[37:07] >> To help in whatever way.<br>[37:08] >> Okay. That that Yeah. So sounds like<br>[37:09] maybe yeah I'll just start a DM<br>[37:13] maybe with anybody who wants to be a<br>[37:16] part of just being you know ensuring<br>[37:18] that we have the right uh uh scope set<br>[37:23] for it and then uh yeah if we make it an<br>[37:26] hour<br>[37:27] you know we can I can<br>[37:30] I can help I I won't be in person but I<br>[37:33] can definitely help with uh uh<br>[37:36] discussions and uh you<br>[37:39] bring some ideas.<br>[37:42] >> Cool. Uh, okay. I'll start a DM uh right<br>[37:44] after we're done with the call.<br>[37:52] >> Okay, I think that was actually our well<br>[37:56] beyond our official agenda. Uh, is there<br>[37:59] any other things that folks want to<br>[38:00] discuss in the few minutes we've got<br>[38:02] last left?<br>[38:06] Uh maybe a public uh happy uh birthday<br>[38:09] for Robbie.<br>[38:11] >> A thank you<br>[38:14] again. All my favorite peeps community<br>[38:16] day.<br>[38:19] >> Awesome. All righty. On that positive<br>[38:22] note, I think we'll adjourn. Uh thank<br>[38:24] you all. Uh see you next week. Bye.<br>[38:26] >> Thanks all. <!-- deep-read:sections end -->