Posted in Cloud & Infrastructure, Cybersecurity

Google Zanzibar Explained: Relationship-Based Authorization and Its Open-Source Heirs, SpiceDB and OpenFGA

Role-based access control works until your product grows sharing: a document shared with a team, inside a folder shared with an organization, with one person blocked. At that point, permissions stop being a table of roles and become a graph of relationships. Google’s Zanzibar paper, published in 2019, described how Google handles that graph for services such as Drive, Calendar, YouTube, and Cloud. This explainer covers how Zanzibar works and how its two best-known open-source descendants, SpiceDB and OpenFGA, bring the model to everyone else.

At a Glance

SpecDetail
What Zanzibar isGoogle’s global system for storing and evaluating access control lists
PublishedUSENIX Annual Technical Conference (ATC ’19), 2019
ModelRelationship-based access control (ReBAC) built on relation tuples
Scale reported in the paper2+ trillion relation tuples, 10+ million client queries per second, 95th-percentile latency under 10 ms, availability above 99.999% over 3 years
Open-source implementationsSpiceDB (Apache-2.0) and OpenFGA (Apache-2.0, a CNCF project)
Best forProducts with sharing, nested groups, and hierarchies of resources

Short Verdict

If your permission rules sound like “anyone who can view the parent folder can view this file” or “members of a team inherit the team’s access,” a Zanzibar-style system models them directly instead of through ever-growing role tables. You do not need Google’s scale to benefit: SpiceDB and OpenFGA give you the data model and APIs as open source. The cost is a new piece of infrastructure to run and keep in sync with your application data, so simple apps with a handful of fixed roles are still better off with plain RBAC.

The Data Model: Relation Tuples

Zanzibar stores every permission fact as a relation tuple written object#relation@user. The paper’s example doc:readme#owner@10 means user 10 is an owner of the document readme. Objects are written namespace:object_id, and the “user” side can be either a user ID or a userset, which is another object#relation pair. That is what makes nested groups possible: a tuple can say “members of group X are viewers of this document,” and group membership is itself stored as tuples.

Each client defines a namespace configuration that lists its relations, such as owner, editor, and viewer, and optional userset rewrite rules that derive access instead of storing it. The paper describes three building blocks: _this (users stored directly on the relation), computed_userset (for example, every owner is also an editor, and every editor is also a viewer), and tuple_to_userset (for example, viewers of a document’s parent folder can view the document). These combine with union, intersection, and exclusion, which is how one small configuration expresses an entire permission hierarchy.

The APIs

APIWhat it does
CheckAnswers “does this user have this relation to this object?” at a sufficiently fresh snapshot
ReadReturns stored tuples matching a filter, without applying rewrite rules
WriteAdds or removes tuples, with optimistic concurrency for read-modify-write
WatchStreams tuple changes in timestamp order, so other systems can stay in sync
ExpandReturns the full effective userset as a tree, useful for building search indexes

The Hard Part: The “New Enemy” Problem and Zookies

One of the paper’s central ideas is how it keeps authorization consistent with content. Its example: Alice removes Bob from a folder, then adds new documents to it. If the system evaluates Bob’s access against an old copy of the permissions, Bob could see documents he should never see. Zanzibar calls this the “new enemy” problem. It solves it with external consistency built on Google Spanner’s timestamps, plus an opaque token called a zookie. When content changes, the client asks Zanzibar for a zookie encoding the current time and stores it with the content. Later checks send that zookie, guaranteeing evaluation against permissions at least that fresh, while most checks can still be answered quickly from nearby replicas.

For deeply nested groups, where following pointers one hop at a time gets slow, the paper describes a specialized index called Leopard that precomputes group-to-group and member-to-group sets so membership becomes a set intersection.

SpiceDB vs OpenFGA

