postquant 0.1.2 → 0.3.0

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.
Files changed (71) hide show
  1. package/README.md +101 -8
  2. package/dist/commands/analyze.d.ts +9 -0
  3. package/dist/commands/analyze.d.ts.map +1 -0
  4. package/dist/commands/analyze.js +129 -0
  5. package/dist/commands/analyze.js.map +1 -0
  6. package/dist/index.js +49 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/output/cbom.d.ts +3 -0
  9. package/dist/output/cbom.d.ts.map +1 -0
  10. package/dist/output/cbom.js +235 -0
  11. package/dist/output/cbom.js.map +1 -0
  12. package/dist/output/json-code.d.ts +3 -0
  13. package/dist/output/json-code.d.ts.map +1 -0
  14. package/dist/output/json-code.js +41 -0
  15. package/dist/output/json-code.js.map +1 -0
  16. package/dist/output/sarif.d.ts +3 -0
  17. package/dist/output/sarif.d.ts.map +1 -0
  18. package/dist/output/sarif.js +265 -0
  19. package/dist/output/sarif.js.map +1 -0
  20. package/dist/output/terminal-code.d.ts +8 -0
  21. package/dist/output/terminal-code.d.ts.map +1 -0
  22. package/dist/output/terminal-code.js +155 -0
  23. package/dist/output/terminal-code.js.map +1 -0
  24. package/dist/output/terminal.d.ts.map +1 -1
  25. package/dist/output/terminal.js +14 -2
  26. package/dist/output/terminal.js.map +1 -1
  27. package/dist/scanner/code/classifier.d.ts +9 -0
  28. package/dist/scanner/code/classifier.d.ts.map +1 -0
  29. package/dist/scanner/code/classifier.js +19 -0
  30. package/dist/scanner/code/classifier.js.map +1 -0
  31. package/dist/scanner/code/discovery.d.ts +17 -0
  32. package/dist/scanner/code/discovery.d.ts.map +1 -0
  33. package/dist/scanner/code/discovery.js +167 -0
  34. package/dist/scanner/code/discovery.js.map +1 -0
  35. package/dist/scanner/code/grader.d.ts +27 -0
  36. package/dist/scanner/code/grader.d.ts.map +1 -0
  37. package/dist/scanner/code/grader.js +169 -0
  38. package/dist/scanner/code/grader.js.map +1 -0
  39. package/dist/scanner/code/matcher.d.ts +20 -0
  40. package/dist/scanner/code/matcher.d.ts.map +1 -0
  41. package/dist/scanner/code/matcher.js +209 -0
  42. package/dist/scanner/code/matcher.js.map +1 -0
  43. package/dist/scanner/code/patterns/go.d.ts +3 -0
  44. package/dist/scanner/code/patterns/go.d.ts.map +1 -0
  45. package/dist/scanner/code/patterns/go.js +226 -0
  46. package/dist/scanner/code/patterns/go.js.map +1 -0
  47. package/dist/scanner/code/patterns/index.d.ts +11 -0
  48. package/dist/scanner/code/patterns/index.d.ts.map +1 -0
  49. package/dist/scanner/code/patterns/index.js +20 -0
  50. package/dist/scanner/code/patterns/index.js.map +1 -0
  51. package/dist/scanner/code/patterns/java.d.ts +3 -0
  52. package/dist/scanner/code/patterns/java.d.ts.map +1 -0
  53. package/dist/scanner/code/patterns/java.js +239 -0
  54. package/dist/scanner/code/patterns/java.js.map +1 -0
  55. package/dist/scanner/code/patterns/javascript.d.ts +3 -0
  56. package/dist/scanner/code/patterns/javascript.d.ts.map +1 -0
  57. package/dist/scanner/code/patterns/javascript.js +243 -0
  58. package/dist/scanner/code/patterns/javascript.js.map +1 -0
  59. package/dist/scanner/code/patterns/python.d.ts +3 -0
  60. package/dist/scanner/code/patterns/python.d.ts.map +1 -0
  61. package/dist/scanner/code/patterns/python.js +255 -0
  62. package/dist/scanner/code/patterns/python.js.map +1 -0
  63. package/dist/scanner/code/risk-assessor.d.ts +25 -0
  64. package/dist/scanner/code/risk-assessor.d.ts.map +1 -0
  65. package/dist/scanner/code/risk-assessor.js +412 -0
  66. package/dist/scanner/code/risk-assessor.js.map +1 -0
  67. package/dist/types/index.d.ts +139 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/dist/types/index.js +4 -1
  70. package/dist/types/index.js.map +1 -1
  71. package/package.json +4 -1
