~/blog/tag/security
Beveiliging
Over beveiliging, privacy en het bouwen van veilige systemen.
Waar ik over schrijf
Beveiliging op deze site komt in twee smaken voorbij. De nieuwe, waarbij het risico-oppervlak gevormd wordt door AI en agents, en de oude, waarbij de vraag is wie eigenaar is van je data en je infrastructuur.
De AI-variant dekt het grootste deel van de recente stukken. Agents die rechtstreeks in productie aan de slag gaan, prompt injection in tools waarvan je was vergeten dat ze openstonden, en het tragere probleem van beveiligingsschuld die zich stil ophoopt in AI-gegenereerde code die niemand zin heeft om te auditen. Eén op de vier van die commits is inmiddels het probleem van iemand anders.
De oude variant is niet weggegaan. Je moet nog steeds weten waar je data staat, wie er toegang toe heeft, en wat er gebeurt als de SaaS waar je van afhankelijk bent zijn mening over jouw tier verandert. De self-hosting-stukken zijn geen nostalgie. Ze gaan over controle, en daar steunt beveiliging uiteindelijk op.
Allebei stellen dezelfde vraag. Wat doet een capabele aanvaller met wat je vandaag bouwt, zes maanden later, als je er niet meer scherp op let? De meeste stukken onder deze tag zijn een variant op die vraag.
Voor het AI-deel van dat verhaal is er nu een vaste route: de gids MCP en security.
beste startpunten
- Prompt injection voorkomen: verdediging voor wie agents bouwt
De verdediging die standhoudt. Niet de demo met de vergiftigde webpagina, maar het aanvalsoppervlak van je eigen setup.
- Er zat niemand achter het stuur: de eerste inbraak die een agent zelf uitvoerde
De eerste inbraak die een agent zelf uitvoerde. Vier pivots, één uur, geen mens aan het stuur.
- Claude Code permissions instellen: de gids die ik miste
Wat een agent mag, als één model: modes, allow- en deny-regels, hooks en de sandbox. De gids die ik zelf miste.
Je API-client heeft zojuist je coding agent ingesteld
Postman desktop installeert zonder te vragen plugins in Claude Code en Codex. Ik reproduceerde het op Linux, zonder account en zonder één klik, keek wat er bij het model aankwam en vond de fallback waarmee de app zijn eigen hook in Codex goedkeurt.
lees- 0/7schrijfpogingen voorbij de rol
Claude read-only toegang geven tot je database: rol, flag en Azure zonder wachtwoord
Elke SQL MCP-server belooft een read-only modus, en bij veertien ervan bleek die te omzeilen. Ik liet de bypasses los op een read-only rol in Postgres en SQL Server, en keek daarna wat er met diezelfde opzet gebeurt als je op Azure zonder wachtwoord inlogt.
- 14checkouts met instructies van dependencies
Je dependencies leveren een CLAUDE.md mee, en Claude Code leest hem
Ik heb in 40 repositories op mijn machine nagelopen welke instructiebestanden een Claude Code-sessie kunnen sturen. In 14 daarvan lagen in node_modules en vendor bestanden van package-maintainers die niemand controleert. Claude Code laadt ze zodra het een bestand ernaast leest.
Wie de patch leest, heeft de exploit
PHP kondigde een kritieke securityrelease aan, en er stond al een proof of concept online die remote code execution claimde voordat de fix er was. In dezelfde week ging Firefox zijn securitytests achterhouden en zette curl kleine bugs juist openbaar. Beide reageren op hetzelfde: een patch legt zijn eigen bug nu uit aan iedereen met een model.
- 14,5%agent-calls geblokkeerd
Claude Code auto mode: waarom je allow-regel voor Agent niets doet
In één repository blokkeerde de classifier van Claude Code auto mode in een maand 86 van de 594 subagents, vooral gewone code reviews. Agent op de allowlist zetten hielp niet, want auto mode gooit die regel weg zodra je de modus aanzet. Werd dezelfde prompt opnieuw gestuurd, dan ging hij 24 van de 26 keer wel door.
De upload kwam door de controle. De aanvaller ook.
Bricksforge controleerde of een upload een afbeelding was en liet daarna de browser bepalen waar de inhoud terechtkwam. De fout zat tussen twee stappen: een goede controle beschermde maar een deel van het proces.
Er sloeg geen agent op hol
De voorzitter van de FTC zegt dat AI-agents gereedschap zijn, en dat de developer die de opdracht gaf aansprakelijk is. Over het gereedschap heeft hij gelijk, over de opdracht niet. De sporen van de aanval op Hugging Face laten een agent zien die veel meer deed dan de opdracht vroeg.
Die tracker van OpenAI heb je zelf ingebouwd
Op webshops met de advertentiepixel van OpenAI stuurt je browser een cookie mee die aan je ChatGPT-account vastzit. Die pixel staat er omdat een developer een snippet in de head plakte, en de consent-flag uit de documentatie komt te laat om dat tegen te houden.
Plugin4Shell: een gepinde plugin is pas gepind als iets controleert wat er echt is uitgecheckt
Air liet zien dat Claude Code, Codex, Copilot en Gemini CLI git om de commit vroegen die een marketplace had gepind, zonder na te gaan of ze die ook echt kregen. Ik bouwde het na in git, zag Claude Code het weigeren en vond hetzelfde gat in mijn eigen CI-runner.
- 63%servers in laagste risicoband
Een MCP-beveiligingsscore is geen oordeel
Een MCP-beveiligingsscore ziet eruit als een uitspraak over een server. Gemeten over 74.101 servers is het meeste wat een scanner je vertelt een heuristiek, en wat je bijna nooit te zien krijgt, is dat niemand de broncode heeft gelezen.