SpiceDBOpenFGA
Relationship to ZanzibarDescribes itself as the most mature open-source project inspired by Zanzibar; aims to stay true to the paperInspired by Zanzibar; ReBAC that can also express RBAC and some ABAC
LicenseApache-2.0Apache-2.0
GovernanceCreated by AuthZed; open-sourced September 2021Owned by the Cloud Native Computing Foundation
ModelingSchema language defining object types, relations, and permissionsAuthorization models built from type definitions and relationship tuples
ConsistencyConfigurable per request, designed to prevent the new enemy problemSupports contextual tuples supplied per request
Conditions / attributesSee SpiceDB docsConditional relationship tuples using CEL expressions
StoragePluggable: in-memory, Spanner, CockroachDB, PostgreSQL, MySQLSee OpenFGA docs for supported datastores

Pros

Permissions live in one service with one model, instead of being re-implemented in every microservice. Sharing, nested teams, and resource hierarchies are expressed directly rather than through role explosion. The Check API gives every service the same answer, and Watch-style change streams let search indexes respect permissions. Both leading implementations are permissively licensed open source.

Cons

It is another critical, latency-sensitive service to operate, and an outage blocks every access decision. Your application must write relationship tuples whenever ownership or membership changes, and drift between app data and authorization data becomes a new class of bug. Consistency tokens add complexity that teams need to understand to use correctly. For a small app with a few fixed roles, this is more machinery than the problem requires.

Bottom Line

Zanzibar showed that a single relationship-based model can cover permissions for products used by billions of people while staying fast and consistent. If your product has sharing and hierarchies, its model is worth adopting through SpiceDB or OpenFGA; prototype your permission rules in either tool’s schema and see whether they read more clearly than your current role checks. If they do not, plain RBAC is still fine.

Frequently Asked Questions

  • Is Zanzibar available to use? Zanzibar itself is internal to Google; SpiceDB and OpenFGA are open-source systems inspired by its paper.
  • What is a relation tuple? A stored fact of the form object#relation@user, such as “user 10 is an owner of doc readme.”
  • What is the new enemy problem? Evaluating access against stale permissions, so a removed user can see content added after the removal. Zanzibar prevents it with consistency tokens called zookies.
  • Is ReBAC a replacement for RBAC? It is a superset: roles can be modeled as relations, and OpenFGA notes its model can express RBAC and some ABAC scenarios.

Sources

Posted in Artificial Intelligence, Cybersecurity

AI-Generated Code Security in 2026: The Risks, the Evidence, and a Review Checklist for Teams

AI coding assistants have become part of everyday development, and for many teams the security question has moved from “is this allowed?” to “how do we review it?” This guide pulls together public evidence on how often AI-generated code is insecure, maps the risks to the OWASP Top 10 for LLM Applications, and ends with a practical review checklist grounded in NIST’s secure development guidance.

At a Glance

QuestionShort answer
How often is AI-written code insecure?In Veracode’s 2025 test of 100+ models on 80 tasks, 45% of samples introduced an OWASP Top 10 vulnerability
Worst weaknesses in that testCross-site scripting (failed 86% of the time) and log injection (failed 88%)
Riskiest language in that testJava, with a failure rate above 70%
Do newer or bigger models fix it?Not according to Veracode: security did not improve with newer or larger models
Most relevant OWASP LLM risksLLM05 Improper Output Handling, LLM06 Excessive Agency, LLM03 Supply Chain, LLM01 Prompt Injection
Process framework to anchor onNIST SSDF (SP 800-218) plus its AI profile, SP 800-218A

Short Verdict

Treat AI-generated code exactly like code from a fast, confident junior developer who has never seen your threat model: useful, often correct, and frequently insecure in predictable ways. The evidence says model upgrades will not solve this on their own, so the fix is process. Keep a human reviewer accountable for every merge, run static analysis and dependency checks on every pull request, and limit what coding agents are allowed to do without approval.

What the Evidence Says

