@claude-flow/security 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agentic-flow/intelligence.json +16 -0
- package/README.md +234 -0
- package/__tests__/acceptance/security-compliance.test.ts +674 -0
- package/__tests__/coverage/base.css +224 -0
- package/__tests__/coverage/block-navigation.js +87 -0
- package/__tests__/coverage/coverage-final.json +11 -0
- package/__tests__/coverage/favicon.png +0 -0
- package/__tests__/coverage/index.html +161 -0
- package/__tests__/coverage/lcov-report/base.css +224 -0
- package/__tests__/coverage/lcov-report/block-navigation.js +87 -0
- package/__tests__/coverage/lcov-report/favicon.png +0 -0
- package/__tests__/coverage/lcov-report/index.html +161 -0
- package/__tests__/coverage/lcov-report/prettify.css +1 -0
- package/__tests__/coverage/lcov-report/prettify.js +2 -0
- package/__tests__/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/__tests__/coverage/lcov-report/sorter.js +210 -0
- package/__tests__/coverage/lcov-report/src/CVE-REMEDIATION.ts.html +838 -0
- package/__tests__/coverage/lcov-report/src/application/services/index.html +116 -0
- package/__tests__/coverage/lcov-report/src/application/services/security-application-service.ts.html +664 -0
- package/__tests__/coverage/lcov-report/src/credential-generator.ts.html +1189 -0
- package/__tests__/coverage/lcov-report/src/domain/entities/index.html +116 -0
- package/__tests__/coverage/lcov-report/src/domain/entities/security-context.ts.html +604 -0
- package/__tests__/coverage/lcov-report/src/domain/services/index.html +116 -0
- package/__tests__/coverage/lcov-report/src/domain/services/security-domain-service.ts.html +973 -0
- package/__tests__/coverage/lcov-report/src/index.html +206 -0
- package/__tests__/coverage/lcov-report/src/input-validator.ts.html +1483 -0
- package/__tests__/coverage/lcov-report/src/password-hasher.ts.html +895 -0
- package/__tests__/coverage/lcov-report/src/path-validator.ts.html +1660 -0
- package/__tests__/coverage/lcov-report/src/safe-executor.ts.html +1660 -0
- package/__tests__/coverage/lcov-report/src/token-generator.ts.html +1474 -0
- package/__tests__/coverage/lcov.info +3650 -0
- package/__tests__/coverage/prettify.css +1 -0
- package/__tests__/coverage/prettify.js +2 -0
- package/__tests__/coverage/sort-arrow-sprite.png +0 -0
- package/__tests__/coverage/sorter.js +210 -0
- package/__tests__/coverage/src/CVE-REMEDIATION.ts.html +838 -0
- package/__tests__/coverage/src/application/services/index.html +116 -0
- package/__tests__/coverage/src/application/services/security-application-service.ts.html +664 -0
- package/__tests__/coverage/src/credential-generator.ts.html +1189 -0
- package/__tests__/coverage/src/domain/entities/index.html +116 -0
- package/__tests__/coverage/src/domain/entities/security-context.ts.html +604 -0
- package/__tests__/coverage/src/domain/services/index.html +116 -0
- package/__tests__/coverage/src/domain/services/security-domain-service.ts.html +973 -0
- package/__tests__/coverage/src/index.html +206 -0
- package/__tests__/coverage/src/input-validator.ts.html +1483 -0
- package/__tests__/coverage/src/password-hasher.ts.html +895 -0
- package/__tests__/coverage/src/path-validator.ts.html +1660 -0
- package/__tests__/coverage/src/safe-executor.ts.html +1660 -0
- package/__tests__/coverage/src/token-generator.ts.html +1474 -0
- package/__tests__/credential-generator.test.ts +310 -0
- package/__tests__/fixtures/configurations.ts +419 -0
- package/__tests__/fixtures/index.ts +21 -0
- package/__tests__/helpers/create-mock.ts +469 -0
- package/__tests__/helpers/index.ts +32 -0
- package/__tests__/input-validator.test.ts +381 -0
- package/__tests__/integration/security-flow.test.ts +606 -0
- package/__tests__/password-hasher.test.ts +239 -0
- package/__tests__/path-validator.test.ts +302 -0
- package/__tests__/safe-executor.test.ts +292 -0
- package/__tests__/token-generator.test.ts +371 -0
- package/__tests__/unit/credential-generator.test.ts +182 -0
- package/__tests__/unit/password-hasher.test.ts +359 -0
- package/__tests__/unit/path-validator.test.ts +509 -0
- package/__tests__/unit/safe-executor.test.ts +667 -0
- package/__tests__/unit/token-generator.test.ts +310 -0
- package/dist/CVE-REMEDIATION.d.ts +86 -0
- package/dist/CVE-REMEDIATION.d.ts.map +1 -0
- package/dist/CVE-REMEDIATION.js +221 -0
- package/dist/CVE-REMEDIATION.js.map +1 -0
- package/dist/application/index.d.ts +7 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +7 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/services/security-application-service.d.ts +71 -0
- package/dist/application/services/security-application-service.d.ts.map +1 -0
- package/dist/application/services/security-application-service.js +153 -0
- package/dist/application/services/security-application-service.js.map +1 -0
- package/dist/credential-generator.d.ts +176 -0
- package/dist/credential-generator.d.ts.map +1 -0
- package/dist/credential-generator.js +272 -0
- package/dist/credential-generator.js.map +1 -0
- package/dist/domain/entities/security-context.d.ts +68 -0
- package/dist/domain/entities/security-context.d.ts.map +1 -0
- package/dist/domain/entities/security-context.js +132 -0
- package/dist/domain/entities/security-context.js.map +1 -0
- package/dist/domain/index.d.ts +8 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +8 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/services/security-domain-service.d.ts +71 -0
- package/dist/domain/services/security-domain-service.d.ts.map +1 -0
- package/dist/domain/services/security-domain-service.js +237 -0
- package/dist/domain/services/security-domain-service.js.map +1 -0
- package/dist/index.d.ts +119 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +145 -0
- package/dist/index.js.map +1 -0
- package/dist/input-validator.d.ts +306 -0
- package/dist/input-validator.d.ts.map +1 -0
- package/dist/input-validator.js +393 -0
- package/dist/input-validator.js.map +1 -0
- package/dist/password-hasher.d.ts +128 -0
- package/dist/password-hasher.d.ts.map +1 -0
- package/dist/password-hasher.js +183 -0
- package/dist/password-hasher.js.map +1 -0
- package/dist/path-validator.d.ts +148 -0
- package/dist/path-validator.d.ts.map +1 -0
- package/dist/path-validator.js +421 -0
- package/dist/path-validator.js.map +1 -0
- package/dist/safe-executor.d.ts +173 -0
- package/dist/safe-executor.d.ts.map +1 -0
- package/dist/safe-executor.js +370 -0
- package/dist/safe-executor.js.map +1 -0
- package/dist/token-generator.d.ts +224 -0
- package/dist/token-generator.d.ts.map +1 -0
- package/dist/token-generator.js +351 -0
- package/dist/token-generator.js.map +1 -0
- package/package.json +28 -0
- package/src/CVE-REMEDIATION.ts +251 -0
- package/src/application/index.ts +10 -0
- package/src/application/services/security-application-service.ts +193 -0
- package/src/credential-generator.ts +368 -0
- package/src/domain/entities/security-context.ts +173 -0
- package/src/domain/index.ts +17 -0
- package/src/domain/services/security-domain-service.ts +296 -0
- package/src/index.ts +271 -0
- package/src/input-validator.ts +466 -0
- package/src/password-hasher.ts +270 -0
- package/src/path-validator.ts +525 -0
- package/src/safe-executor.ts +525 -0
- package/src/token-generator.ts +463 -0
- package/tsconfig.json +9 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-generator.js","sourceRoot":"","sources":["../src/credential-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAmDjD,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAG/B;IAFlB,YACE,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,QAAQ,GAAG;IACf,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,4BAA4B;IACvC,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,4BAA4B;IACrC,mCAAmC;IACnC,QAAQ,EAAE,kEAAkE;IAC5E,6BAA6B;IAC7B,GAAG,EAAE,kBAAkB;CACf,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAmB;IACb,MAAM,CAA6B;IAEpD,YAAY,SAA2B,EAAE;QACvC,IAAI,CAAC,MAAM,GAAG;YACZ,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;YAC3C,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACrC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO;YAC9E,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,QAAQ,CAAC,QAAQ;SACzD,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,wBAAwB,CAChC,gDAAgD,EAChD,yBAAyB,CAC1B,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,wBAAwB,CAChC,+CAA+C,EAC/C,wBAAwB,CACzB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,wBAAwB,CAChC,8CAA8C,EAC9C,uBAAuB,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,oBAAoB,CAAC,MAAc,EAAE,OAAe;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAEjC,yDAAyD;QACzD,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,aAAa,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC;QAElD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;YAClB,8DAA8D;YAC9D,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAEpC,yDAAyD;gBACzD,IAAI,WAAW,GAAG,aAAa,EAAE,CAAC;oBAChC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;oBACjD,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,qDAAqD;YACvD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,MAAe;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAEjD,wEAAwE;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE7E,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,iDAAiD;YACjD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,QAAgB;QAChD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,iCAAiC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpE,OAAO,YAAY,IAAI,YAAY,IAAI,QAAQ,IAAI,UAAU,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAM,GAAG,KAAK;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CACvC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EACxC,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAE3B,OAAO;YACL,GAAG;YACH,MAAM;YACN,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAe;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC/C,8DAA8D;QAC9D,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,qBAAqB;QACnB,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,+BAA+B,CAAC,cAAuB;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,cAAc;YAC9B,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAChE,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACtC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACxC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAC3C,WAAW,EAAE,GAAG;YAChB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACf,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,WAAiC;QAC/C,OAAO;eACI,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE;;;qCAGf,WAAW,CAAC,aAAa;uCACvB,WAAW,CAAC,eAAe;iCACjC,WAAW,CAAC,SAAS;qCACjB,WAAW,CAAC,aAAa;qCACzB,WAAW,CAAC,aAAa;CAC7D,CAAC;IACA,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,WAAiC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,4BAA4B,EAAE,WAAW,CAAC,aAAa;YACvD,8BAA8B,EAAE,WAAW,CAAC,eAAe;YAC3D,wBAAwB,EAAE,WAAW,CAAC,SAAS;YAC/C,4BAA4B,EAAE,WAAW,CAAC,aAAa;YACvD,4BAA4B,EAAE,WAAW,CAAC,aAAa;YACvD,0BAA0B,EAAE,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE;YACjE,wBAAwB,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;SACvE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC5C,OAAO,SAAS,CAAC,+BAA+B,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Context Entity - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Represents security context for operations with validation and policy enforcement.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/security/domain/entities
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Permission levels
|
|
10
|
+
*/
|
|
11
|
+
export type PermissionLevel = 'read' | 'write' | 'execute' | 'admin';
|
|
12
|
+
/**
|
|
13
|
+
* Security context properties
|
|
14
|
+
*/
|
|
15
|
+
export interface SecurityContextProps {
|
|
16
|
+
id?: string;
|
|
17
|
+
principalId: string;
|
|
18
|
+
principalType: 'agent' | 'user' | 'system';
|
|
19
|
+
permissions: PermissionLevel[];
|
|
20
|
+
allowedPaths?: string[];
|
|
21
|
+
blockedPaths?: string[];
|
|
22
|
+
allowedCommands?: string[];
|
|
23
|
+
blockedCommands?: string[];
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
expiresAt?: Date;
|
|
26
|
+
createdAt?: Date;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Security Context - Entity
|
|
30
|
+
*/
|
|
31
|
+
export declare class SecurityContext {
|
|
32
|
+
private _id;
|
|
33
|
+
private _principalId;
|
|
34
|
+
private _principalType;
|
|
35
|
+
private _permissions;
|
|
36
|
+
private _allowedPaths;
|
|
37
|
+
private _blockedPaths;
|
|
38
|
+
private _allowedCommands;
|
|
39
|
+
private _blockedCommands;
|
|
40
|
+
private _metadata;
|
|
41
|
+
private _expiresAt?;
|
|
42
|
+
private _createdAt;
|
|
43
|
+
private constructor();
|
|
44
|
+
static create(props: SecurityContextProps): SecurityContext;
|
|
45
|
+
static fromPersistence(props: SecurityContextProps): SecurityContext;
|
|
46
|
+
get id(): string;
|
|
47
|
+
get principalId(): string;
|
|
48
|
+
get principalType(): string;
|
|
49
|
+
get permissions(): PermissionLevel[];
|
|
50
|
+
get allowedPaths(): string[];
|
|
51
|
+
get blockedPaths(): string[];
|
|
52
|
+
get allowedCommands(): string[];
|
|
53
|
+
get blockedCommands(): string[];
|
|
54
|
+
get metadata(): Record<string, unknown>;
|
|
55
|
+
get expiresAt(): Date | undefined;
|
|
56
|
+
get createdAt(): Date;
|
|
57
|
+
hasPermission(level: PermissionLevel): boolean;
|
|
58
|
+
isExpired(): boolean;
|
|
59
|
+
canAccessPath(path: string): boolean;
|
|
60
|
+
canExecuteCommand(command: string): boolean;
|
|
61
|
+
private matchGlob;
|
|
62
|
+
grantPermission(level: PermissionLevel): void;
|
|
63
|
+
revokePermission(level: PermissionLevel): void;
|
|
64
|
+
addAllowedPath(path: string): void;
|
|
65
|
+
addBlockedPath(path: string): void;
|
|
66
|
+
toPersistence(): Record<string, unknown>;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=security-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-context.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/security-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,gBAAgB,CAAc;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAO;IAC1B,OAAO,CAAC,UAAU,CAAO;IAEzB,OAAO;IAcP,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAI3D,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe;IAIpE,IAAI,EAAE,IAAI,MAAM,CAAqB;IACrC,IAAI,WAAW,IAAI,MAAM,CAA8B;IACvD,IAAI,aAAa,IAAI,MAAM,CAAgC;IAC3D,IAAI,WAAW,IAAI,eAAe,EAAE,CAA0C;IAC9E,IAAI,YAAY,IAAI,MAAM,EAAE,CAA2C;IACvE,IAAI,YAAY,IAAI,MAAM,EAAE,CAA2C;IACvE,IAAI,eAAe,IAAI,MAAM,EAAE,CAA8C;IAC7E,IAAI,eAAe,IAAI,MAAM,EAAE,CAA8C;IAC7E,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAkC;IACzE,IAAI,SAAS,IAAI,IAAI,GAAG,SAAS,CAA4B;IAC7D,IAAI,SAAS,IAAI,IAAI,CAAsC;IAI3D,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAI9C,SAAS,IAAI,OAAO;IAKpB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAuBpC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiB3C,OAAO,CAAC,SAAS;IAQjB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAI7C,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAI9C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAezC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Context Entity - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Represents security context for operations with validation and policy enforcement.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/security/domain/entities
|
|
7
|
+
*/
|
|
8
|
+
import { randomUUID } from 'crypto';
|
|
9
|
+
/**
|
|
10
|
+
* Security Context - Entity
|
|
11
|
+
*/
|
|
12
|
+
export class SecurityContext {
|
|
13
|
+
_id;
|
|
14
|
+
_principalId;
|
|
15
|
+
_principalType;
|
|
16
|
+
_permissions;
|
|
17
|
+
_allowedPaths;
|
|
18
|
+
_blockedPaths;
|
|
19
|
+
_allowedCommands;
|
|
20
|
+
_blockedCommands;
|
|
21
|
+
_metadata;
|
|
22
|
+
_expiresAt;
|
|
23
|
+
_createdAt;
|
|
24
|
+
constructor(props) {
|
|
25
|
+
this._id = props.id ?? randomUUID();
|
|
26
|
+
this._principalId = props.principalId;
|
|
27
|
+
this._principalType = props.principalType;
|
|
28
|
+
this._permissions = new Set(props.permissions);
|
|
29
|
+
this._allowedPaths = new Set(props.allowedPaths ?? []);
|
|
30
|
+
this._blockedPaths = new Set(props.blockedPaths ?? []);
|
|
31
|
+
this._allowedCommands = new Set(props.allowedCommands ?? []);
|
|
32
|
+
this._blockedCommands = new Set(props.blockedCommands ?? []);
|
|
33
|
+
this._metadata = props.metadata ?? {};
|
|
34
|
+
this._expiresAt = props.expiresAt;
|
|
35
|
+
this._createdAt = props.createdAt ?? new Date();
|
|
36
|
+
}
|
|
37
|
+
static create(props) {
|
|
38
|
+
return new SecurityContext(props);
|
|
39
|
+
}
|
|
40
|
+
static fromPersistence(props) {
|
|
41
|
+
return new SecurityContext(props);
|
|
42
|
+
}
|
|
43
|
+
get id() { return this._id; }
|
|
44
|
+
get principalId() { return this._principalId; }
|
|
45
|
+
get principalType() { return this._principalType; }
|
|
46
|
+
get permissions() { return Array.from(this._permissions); }
|
|
47
|
+
get allowedPaths() { return Array.from(this._allowedPaths); }
|
|
48
|
+
get blockedPaths() { return Array.from(this._blockedPaths); }
|
|
49
|
+
get allowedCommands() { return Array.from(this._allowedCommands); }
|
|
50
|
+
get blockedCommands() { return Array.from(this._blockedCommands); }
|
|
51
|
+
get metadata() { return { ...this._metadata }; }
|
|
52
|
+
get expiresAt() { return this._expiresAt; }
|
|
53
|
+
get createdAt() { return new Date(this._createdAt); }
|
|
54
|
+
// Business Logic
|
|
55
|
+
hasPermission(level) {
|
|
56
|
+
return this._permissions.has(level) || this._permissions.has('admin');
|
|
57
|
+
}
|
|
58
|
+
isExpired() {
|
|
59
|
+
if (!this._expiresAt)
|
|
60
|
+
return false;
|
|
61
|
+
return Date.now() > this._expiresAt.getTime();
|
|
62
|
+
}
|
|
63
|
+
canAccessPath(path) {
|
|
64
|
+
if (this.isExpired())
|
|
65
|
+
return false;
|
|
66
|
+
// Check blocked paths first
|
|
67
|
+
for (const blocked of this._blockedPaths) {
|
|
68
|
+
if (path.startsWith(blocked) || this.matchGlob(path, blocked)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// If no allowed paths specified, allow all non-blocked
|
|
73
|
+
if (this._allowedPaths.size === 0)
|
|
74
|
+
return true;
|
|
75
|
+
// Check allowed paths
|
|
76
|
+
for (const allowed of this._allowedPaths) {
|
|
77
|
+
if (path.startsWith(allowed) || this.matchGlob(path, allowed)) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
canExecuteCommand(command) {
|
|
84
|
+
if (this.isExpired())
|
|
85
|
+
return false;
|
|
86
|
+
const cmdBase = command.split(' ')[0];
|
|
87
|
+
// Check blocked commands first
|
|
88
|
+
if (this._blockedCommands.has(cmdBase) || this._blockedCommands.has(command)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
// If no allowed commands specified, allow all non-blocked
|
|
92
|
+
if (this._allowedCommands.size === 0)
|
|
93
|
+
return true;
|
|
94
|
+
// Check allowed commands
|
|
95
|
+
return this._allowedCommands.has(cmdBase) || this._allowedCommands.has(command);
|
|
96
|
+
}
|
|
97
|
+
matchGlob(path, pattern) {
|
|
98
|
+
const regex = pattern
|
|
99
|
+
.replace(/\*\*/g, '.*')
|
|
100
|
+
.replace(/\*/g, '[^/]*')
|
|
101
|
+
.replace(/\?/g, '.');
|
|
102
|
+
return new RegExp(`^${regex}$`).test(path);
|
|
103
|
+
}
|
|
104
|
+
grantPermission(level) {
|
|
105
|
+
this._permissions.add(level);
|
|
106
|
+
}
|
|
107
|
+
revokePermission(level) {
|
|
108
|
+
this._permissions.delete(level);
|
|
109
|
+
}
|
|
110
|
+
addAllowedPath(path) {
|
|
111
|
+
this._allowedPaths.add(path);
|
|
112
|
+
}
|
|
113
|
+
addBlockedPath(path) {
|
|
114
|
+
this._blockedPaths.add(path);
|
|
115
|
+
}
|
|
116
|
+
toPersistence() {
|
|
117
|
+
return {
|
|
118
|
+
id: this._id,
|
|
119
|
+
principalId: this._principalId,
|
|
120
|
+
principalType: this._principalType,
|
|
121
|
+
permissions: Array.from(this._permissions),
|
|
122
|
+
allowedPaths: Array.from(this._allowedPaths),
|
|
123
|
+
blockedPaths: Array.from(this._blockedPaths),
|
|
124
|
+
allowedCommands: Array.from(this._allowedCommands),
|
|
125
|
+
blockedCommands: Array.from(this._blockedCommands),
|
|
126
|
+
metadata: this._metadata,
|
|
127
|
+
expiresAt: this._expiresAt?.toISOString(),
|
|
128
|
+
createdAt: this._createdAt.toISOString(),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=security-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-context.js","sourceRoot":"","sources":["../../../src/domain/entities/security-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Domain Layer - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* @module v3/security/domain
|
|
5
|
+
*/
|
|
6
|
+
export { SecurityContext, type PermissionLevel, type SecurityContextProps, } from './entities/security-context.js';
|
|
7
|
+
export { SecurityDomainService, type ValidationResult, type ThreatDetectionResult, } from './services/security-domain-service.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Domain Layer - Public Exports
|
|
3
|
+
*
|
|
4
|
+
* @module v3/security/domain
|
|
5
|
+
*/
|
|
6
|
+
export { SecurityContext, } from './entities/security-context.js';
|
|
7
|
+
export { SecurityDomainService, } from './services/security-domain-service.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,GAGhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,qBAAqB,GAGtB,MAAM,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Domain Service - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Contains security logic for validation, policy enforcement, and threat detection.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/security/domain/services
|
|
7
|
+
*/
|
|
8
|
+
import { SecurityContext } from '../entities/security-context.js';
|
|
9
|
+
/**
|
|
10
|
+
* Validation result
|
|
11
|
+
*/
|
|
12
|
+
export interface ValidationResult {
|
|
13
|
+
valid: boolean;
|
|
14
|
+
errors: string[];
|
|
15
|
+
warnings: string[];
|
|
16
|
+
sanitized?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Threat detection result
|
|
20
|
+
*/
|
|
21
|
+
export interface ThreatDetectionResult {
|
|
22
|
+
safe: boolean;
|
|
23
|
+
threats: Array<{
|
|
24
|
+
type: string;
|
|
25
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
26
|
+
description: string;
|
|
27
|
+
location?: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Security Domain Service
|
|
32
|
+
*/
|
|
33
|
+
export declare class SecurityDomainService {
|
|
34
|
+
private static readonly PATH_TRAVERSAL_PATTERNS;
|
|
35
|
+
private static readonly DANGEROUS_COMMANDS;
|
|
36
|
+
private static readonly SQL_INJECTION_PATTERNS;
|
|
37
|
+
private static readonly XSS_PATTERNS;
|
|
38
|
+
/**
|
|
39
|
+
* Validate a file path
|
|
40
|
+
*/
|
|
41
|
+
validatePath(path: string, context: SecurityContext): ValidationResult;
|
|
42
|
+
/**
|
|
43
|
+
* Validate a command
|
|
44
|
+
*/
|
|
45
|
+
validateCommand(command: string, context: SecurityContext): ValidationResult;
|
|
46
|
+
/**
|
|
47
|
+
* Validate user input
|
|
48
|
+
*/
|
|
49
|
+
validateInput(input: string): ValidationResult;
|
|
50
|
+
/**
|
|
51
|
+
* Detect threats in content
|
|
52
|
+
*/
|
|
53
|
+
detectThreats(content: string): ThreatDetectionResult;
|
|
54
|
+
/**
|
|
55
|
+
* Sanitize path
|
|
56
|
+
*/
|
|
57
|
+
private sanitizePath;
|
|
58
|
+
/**
|
|
59
|
+
* Sanitize command
|
|
60
|
+
*/
|
|
61
|
+
private sanitizeCommand;
|
|
62
|
+
/**
|
|
63
|
+
* Sanitize user input
|
|
64
|
+
*/
|
|
65
|
+
private sanitizeInput;
|
|
66
|
+
/**
|
|
67
|
+
* Create security context for agent
|
|
68
|
+
*/
|
|
69
|
+
createAgentContext(agentId: string, role: string, customPaths?: string[]): SecurityContext;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=security-domain-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-domain-service.d.ts","sourceRoot":"","sources":["../../../src/domain/services/security-domain-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,iCAAiC,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;QACjD,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAQ7C;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAYxC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAO5C;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAOlC;IAEF;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,gBAAgB;IA6BtE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,gBAAgB;IAiC5E;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAiC9C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB;IA0CrD;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,eAAe;CAuBnB"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Domain Service - Domain Layer
|
|
3
|
+
*
|
|
4
|
+
* Contains security logic for validation, policy enforcement, and threat detection.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/security/domain/services
|
|
7
|
+
*/
|
|
8
|
+
import { SecurityContext } from '../entities/security-context.js';
|
|
9
|
+
/**
|
|
10
|
+
* Security Domain Service
|
|
11
|
+
*/
|
|
12
|
+
export class SecurityDomainService {
|
|
13
|
+
// Dangerous patterns for path traversal
|
|
14
|
+
static PATH_TRAVERSAL_PATTERNS = [
|
|
15
|
+
/\.\./,
|
|
16
|
+
/~\//,
|
|
17
|
+
/^\/etc\//,
|
|
18
|
+
/^\/tmp\//,
|
|
19
|
+
/^\/var\/log\//,
|
|
20
|
+
/^C:\\Windows/i,
|
|
21
|
+
/^C:\\Users\\[^\\]+\\AppData/i,
|
|
22
|
+
];
|
|
23
|
+
// Dangerous command patterns
|
|
24
|
+
static DANGEROUS_COMMANDS = [
|
|
25
|
+
/^rm\s+-rf\s+\//,
|
|
26
|
+
/^rm\s+-rf\s+\*/,
|
|
27
|
+
/^dd\s+if=/,
|
|
28
|
+
/^mkfs\./,
|
|
29
|
+
/^format\s+/i,
|
|
30
|
+
/^del\s+\/s\s+\/q/i,
|
|
31
|
+
/>\s*\/dev\/sd[a-z]/,
|
|
32
|
+
/\|\s*bash$/,
|
|
33
|
+
/\|\s*sh$/,
|
|
34
|
+
/eval\s*\(/,
|
|
35
|
+
/exec\s*\(/,
|
|
36
|
+
];
|
|
37
|
+
// SQL injection patterns
|
|
38
|
+
static SQL_INJECTION_PATTERNS = [
|
|
39
|
+
/'\s*OR\s+'1'\s*=\s*'1/i,
|
|
40
|
+
/'\s*OR\s+1\s*=\s*1/i,
|
|
41
|
+
/;\s*DROP\s+TABLE/i,
|
|
42
|
+
/;\s*DELETE\s+FROM/i,
|
|
43
|
+
/UNION\s+SELECT/i,
|
|
44
|
+
/--\s*$/,
|
|
45
|
+
];
|
|
46
|
+
// XSS patterns
|
|
47
|
+
static XSS_PATTERNS = [
|
|
48
|
+
/<script[\s>]/i,
|
|
49
|
+
/javascript:/i,
|
|
50
|
+
/on\w+\s*=/i,
|
|
51
|
+
/<iframe/i,
|
|
52
|
+
/<object/i,
|
|
53
|
+
/<embed/i,
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Validate a file path
|
|
57
|
+
*/
|
|
58
|
+
validatePath(path, context) {
|
|
59
|
+
const errors = [];
|
|
60
|
+
const warnings = [];
|
|
61
|
+
// Check path traversal
|
|
62
|
+
for (const pattern of SecurityDomainService.PATH_TRAVERSAL_PATTERNS) {
|
|
63
|
+
if (pattern.test(path)) {
|
|
64
|
+
errors.push(`Path traversal detected: ${pattern.source}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Check context permissions
|
|
68
|
+
if (!context.canAccessPath(path)) {
|
|
69
|
+
errors.push(`Access denied to path: ${path}`);
|
|
70
|
+
}
|
|
71
|
+
// Check for suspicious paths
|
|
72
|
+
if (path.includes('..')) {
|
|
73
|
+
warnings.push('Path contains parent directory reference');
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
valid: errors.length === 0,
|
|
77
|
+
errors,
|
|
78
|
+
warnings,
|
|
79
|
+
sanitized: this.sanitizePath(path),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate a command
|
|
84
|
+
*/
|
|
85
|
+
validateCommand(command, context) {
|
|
86
|
+
const errors = [];
|
|
87
|
+
const warnings = [];
|
|
88
|
+
// Check dangerous commands
|
|
89
|
+
for (const pattern of SecurityDomainService.DANGEROUS_COMMANDS) {
|
|
90
|
+
if (pattern.test(command)) {
|
|
91
|
+
errors.push(`Dangerous command pattern detected: ${pattern.source}`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Check context permissions
|
|
95
|
+
if (!context.canExecuteCommand(command)) {
|
|
96
|
+
errors.push(`Command execution denied: ${command}`);
|
|
97
|
+
}
|
|
98
|
+
if (!context.hasPermission('execute')) {
|
|
99
|
+
errors.push('Execute permission required');
|
|
100
|
+
}
|
|
101
|
+
// Check for shell injection
|
|
102
|
+
if (/[;&|`$(){}]/.test(command)) {
|
|
103
|
+
warnings.push('Command contains shell metacharacters');
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
valid: errors.length === 0,
|
|
107
|
+
errors,
|
|
108
|
+
warnings,
|
|
109
|
+
sanitized: this.sanitizeCommand(command),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate user input
|
|
114
|
+
*/
|
|
115
|
+
validateInput(input) {
|
|
116
|
+
const errors = [];
|
|
117
|
+
const warnings = [];
|
|
118
|
+
// Check for SQL injection
|
|
119
|
+
for (const pattern of SecurityDomainService.SQL_INJECTION_PATTERNS) {
|
|
120
|
+
if (pattern.test(input)) {
|
|
121
|
+
errors.push(`SQL injection pattern detected`);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Check for XSS
|
|
126
|
+
for (const pattern of SecurityDomainService.XSS_PATTERNS) {
|
|
127
|
+
if (pattern.test(input)) {
|
|
128
|
+
errors.push(`XSS pattern detected`);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// Check length
|
|
133
|
+
if (input.length > 10000) {
|
|
134
|
+
warnings.push('Input exceeds recommended length');
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
valid: errors.length === 0,
|
|
138
|
+
errors,
|
|
139
|
+
warnings,
|
|
140
|
+
sanitized: this.sanitizeInput(input),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Detect threats in content
|
|
145
|
+
*/
|
|
146
|
+
detectThreats(content) {
|
|
147
|
+
const threats = [];
|
|
148
|
+
// Check for various threat patterns
|
|
149
|
+
if (/<script/i.test(content)) {
|
|
150
|
+
threats.push({
|
|
151
|
+
type: 'xss',
|
|
152
|
+
severity: 'high',
|
|
153
|
+
description: 'Script tag detected',
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
if (/password\s*[:=]\s*["'][^"']+["']/i.test(content)) {
|
|
157
|
+
threats.push({
|
|
158
|
+
type: 'credential-exposure',
|
|
159
|
+
severity: 'critical',
|
|
160
|
+
description: 'Hardcoded password detected',
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (/api[_-]?key\s*[:=]\s*["'][^"']+["']/i.test(content)) {
|
|
164
|
+
threats.push({
|
|
165
|
+
type: 'credential-exposure',
|
|
166
|
+
severity: 'critical',
|
|
167
|
+
description: 'API key detected',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
if (/eval\s*\(/.test(content)) {
|
|
171
|
+
threats.push({
|
|
172
|
+
type: 'code-injection',
|
|
173
|
+
severity: 'high',
|
|
174
|
+
description: 'Eval statement detected',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
safe: threats.length === 0,
|
|
179
|
+
threats,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Sanitize path
|
|
184
|
+
*/
|
|
185
|
+
sanitizePath(path) {
|
|
186
|
+
return path
|
|
187
|
+
.replace(/\.\./g, '')
|
|
188
|
+
.replace(/\/\//g, '/')
|
|
189
|
+
.replace(/^~\//, '')
|
|
190
|
+
.trim();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Sanitize command
|
|
194
|
+
*/
|
|
195
|
+
sanitizeCommand(command) {
|
|
196
|
+
return command
|
|
197
|
+
.replace(/[;&|`$]/g, '')
|
|
198
|
+
.replace(/\$\([^)]*\)/g, '')
|
|
199
|
+
.trim();
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Sanitize user input
|
|
203
|
+
*/
|
|
204
|
+
sanitizeInput(input) {
|
|
205
|
+
return input
|
|
206
|
+
.replace(/</g, '<')
|
|
207
|
+
.replace(/>/g, '>')
|
|
208
|
+
.replace(/"/g, '"')
|
|
209
|
+
.replace(/'/g, ''')
|
|
210
|
+
.replace(/\//g, '/');
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Create security context for agent
|
|
214
|
+
*/
|
|
215
|
+
createAgentContext(agentId, role, customPaths) {
|
|
216
|
+
// Default permissions based on role
|
|
217
|
+
const rolePermissions = {
|
|
218
|
+
'queen-coordinator': ['read', 'write', 'execute', 'admin'],
|
|
219
|
+
'security-architect': ['read', 'write', 'execute', 'admin'],
|
|
220
|
+
'coder': ['read', 'write', 'execute'],
|
|
221
|
+
'reviewer': ['read'],
|
|
222
|
+
'tester': ['read', 'execute'],
|
|
223
|
+
default: ['read'],
|
|
224
|
+
};
|
|
225
|
+
const permissions = rolePermissions[role] ?? rolePermissions.default;
|
|
226
|
+
return SecurityContext.create({
|
|
227
|
+
principalId: agentId,
|
|
228
|
+
principalType: 'agent',
|
|
229
|
+
permissions,
|
|
230
|
+
allowedPaths: customPaths ?? ['./src', './tests', './docs'],
|
|
231
|
+
blockedPaths: ['/etc', '/var', '~/', '../'],
|
|
232
|
+
allowedCommands: ['npm', 'npx', 'node', 'git', 'vitest'],
|
|
233
|
+
blockedCommands: ['rm -rf /', 'dd', 'mkfs', 'format'],
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=security-domain-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-domain-service.js","sourceRoot":"","sources":["../../../src/domain/services/security-domain-service.ts"],"names":[],"mappings":"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"}
|