GSoC 2026: Idea #8 — Native Windows Sandbox using AppContainer #20868
AnushkaPandit-21
started this conversation in
Ideas
Replies: 1 comment
-
Architecture deep-diveFor anyone interested in the technical details, I've documented the full Win32 API call sequence in the PoC README. The key insight is that AppContainer cannot be a shell wrapper like
This is fundamentally different from the macOS path where |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Interest & Background
Hi, I'm Anushka Pandit (@AnushkaPandit-21), a final-year CS student at BITS Pilani. I'm interested in working on Idea #8: Native Windows Sandbox using AppContainer for GSoC 2026.
I develop on Windows 11 and have experience with Win32 security APIs, Node-API/node-gyp, and TypeScript.
Working Proof of Concept
I've built a fully functional PoC that demonstrates AppContainer sandboxing through a C++ Node-API addon:
Repository: https://github.com/AnushkaPandit-21/appcontainer-node-sandbox
What's implemented and tested:
AppContainer process isolation:
CreateAppContainerProfile/DeleteAppContainerProfilefor profile lifecycleSetNamedSecurityInfo+SetEntriesInAclfor per-path filesystem ACLsCreateProcessWwithPROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIESfor sandboxed process spawningInternetClient,InternetClientServer,PrivateNetworkClientServer)WFP network isolation:
FwpmEngineOpen0+FwpmFilterAdd0for block-all outbound filter (weight=1)TypeScript integration layer:
createSandbox()/runInSandbox()/destroySandbox()API matching sandbox.ts expectationsbuildConfig()withopen/proxiednetwork profiles mirroring Seatbelt profile selectionAppContainerErrorwith Win32 error codesTest results on Windows 11:
Test A — write to C:\Windows\ (should be BLOCKED)
PASS AppContainer blocked write to C:\Windows\
Test B — write to ACL-granted directory (should SUCCEED)
PASS AppContainer wrote successfully to ACL-granted directory
Seatbelt Parity
I've mapped every macOS Seatbelt restriction to its AppContainer equivalent:
(deny file-write*)(allow file-write* (subpath X))SetNamedSecurityInfogrants write(allow network-outbound)— openInternetClientcapability SID(deny network-outbound)+ proxyIntegration Points
I've identified three hook points in the codebase:
sandboxConfig.ts:getSandboxCommand()— addwin32 → 'appcontainer'sandbox.ts:start_sandbox()— addappcontainerdispatch branchVALID_SANDBOX_COMMANDS— add'appcontainer'to the union typeMy Contributions So Far
test(core): add missing tests for errorClassificationfeat(sandbox): add Windows platform detection in sandboxConfig.ts&&bug)Questions for Mentors
packages/windows-sandbox/package or insidepackages/cli/?I'd appreciate any guidance from @gaurghosh or the sandbox team. Happy to answer questions about the implementation approach.
Beta Was this translation helpful? Give feedback.
All reactions