One of the most widely reported recent datasets is Veracode’s 2025 GenAI Code Security Report, released July 30, 2025. Veracode gave more than 100 large language models 80 curated code-completion tasks, each tied to a known weakness in MITRE’s CWE list, and checked whether the output was secure. In 45% of cases the model introduced a vulnerability from the OWASP Top 10; put another way, when a secure and an insecure approach were both available, the models chose the insecure one 45% of the time. Java fared worst, failing more than 70% of the time, while Python, C#, and JavaScript ranged from 38% to 45%. Two weakness classes stood out: models failed to defend against cross-site scripting (CWE-80) in 86% of relevant cases and against log injection (CWE-117) in 88%. Veracode also reported that newer models wrote more syntactically correct code without becoming more secure, and that larger models did not perform significantly better than smaller ones.

Two caveats keep this in proportion. These are vendor-run benchmark tasks, not a measurement of production codebases, and Veracode sells application security testing. Even so, the specific failures it reports, such as unescaped output and unsanitized log input, are exactly the kinds of flaws a review process can be designed to catch.

Mapping the Risks to the OWASP Top 10 for LLM Applications

OWASP’s 2025 list was written for applications built on language models rather than for coding assistants specifically, but several entries translate directly to AI-assisted development. The mapping below is our interpretation of how each risk shows up in a coding workflow.

OWASP risk (2025)How it shows up in AI-assisted coding
LLM05 Improper Output HandlingGenerated code is merged or executed without validation, carrying injection flaws straight into the codebase
LLM06 Excessive AgencyCoding agents with shell, file-write, or push permissions can make changes no one reviewed
LLM03 Supply ChainSuggested packages and dependencies may be outdated, malicious, or not exist at all
LLM01 Prompt InjectionUntrusted text in issues, comments, or repository files can steer an agent toward harmful actions
LLM02 Sensitive Information DisclosureSecrets or proprietary code pasted into prompts, or credentials hard-coded in suggestions
LLM09 MisinformationPlausible but wrong API usage or security advice accepted without verification

The Process Anchor: NIST SSDF and SP 800-218A

NIST’s Secure Software Development Framework (SP 800-218) is the most widely referenced baseline for secure development practices. In July 2024 NIST published SP 800-218A, “Secure Software Development Practices for Generative AI and Dual-Use Foundation Models: An SSDF Community Profile,” which adds AI-specific practices and is meant to be used alongside the SSDF, not instead of it. Its stated audience is producers of AI models, producers of AI systems that use those models, and acquirers of those systems. For a team that only uses coding assistants, the practical takeaway is simpler: AI-written code goes through the same SSDF controls as any other code, with no exemptions for where it came from.

The Review Checklist

  • A named human owns every merge. The person who accepts AI-generated code is accountable for it exactly as if they had typed it.
  • Static analysis on every pull request. Run SAST with rules for the weaknesses AI code gets wrong most often, especially output encoding (XSS) and log injection.
  • Verify every new dependency. Confirm a suggested package exists, is the one you meant, is maintained, and passes your software composition analysis before it lands in a lockfile.
  • Scan for secrets. Block commits that contain keys or tokens, and keep secrets out of prompts.
  • Limit agent permissions. Give coding agents the least privilege they need, require approval before they push, merge, or run destructive commands, and keep logs of what they did.
  • Treat repository text as untrusted input to agents. Issue bodies, comments, and files from outside contributors can contain instructions; do not let an agent act on them unreviewed.
  • Require tests for generated logic. Ask for tests alongside code, and review the tests as critically as the code.
  • Track provenance. Label or note AI-assisted changes so you can find them quickly if a pattern of flaws turns up later.

Pros and Cons of Leaning on AI for Code

  • Pros: faster first drafts, quick boilerplate and tests, and agents that can take on routine fixes, which frees reviewers to focus on design and risk.
  • Cons: predictable security gaps that benchmark data says are not shrinking with newer models, new supply-chain and prompt-injection exposure through agents, and a risk that reviewers rubber-stamp code that looks clean.

Bottom Line

