Commit 289d5a5
fix(inference): authenticate managed llama.cpp bridge (#9670)
## Summary
- replace the managed llama.cpp raw TCP bridge with an HTTP bridge that
enforces one Bearer credential
- pass the managed API key through inherited file descriptor 3 after
validating the key file's ownership, mode, type, link count, and
identity
- preserve unauthenticated lifecycle probing only for exact `GET
/health`
- replace legacy pre-authentication bridge processes during lifecycle
recovery
- add focused coverage for missing, invalid, duplicate, and valid
credentials, health-route boundaries, upstream failure, descriptor
inheritance, legacy replacement, and secure credential-file validation
## Root cause
The managed llama.cpp container required its configured API key, but the
host bridge was a transparent TCP proxy. Requests to the host loopback
listener therefore reached the container without bridge-layer
authentication and could bypass the intended managed-route boundary.
## Impact
Requests to the managed bridge now fail closed unless they carry exactly
one valid Bearer credential. The credential is never placed in process
arguments or environment variables. The exact health probe remains
available to lifecycle management, and resume/recovery replaces older
bridge processes that lack the authenticated mode marker.
## Validation
- 73 focused Vitest tests passed
- `npm run typecheck:cli` passed
- `npm run checks:repository` passed
- targeted Oxlint passed
- commit hooks, repository checks, and secret scanning passed
- verified live on NVIDIA DGX Spark with managed llama.cpp and Muse
Glimmer; detailed credential-redacted proof is included in a PR comment
Fixes #9591
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Security Enhancements**
* Added API-key authentication for private bridge connections.
* Restricted health checks to unauthenticated access while protecting
other requests.
* Added secure validation and handling for API-key files.
* Standardized authorization forwarding and improved error responses.
* **Bug Fixes**
* Private bridge startup now uses the configured API-key path.
* Improved handling of invalid credentials and upstream connection
failures.
* Strengthened pull request validation to prevent mismatched workflow
revisions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Co-authored-by: Senthil Ravichandran <senthilr@nvidia.com>1 parent f708a36 commit 289d5a5
7 files changed
Lines changed: 573 additions & 61 deletions
File tree
- .github/workflows
- src/lib/onboard/runtime-provider
- test/e2e/support
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | 31 | | |
41 | | - | |
42 | 32 | | |
43 | 33 | | |
44 | 34 | | |
| |||
48 | 38 | | |
49 | 39 | | |
50 | 40 | | |
51 | | - | |
52 | 41 | | |
53 | 42 | | |
54 | 43 | | |
55 | | - | |
56 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
57 | 51 | | |
58 | 52 | | |
59 | 53 | | |
| |||
89 | 83 | | |
90 | 84 | | |
91 | 85 | | |
92 | | - | |
93 | | - | |
94 | | - | |
| 86 | + | |
95 | 87 | | |
96 | 88 | | |
97 | 89 | | |
| |||
101 | 93 | | |
102 | 94 | | |
103 | 95 | | |
104 | | - | |
| 96 | + | |
105 | 97 | | |
106 | | - | |
| 98 | + | |
107 | 99 | | |
108 | 100 | | |
109 | 101 | | |
| |||
115 | 107 | | |
116 | 108 | | |
117 | 109 | | |
118 | | - | |
| 110 | + | |
119 | 111 | | |
120 | 112 | | |
121 | 113 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
405 | 405 | | |
406 | 406 | | |
407 | 407 | | |
| 408 | + | |
408 | 409 | | |
409 | 410 | | |
410 | 411 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
962 | 962 | | |
963 | 963 | | |
964 | 964 | | |
| 965 | + | |
965 | 966 | | |
966 | 967 | | |
967 | 968 | | |
| |||
Lines changed: 163 additions & 24 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
4 | 7 | | |
5 | 8 | | |
6 | 9 | | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
7 | 19 | | |
8 | 20 | | |
9 | 21 | | |
| |||
53 | 65 | | |
54 | 66 | | |
55 | 67 | | |
| 68 | + | |
56 | 69 | | |
57 | 70 | | |
58 | 71 | | |
| |||
63 | 76 | | |
64 | 77 | | |
65 | 78 | | |
| 79 | + | |
66 | 80 | | |
67 | 81 | | |
68 | 82 | | |
| |||
83 | 97 | | |
84 | 98 | | |
85 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
86 | 233 | | |
87 | 234 | | |
| 235 | + | |
88 | 236 | | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
| 237 | + | |
| 238 | + | |
108 | 239 | | |
109 | 240 | | |
110 | | - | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
111 | 245 | | |
112 | 246 | | |
113 | 247 | | |
| |||
130 | 264 | | |
131 | 265 | | |
132 | 266 | | |
133 | | - | |
134 | | - | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
135 | 275 | | |
136 | 276 | | |
137 | | - | |
138 | | - | |
| 277 | + | |
139 | 278 | | |
0 commit comments