@@ -0,0 +1,243 @@
1
+ export const javascriptPatterns = [
2
+ {
3
+ id: 'js-rsa-keygen',
4
+ language: 'javascript',
5
+ category: 'asymmetric-encryption',
6
+ algorithm: 'RSA',
7
+ risk: 'critical',
8
+ confidence: 'high',
9
+ importPatterns: [
10
+ /import\s+\{[^}]*generateKeyPair(?:Sync)?\s*[^}]*\}\s+from\s+['"](?:node:)?crypto['"]/,
11
+ /(?:const|let|var)\s+\{[^}]*generateKeyPair(?:Sync)?\s*[^}]*\}\s*=\s*require\s*\(\s*['"]crypto['"]\s*\)/,
12
+ ],
13
+ callPatterns: [
14
+ /generateKeyPairSync\s*\(\s*['"]rsa['"]/,
15
+ /generateKeyPairSync\s*\(\s*['"]rsa-pss['"]/,
16
+ /generateKeyPair\s*\(\s*['"]rsa['"]/,
17
+ ],
18
+ keySizeExtractor: /modulusLength\s*:\s*(\d+)/,
19
+ description: "RSA key generation is vulnerable to quantum attacks via Shor's algorithm",
20
+ migration: 'Migrate to ML-KEM (FIPS 203) for encryption or ML-DSA (FIPS 204) for signatures',
21
+ nistRef: 'FIPS 203/204',
22
+ cweId: 'CWE-327',
23
+ },
24
+ {
25
+ id: 'js-ec-keygen',
26
+ language: 'javascript',
27
+ category: 'asymmetric-encryption',
28
+ algorithm: 'ECDSA',
29
+ risk: 'critical',
30
+ confidence: 'high',
31
+ callPatterns: [
32
+ /generateKeyPairSync\s*\(\s*['"]ec['"]/,
33
+ /generateKeyPair\s*\(\s*['"]ec['"]/,
34
+ ],
35
+ contextPatterns: [/namedCurve\s*:\s*['"](?:P-256|P-384|P-521|secp256k1)['"]/],
36
+ description: "EC key generation is vulnerable to quantum attacks via Shor's algorithm",
37
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
38
+ nistRef: 'FIPS 203/204',
39
+ cweId: 'CWE-327',
40
+ },
41
+ {
42
+ id: 'js-ed25519-keygen',
43
+ language: 'javascript',
44
+ category: 'digital-signature',
45
+ algorithm: 'Ed25519',
46
+ risk: 'critical',
47
+ confidence: 'high',
48
+ callPatterns: [
49
+ /generateKeyPairSync\s*\(\s*['"]ed25519['"]\s*\)/,
50
+ /generateKeyPairSync\s*\(\s*['"]ed448['"]\s*\)/,
51
+ /generateKeyPairSync\s*\(\s*['"]x25519['"]\s*\)/,
52
+ /generateKeyPairSync\s*\(\s*['"]x448['"]\s*\)/,
53
+ ],
54
+ description: "Ed25519/X25519 key generation is vulnerable to quantum attacks via Shor's algorithm",
55
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
56
+ nistRef: 'FIPS 203/204',
57
+ cweId: 'CWE-327',
58
+ },
59
+ {
60
+ id: 'js-dsa-keygen',
61
+ language: 'javascript',
62
+ category: 'digital-signature',
63
+ algorithm: 'DSA',
64
+ risk: 'critical',
65
+ confidence: 'high',
66
+ callPatterns: [
67
+ /generateKeyPairSync\s*\(\s*['"]dsa['"]/,
68
+ /generateKeyPair\s*\(\s*['"]dsa['"]/,
69
+ ],
70
+ description: "DSA key generation is vulnerable to quantum attacks via Shor's algorithm",
71
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
72
+ nistRef: 'FIPS 204',
73
+ cweId: 'CWE-327',
74
+ },
75
+ {
76
+ id: 'js-dh-exchange',
77
+ language: 'javascript',
78
+ category: 'key-exchange',
79
+ algorithm: 'DH',
80
+ risk: 'critical',
81
+ confidence: 'high',
82
+ importPatterns: [
83
+ /import\s+\{[^}]*createDiffieHellman[^}]*\}\s+from\s+['"](?:node:)?crypto['"]/,
84
+ /(?:const|let|var)\s+\{[^}]*createDiffieHellman[^}]*\}\s*=\s*require\s*\(\s*['"]crypto['"]\s*\)/,
85
+ ],
86
+ callPatterns: [/createDiffieHellman\s*\(/],
87
+ description: "Diffie-Hellman key exchange is vulnerable to quantum attacks via Shor's algorithm",
88
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
89
+ nistRef: 'FIPS 203',
90
+ cweId: 'CWE-327',
91
+ },
92
+ {
93
+ id: 'js-ecdh-exchange',
94
+ language: 'javascript',
95
+ category: 'key-exchange',
96
+ algorithm: 'ECDH',
97
+ risk: 'critical',
98
+ confidence: 'high',
99
+ callPatterns: [/createECDH\s*\(/],
100
+ description: "ECDH key exchange is vulnerable to quantum attacks via Shor's algorithm",
101
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
102
+ nistRef: 'FIPS 203',
103
+ cweId: 'CWE-327',
104
+ },
105
+ {
106
+ id: 'js-md5-hash',
107
+ language: 'javascript',
108
+ category: 'weak-hash',
109
+ algorithm: 'MD5',
110
+ risk: 'critical',
111
+ confidence: 'high',
112
+ callPatterns: [
113
+ /createHash\s*\(\s*['"]md5['"]\s*\)/,
114
+ /crypto\.subtle\.digest\s*\(\s*['"]MD5['"]/,
115
+ ],
116
+ description: 'MD5 is cryptographically broken and unsuitable for any security use',
117
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
118
+ cweId: 'CWE-328',
119
+ },
120
+ {
121
+ id: 'js-sha1-hash',
122
+ language: 'javascript',
123
+ category: 'weak-hash',
124
+ algorithm: 'SHA-1',
125
+ risk: 'critical',
126
+ confidence: 'high',
127
+ callPatterns: [
128
+ /createHash\s*\(\s*['"]sha1['"]\s*\)/,
129
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-1['"]/,
130
+ ],
131
+ description: 'SHA-1 is cryptographically broken with practical collision attacks',
132
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
133
+ cweId: 'CWE-328',
134
+ },
135
+ {
136
+ id: 'js-sha256-hash',
137
+ language: 'javascript',
138
+ category: 'safe-hash',
139
+ algorithm: 'SHA-256',
140
+ risk: 'safe',
141
+ confidence: 'high',
142
+ callPatterns: [
143
+ /createHash\s*\(\s*['"]sha256['"]\s*\)/,
144
+ /createHash\s*\(\s*['"]sha384['"]\s*\)/,
145
+ /createHash\s*\(\s*['"]sha512['"]\s*\)/,
146
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-256['"]/,
147
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-384['"]/,
148
+ /crypto\.subtle\.digest\s*\(\s*['"]SHA-512['"]/,
149
+ ],
150
+ description: 'SHA-256/384/512 are quantum-resistant hash functions',
151
+ migration: 'No migration needed — already quantum-safe',
152
+ },
153
+ {
154
+ id: 'js-aes',
155
+ language: 'javascript',
156
+ category: 'weak-symmetric',
157
+ algorithm: 'AES',
158
+ risk: 'moderate',
159
+ confidence: 'medium',
160
+ callPatterns: [
161
+ /createCipheriv\s*\(\s*['"]aes-\d+-/,
162
+ /createDecipheriv\s*\(\s*['"]aes-\d+-/,
163
+ ],
164
+ keySizeExtractor: /aes-(\d+)/,
165
+ keySizeRisk: (size) => (size >= 256 ? 'safe' : 'moderate'),
166
+ description: "AES-128 provides reduced security against quantum attacks (Grover's algorithm)",
167
+ migration: 'Use AES-256 for quantum-resistant symmetric encryption',
168
+ },
169
+ {
170
+ id: 'js-3des',
171
+ language: 'javascript',
172
+ category: 'broken-cipher',
173
+ algorithm: '3DES',
174
+ risk: 'critical',
175
+ confidence: 'high',
176
+ callPatterns: [
177
+ /createCipheriv\s*\(\s*['"]des-ede3-/,
178
+ /createDecipheriv\s*\(\s*['"]des-ede3-/,
179
+ ],
180
+ description: '3DES is deprecated with inadequate security margins',
181
+ migration: 'Migrate to AES-256-GCM for symmetric encryption',
182
+ cweId: 'CWE-327',
183
+ },
184
+ {
185
+ id: 'js-webcrypto-rsa',
186
+ language: 'javascript',
187
+ category: 'asymmetric-encryption',
188
+ algorithm: 'RSA',
189
+ risk: 'critical',
190
+ confidence: 'high',
191
+ callPatterns: [
192
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSA-OAEP['"]/,
193
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSA-PSS['"]/,
194
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]RSASSA-PKCS1-v1_5['"]/,
195
+ /subtle\.importKey\s*\([^)]*['"]RSA-OAEP['"]/,
196
+ ],
197
+ description: "WebCrypto RSA operations are vulnerable to quantum attacks via Shor's algorithm",
198
+ migration: 'Migrate to ML-KEM (FIPS 203) or ML-DSA (FIPS 204) when WebCrypto supports PQC',
199
+ nistRef: 'FIPS 203/204',
200
+ cweId: 'CWE-327',
201
+ },
202
+ {
203
+ id: 'js-webcrypto-ec',
204
+ language: 'javascript',
205
+ category: 'asymmetric-encryption',
206
+ algorithm: 'ECDSA',
207
+ risk: 'critical',
208
+ confidence: 'high',
209
+ callPatterns: [
210
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]ECDSA['"]/,
211
+ /subtle\.generateKey\s*\(\s*\{[^}]*name\s*:\s*['"]ECDH['"]/,
212
+ /subtle\.sign\s*\(\s*\{[^}]*name\s*:\s*['"]ECDSA['"]/,
213
+ ],
214
+ description: "WebCrypto EC operations are vulnerable to quantum attacks via Shor's algorithm",
215
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
216
+ nistRef: 'FIPS 203/204',
217
+ cweId: 'CWE-327',
218
+ },
219
+ {
220
+ id: 'js-jwt-sign',
221
+ language: 'javascript',
222
+ category: 'digital-signature',
223
+ algorithm: 'RSA/ECDSA',
224
+ risk: 'critical',
225
+ confidence: 'high',
226
+ importPatterns: [
227
+ /import\s+.*from\s+['"]jsonwebtoken['"]/,
228
+ /import\s+\{[^}]*SignJWT[^}]*\}\s+from\s+['"]jose['"]/,
229
+ /require\s*\(\s*['"]jsonwebtoken['"]\s*\)/,
230
+ ],
231
+ callPatterns: [
232
+ /jwt\.sign\s*\([^)]*algorithm\s*:\s*['"](?:RS|ES|PS)\d{3}['"]/,
233
+ /jwt\.sign\s*\([^)]*algorithm\s*:\s*['"]EdDSA['"]/,
234
+ /SignJWT\s*\([^)]*\).*setProtectedHeader\s*\(\s*\{[^}]*alg\s*:\s*['"](?:RS|ES|PS)\d{3}['"]/,
235
+ /SignJWT\s*\([^)]*\).*setProtectedHeader\s*\(\s*\{[^}]*alg\s*:\s*['"]EdDSA['"]/,
236
+ /generateKeyPair\s*\(\s*['"](?:RS|ES)\d{3}['"]\s*\)/,
237
+ ],
238
+ description: 'JWT signing with RSA/ECDSA/EdDSA uses quantum-vulnerable algorithms',
239
+ migration: 'Use HMAC-based JWT (HS256) for symmetric signing, or await PQC JWT standards',
240
+ cweId: 'CWE-327',
241
+ },
242
+ ];
243
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/javascript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CryptoPattern } from '../../../types/index.js';
2
+ export declare const pythonPatterns: CryptoPattern[];
3
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,yBAAyB,CAAC;AAExE,eAAO,MAAM,cAAc,EAAE,aAAa,EA6PzC,CAAC"}
@@ -0,0 +1,255 @@
1
+ export const pythonPatterns = [
2
+ {
3
+ id: 'python-rsa-keygen',
4
+ language: 'python',
5
+ category: 'asymmetric-encryption',
6
+ algorithm: 'RSA',
7
+ risk: 'critical',
8
+ confidence: 'high',
9
+ importPatterns: [
10
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+rsa/,
11
+ /from\s+Crypto\.PublicKey\s+import\s+RSA/,
12
+ ],
13
+ callPatterns: [
14
+ /rsa\.generate_private_key\s*\(/,
15
+ /RSA\.generate\s*\(/,
16
+ ],
17
+ keySizeExtractor: /key_size\s*=\s*(\d+)|RSA\.generate\s*\(\s*(\d+)/,
18
+ description: "RSA key generation is vulnerable to quantum attacks via Shor's algorithm",
19
+ migration: 'Migrate to ML-KEM (FIPS 203) for encryption or ML-DSA (FIPS 204) for signatures',
20
+ nistRef: 'FIPS 203/204',
21
+ cweId: 'CWE-327',
22
+ },
23
+ {
24
+ id: 'python-rsa-sign',
25
+ language: 'python',
26
+ category: 'digital-signature',
27
+ algorithm: 'RSA',
28
+ risk: 'critical',
29
+ confidence: 'high',
30
+ importPatterns: [
31
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+padding/,
32
+ /from\s+Crypto\.Signature\s+import/,
33
+ ],
34
+ callPatterns: [
35
+ /\.sign\s*\(.*padding\.(PSS|PKCS1v15)\s*\(/,
36
+ /pkcs1_15\.new\s*\(/,
37
+ /pss\.new\s*\(/,
38
+ ],
39
+ description: "RSA digital signatures are vulnerable to quantum attacks via Shor's algorithm",
40
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
41
+ nistRef: 'FIPS 204',
42
+ cweId: 'CWE-327',
43
+ },
44
+ {
45
+ id: 'python-ec-keygen',
46
+ language: 'python',
47
+ category: 'asymmetric-encryption',
48
+ algorithm: 'ECDSA',
49
+ risk: 'critical',
50
+ confidence: 'high',
51
+ importPatterns: [
52
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+ec/,
53
+ /from\s+Crypto\.PublicKey\s+import\s+ECC/,
54
+ ],
55
+ callPatterns: [
56
+ /ec\.generate_private_key\s*\(/,
57
+ /ECC\.generate\s*\(/,
58
+ ],
59
+ contextPatterns: [/SECP256R1|SECP384R1|SECP521R1|P-256|P-384|P-521/],
60
+ description: "Elliptic curve key generation is vulnerable to quantum attacks via Shor's algorithm",
61
+ migration: 'Migrate to ML-DSA (FIPS 204) for signatures or ML-KEM (FIPS 203) for key exchange',
62
+ nistRef: 'FIPS 203/204',
63
+ cweId: 'CWE-327',
64
+ },
65
+ {
66
+ id: 'python-ecdsa-sign',
67
+ language: 'python',
68
+ category: 'digital-signature',
69
+ algorithm: 'ECDSA',
70
+ risk: 'critical',
71
+ confidence: 'high',
72
+ callPatterns: [
73
+ /\.sign\s*\(.*ec\.ECDSA\s*\(/,
74
+ /DSS\.new\s*\(/,
75
+ ],
76
+ description: "ECDSA digital signatures are vulnerable to quantum attacks via Shor's algorithm",
77
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
78
+ nistRef: 'FIPS 204',
79
+ cweId: 'CWE-327',
80
+ },
81
+ {
82
+ id: 'python-ecdh-exchange',
83
+ language: 'python',
84
+ category: 'key-exchange',
85
+ algorithm: 'ECDH',
86
+ risk: 'critical',
87
+ confidence: 'high',
88
+ callPatterns: [/\.exchange\s*\(\s*ec\.ECDH\s*\(\)/],
89
+ description: "ECDH key exchange is vulnerable to quantum attacks via Shor's algorithm",
90
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
91
+ nistRef: 'FIPS 203',
92
+ cweId: 'CWE-327',
93
+ },
94
+ {
95
+ id: 'python-x25519',
96
+ language: 'python',
97
+ category: 'key-exchange',
98
+ algorithm: 'X25519',
99
+ risk: 'critical',
100
+ confidence: 'high',
101
+ importPatterns: [
102
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.x25519\s+import/,
103
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.x448\s+import/,
104
+ ],
105
+ callPatterns: [
106
+ /X25519PrivateKey\.generate\s*\(/,
107
+ /X448PrivateKey\.generate\s*\(/,
108
+ ],
109
+ description: "X25519/X448 key exchange is vulnerable to quantum attacks via Shor's algorithm",
110
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
111
+ nistRef: 'FIPS 203',
112
+ cweId: 'CWE-327',
113
+ },
114
+ {
115
+ id: 'python-ed25519',
116
+ language: 'python',
117
+ category: 'digital-signature',
118
+ algorithm: 'Ed25519',
119
+ risk: 'critical',
120
+ confidence: 'high',
121
+ importPatterns: [
122
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.ed25519\s+import/,
123
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\.ed448\s+import/,
124
+ ],
125
+ callPatterns: [
126
+ /Ed25519PrivateKey\.generate\s*\(/,
127
+ /Ed448PrivateKey\.generate\s*\(/,
128
+ ],
129
+ description: "Ed25519/Ed448 signatures are vulnerable to quantum attacks via Shor's algorithm",
130
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
131
+ nistRef: 'FIPS 204',
132
+ cweId: 'CWE-327',
133
+ },
134
+ {
135
+ id: 'python-dsa-keygen',
136
+ language: 'python',
137
+ category: 'digital-signature',
138
+ algorithm: 'DSA',
139
+ risk: 'critical',
140
+ confidence: 'high',
141
+ importPatterns: [
142
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+dsa/,
143
+ /from\s+Crypto\.PublicKey\s+import\s+DSA/,
144
+ ],
145
+ callPatterns: [
146
+ /dsa\.generate_private_key\s*\(/,
147
+ /DSA\.generate\s*\(/,
148
+ ],
149
+ description: "DSA key generation is vulnerable to quantum attacks via Shor's algorithm",
150
+ migration: 'Migrate to ML-DSA (FIPS 204) for digital signatures',
151
+ nistRef: 'FIPS 204',
152
+ cweId: 'CWE-327',
153
+ },
154
+ {
155
+ id: 'python-dh-keygen',
156
+ language: 'python',
157
+ category: 'key-exchange',
158
+ algorithm: 'DH',
159
+ risk: 'critical',
160
+ confidence: 'high',
161
+ importPatterns: [
162
+ /from\s+cryptography\.hazmat\.primitives\.asymmetric\s+import\s+dh/,
163
+ ],
164
+ callPatterns: [/dh\.generate_parameters\s*\(/],
165
+ description: "Diffie-Hellman key exchange is vulnerable to quantum attacks via Shor's algorithm",
166
+ migration: 'Migrate to ML-KEM (FIPS 203) for key encapsulation',
167
+ nistRef: 'FIPS 203',
168
+ cweId: 'CWE-327',
169
+ },
170
+ {
171
+ id: 'python-md5',
172
+ language: 'python',
173
+ category: 'weak-hash',
174
+ algorithm: 'MD5',
175
+ risk: 'critical',
176
+ confidence: 'high',
177
+ importPatterns: [
178
+ /import\s+hashlib/,
179
+ /from\s+Crypto\.Hash\s+import\s+MD5/,
180
+ ],
181
+ callPatterns: [
182
+ /hashlib\.md5\s*\(/,
183
+ /hashlib\.new\s*\(\s*['"]md5['"]/,
184
+ /hashes\.MD5\s*\(/,
185
+ /MD5\.new\s*\(/,
186
+ ],
187
+ description: 'MD5 is cryptographically broken and unsuitable for any security use',
188
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
189
+ cweId: 'CWE-328',
190
+ },
191
+ {
192
+ id: 'python-sha1',
193
+ language: 'python',
194
+ category: 'weak-hash',
195
+ algorithm: 'SHA-1',
196
+ risk: 'critical',
197
+ confidence: 'high',
198
+ importPatterns: [
199
+ /import\s+hashlib/,
200
+ /from\s+Crypto\.Hash\s+import\s+SHA1/,
201
+ ],
202
+ callPatterns: [
203
+ /hashlib\.sha1\s*\(/,
204
+ /hashlib\.new\s*\(\s*['"]sha1['"]/,
205
+ /hashes\.SHA1\s*\(/,
206
+ /SHA1\.new\s*\(/,
207
+ ],
208
+ description: 'SHA-1 is cryptographically broken with practical collision attacks',
209
+ migration: 'Migrate to SHA-256 or SHA-3 for hashing',
210
+ cweId: 'CWE-328',
211
+ },
212
+ {
213
+ id: 'python-sha256',
214
+ language: 'python',
215
+ category: 'safe-hash',
216
+ algorithm: 'SHA-256',
217
+ risk: 'safe',
218
+ confidence: 'high',
219
+ callPatterns: [
220
+ /hashlib\.sha256\s*\(/,
221
+ /hashlib\.sha384\s*\(/,
222
+ /hashlib\.sha512\s*\(/,
223
+ /hashlib\.sha3_256\s*\(/,
224
+ /hashlib\.sha3_384\s*\(/,
225
+ /hashlib\.sha3_512\s*\(/,
226
+ /hashes\.SHA256\s*\(/,
227
+ /hashes\.SHA384\s*\(/,
228
+ /hashes\.SHA512\s*\(/,
229
+ /hashes\.SHA3_256\s*\(/,
230
+ ],
231
+ description: 'SHA-256/384/512/SHA-3 are quantum-resistant hash functions',
232
+ migration: 'No migration needed — already quantum-safe',
233
+ },
234
+ {
235
+ id: 'python-aes',
236
+ language: 'python',
237
+ category: 'weak-symmetric',
238
+ algorithm: 'AES',
239
+ risk: 'moderate',
240
+ confidence: 'medium',
241
+ importPatterns: [
242
+ /from\s+cryptography\.hazmat\.primitives\.ciphers\s+import/,
243
+ /from\s+Crypto\.Cipher\s+import\s+AES/,
244
+ ],
245
+ callPatterns: [
246
+ /algorithms\.AES\s*\(/,
247
+ /AES\.new\s*\(/,
248
+ ],
249
+ keySizeExtractor: /AES(\d+)|key_size\s*=\s*(\d+)/,
250
+ keySizeRisk: (size) => (size >= 256 ? 'safe' : 'moderate'),
251
+ description: "AES-128 provides reduced security against quantum attacks (Grover's algorithm)",
252
+ migration: 'Use AES-256 for quantum-resistant symmetric encryption',
253
+ },
254
+ ];
255
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/scanner/code/patterns/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Risk Assessment Layer for PostQuant v0.3.0
3
+ *
4
+ * Analyzes the CONTEXT of each cryptographic finding to determine
5
+ * whether the algorithm usage is security-critical or benign.
6
+ * MD5 in password hashing is critical; MD5 in UUID v3 is informational.
7
+ */
8
+ import type { CodeFinding, Language, RiskLevel, UsageContext, AdjustedRisk, ContextSignal, AssessedFinding } from '../../types/index.js';
9
+ export interface ResolvedContext {
10
+ context: UsageContext;
11
+ influence: 'increases-risk' | 'decreases-risk' | 'neutral';
12
+ }
13
+ export declare function detectFilePathSignals(filePath: string): ContextSignal[];
14
+ export declare function detectNearbyCodeSignals(lines: string[], lineNumber: number, windowSize?: number): ContextSignal[];
15
+ export declare function detectImportSignals(content: string, language: Language): ContextSignal[];
16
+ export declare function detectFunctionNameSignals(matchedLine: string): ContextSignal[];
17
+ export interface ProtocolPatternResult {
18
+ signal: ContextSignal;
19
+ contextOverride: UsageContext;
20
+ }
21
+ export declare function detectProtocolPattern(finding: CodeFinding, lines: string[], lineNumber: number, imports: string): ProtocolPatternResult | null;
22
+ export declare function resolveContext(signals: ContextSignal[]): ResolvedContext;
23
+ export declare function computeAdjustedRisk(originalRisk: RiskLevel, context: UsageContext): AdjustedRisk;
24
+ export declare function assessFindings(findings: CodeFinding[], fileContents: Map<string, string>): AssessedFinding[];
25
+ //# sourceMappingURL=risk-assessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-assessor.d.ts","sourceRoot":"","sources":["../../../src/scanner/code/risk-assessor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,aAAa,EAEb,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC5D;AAkFD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAcvE;AA4BD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAU,GACrB,aAAa,EAAE,CAsBjB;AA6CD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,EAAE,CA4BxF;AAuBD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE,CAgB9E;AAkDD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,YAAY,CAAC;CAC/B;AAUD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,qBAAqB,GAAG,IAAI,CAuB9B;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,CAqBxE;AA2DD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,YAAY,GACpB,YAAY,CAEd;AAID,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,WAAW,EAAE,EACvB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,eAAe,EAAE,CAEnB"}