AI code generation is a productivity tool, not a security control. The best available evidence suggests close to half of AI-written samples carry a well-known weakness, and that waiting for better models is not a plan. Put AI-generated code through the same SSDF-style gates as everything else, add dependency verification and agent permission limits on top, and keep a human accountable for every merge. For a look at one of the most widely used assistants, see our GitHub Copilot review.

Frequently Asked Questions

  • Is AI-generated code less secure than human code? The benchmark data here measures AI output against secure-coding tasks, not against human developers, so it shows AI code is often insecure but does not directly compare it with people.
  • Which vulnerabilities do AI assistants introduce most? In Veracode’s 2025 test, cross-site scripting and log injection had the highest failure rates, at 86% and 88%.
  • Will a newer model fix this? Veracode found security did not improve with newer or larger models, so plan on review and scanning regardless of model.
  • What framework should we follow? NIST’s SSDF (SP 800-218), with the SP 800-218A profile for organizations that build or acquire AI systems.

Sources

Posted in Cybersecurity, software

Bitwarden Review: Features, Pricing, and Whether the Free Plan Is Enough in 2026

Get Bitwarden: Visit the official Bitwarden pricing page →

At a Glance

SpecValue
Free planYes — unlimited passwords and unlimited devices for 1 user
Premium$19.80/year ($1.65/month, billed annually)
Families$47.88/year for up to 6 premium accounts
BusinessTeams $4/user/month; Enterprise $6/user/month (billed annually)
Best forAnyone who wants a capable password manager without paying, or a cheap upgrade

Short Verdict

Bitwarden’s free plan is one of the few free password managers that does not ration the basics: it syncs unlimited passwords across unlimited devices, and it includes passkey management, a password generator, and two-step login. Premium, at $19.80 a year, is cheap enough that the decision is less about price and more about whether you want a built-in authenticator, encrypted file attachments, emergency access, and vault health reports. For households and small businesses the per-user prices are also low. The main trade-off is polish rather than capability; if you want the most refined apps and are happy to pay more, see our 1Password review.

What Bitwarden Is

Bitwarden is an open-source password manager that stores your logins, notes, cards, and identities in an encrypted vault. It uses zero-knowledge encryption, meaning your vault is encrypted on your device and Bitwarden does not hold the key to read it. It runs as browser extensions plus mobile and desktop apps, and organizations can choose to self-host it instead of using Bitwarden’s cloud.

Pricing Breakdown

PlanPriceUsersKey inclusions
Free$01Unlimited passwords and devices, passkeys, password generator, two-step login, phishing protection, encrypted export, Bitwarden Send, free sharing with one other user
Premium$19.80/year1Integrated authenticator (TOTP), 5GB encrypted file attachments, emergency access, vault health reports and alerts, priority support
Families$47.88/yearUp to 66 premium accounts, unlimited sharing and collections, organization storage
Teams$4/user/monthPer userCentralized management, secure credential sharing, event logs, directory sync, SCIM provisioning
Enterprise$6/user/monthPer userEverything in Teams plus granular access control, passwordless SSO, enterprise policies, self-hosting, and a free Families plan for every user

All prices are in USD on annual billing, before tax. Bitwarden lists free trials for Families, Teams, and Enterprise; the Enterprise trial is described as 14 days, while the pricing page does not state trial lengths for the other plans. Larger organizations can ask sales for a custom plan.

Free vs Premium: What Actually Changes

For most individuals the free plan covers daily use: you get every password on every device, autofill, passkeys, and secure sharing with one other person. Premium adds four things worth paying for. The integrated authenticator stores your two-factor codes next to the matching login, which is convenient but means one vault holds both factors, a trade-off some security-minded users prefer to avoid. Encrypted attachments (5GB) let you store documents such as scanned IDs. Emergency access lets a trusted person request your vault if something happens to you. Vault health reports flag weak, reused, and exposed passwords, which is the feature most likely to improve your actual security.

Pros

The free tier has no password or device caps, which is unusual among mainstream password managers. Premium costs less than $2 a month, and the Families plan spreads six premium accounts over $47.88 a year. The code is open source and the company offers self-hosting, so organizations that cannot store credentials in a vendor cloud still have an option. Enterprise includes a free Families plan for every employee, which encourages staff to protect personal accounts too.

Cons

Free sharing is limited to one other user, so a family or small team will need Families or Teams to share collections properly. Vault health reports, which help you find weak and reused passwords, are a Premium feature. The pricing page is not completely clear about which comparison rows are Premium-only, so check the specific feature you need before upgrading. Business pricing is billed annually per user, so a team that changes size often should account for that when budgeting.

Who It’s a Good Fit For

Individuals who want a real password manager for free, households that want premium features for everyone at under $4 a month, and small businesses that need shared vaults, event logs, and SCIM provisioning at $4 per user. It is also one of the few mainstream choices for organizations that require self-hosting.

Who Should Look Elsewhere

People who would rather pay more for a different set of apps and features may prefer 1Password; our 1Password review compares the two. If you share many logins with several people and do not want to pay at all, the free plan’s one-person sharing limit will get in the way.

Bottom Line

Bitwarden is the easiest password manager to recommend on value. The free plan is enough for most individuals, Premium at $19.80 a year is worth it mainly for vault health reports and emergency access, and the Families and Teams plans are priced well below most competitors. Start free, and upgrade only when you need sharing or the Premium reports.

Frequently Asked Questions

  • Is Bitwarden really free? Yes. The free plan is permanent and includes unlimited passwords on unlimited devices for one user.
  • How much is Bitwarden Premium? $19.80 per year, which works out to $1.65 a month.
  • Can I self-host Bitwarden? Yes. Self-hosting is listed on the Enterprise plan, and the pricing page also mentions self-host options for Premium users.
  • What does the Families plan cost? $47.88 per year for up to 6 users, each with premium features.

Sources

Posted in Cybersecurity, software

NordVPN vs ExpressVPN in 2026: Plans, Real Renewal Prices, and Which One to Pick

NordVPN and ExpressVPN are the two VPNs most buyers end up choosing between, and in 2026 both have moved well beyond a plain VPN subscription: each now sells three tiers that bundle password managers, identity monitoring, and insurance on top of the tunnel itself. We pulled both companies’ official pricing pages on October 28, 2026 to compare what each tier costs up front, what it renews at, and what you actually get.

At a Glance

SpecNordVPNExpressVPN
TiersBasic, Complete, PrimeBasic, Advanced, Express Pro
Cheapest long-term intro price$3.49/mo (Basic, 2-year: $94.23 for first 27 months)$2.99/mo (Basic, 2-year: $83.72 for first 28 months)
Entry-tier renewal$139.08/year$99.95/year
Simultaneous devices10 on every plan10 / 12 / 14 by tier
Money-back guarantee30 days30 days (new users)
Best forBuyers who want antivirus and 1TB cloud storage bundled inBuyers who want the lowest renewal price on a plain VPN

Short Verdict

If you just want a VPN and plan to keep it past the first term, ExpressVPN’s Basic plan is the cheaper long-term buy: it renews at $99.95 a year against NordVPN Basic’s $139.08. NordVPN pulls ahead once you want the extras, because its middle Complete tier bundles a desktop antivirus, an ad and tracker blocker, a password manager, and 1TB of encrypted cloud storage. Both companies advertise steep first-term discounts, so the number that matters for budgeting is the renewal price, not the headline monthly rate.

NordVPN Pricing

PlanMonthly billing1-year intro2-year introRenewal
Basic$14.99/mo$4.99/mo ($74.85 for 15 months)$3.49/mo ($94.23 for 27 months)$139.08/year
Complete$19.99/mo$5.99/mo ($89.85 for 15 months)$3.99/mo ($107.73 for 27 months)$219.48/year
Prime$29.99/mo$8.99/mo ($134.85 for 15 months)$6.99/mo ($188.73 for 27 months)$296.28/year

NordVPN’s 1-year and 2-year terms each include 3 extra months, which is why the first billing period is 15 or 27 months. When we checked, the pricing page was also running a Black Friday promotion, so the intro rates above may change after the sale ends; the renewal prices are the more stable figures. Every plan covers 10 devices at once. Basic is the VPN plus scam and phishing protection. Complete adds a next-generation desktop antivirus, a desktop ad and tracker blocker, email link protection, a cross-platform password manager, 1TB of encrypted cloud storage, Dark Web Monitor Pro, and bank transaction monitoring for US accounts. Prime adds identity-protection services on top: credit freeze assistance, up to $1M in identity theft insurance, up to $100K in cyber extortion insurance, 1-bureau credit monitoring, and a VantageScore 3.0 credit score.

ExpressVPN Pricing

Plan2-year introFirst 28 monthsRenewalDevices
Basic$2.99/mo$83.72$99.95/year10
Advanced$4.49/mo$125.72$119.95/year12
Express Pro$7.49/mo$209.72$199.95/year14

ExpressVPN’s VPN network covers servers in 113 countries on every plan. Basic includes a lighter threat-protection layer that blocks ads, malicious sites, and adult sites, plus a small ExpressMailGuard email-alias allowance. Advanced adds tracker blocking, the ExpressKeys password manager with a 2FA authenticator, and Identity Defender with data removal and up to $3M in identity theft insurance. Express Pro includes a dedicated IP (an add-on on the lower tiers), unlimited email aliases with 20 custom domains, up to $5M in insurance, and ExpressAI, the company’s bundled AI assistant. The pricing page we checked only listed 2-year terms, so we have not quoted monthly or 1-year prices for ExpressVPN.

Where They Actually Differ

The biggest practical gap is at renewal. Over a long subscription, ExpressVPN Basic costs roughly $39 a year less than NordVPN Basic, and ExpressVPN Advanced still renews below NordVPN Basic. The second gap is what each company bundles at the middle tier: NordVPN Complete leans toward device security (antivirus, ad blocking, cloud storage), while ExpressVPN Advanced leans toward identity protection (data removal and insurance). Device limits also differ: NordVPN gives every tier 10 devices, while ExpressVPN scales from 10 to 14 as you move up. Neither identity-insurance figure is a reason to buy on its own, since coverage terms and eligibility can be limited by country (NordVPN’s bank transaction monitoring, for example, is US-only), so read each company’s terms before relying on it.

Pros and Cons

  • NordVPN pros: Complete tier bundles a desktop antivirus, password manager, and 1TB of encrypted storage; 10 devices on every plan; 1-year and 2-year terms include 3 bonus months. Cons: highest renewal prices of the two at every tier; ad and tracker blocking is not in Basic.
  • ExpressVPN pros: lowest renewal price for a plain VPN; device limit rises to 14 on Express Pro; dedicated IP included on the top tier. Cons: the cheapest plan’s protection layer is a lighter version; pricing page only showed 2-year terms when we checked.

Bottom Line

Pick ExpressVPN Basic if you want a VPN and nothing else and expect to renew, since its $99.95 renewal is the cheapest long-term option here. Pick NordVPN Complete if you would otherwise pay separately for an antivirus, a password manager, and cloud storage, because the bundle covers all three. Whichever you choose, budget around the renewal price, set a reminder before the first term ends, and use the 30-day money-back window to test speeds on your own connection.

Frequently Asked Questions

  • Which is cheaper after the first term? ExpressVPN. Its Basic plan renews at $99.95/year versus $139.08/year for NordVPN Basic.
  • How many devices can I use? NordVPN allows 10 on every plan; ExpressVPN allows 10, 12, or 14 depending on tier.
  • Do both offer refunds? Yes. Both advertise a 30-day money-back guarantee; ExpressVPN specifies it is for new users.
  • Are the intro prices permanent? No. They apply to the first term only, and NordVPN’s were part of a Black Friday promotion when we checked on October 28, 2026.

Sources