Compare commits

...

4 Commits

Author SHA1 Message Date
liss-bot
8182d99279 docs: Updates contributors list 2025-04-20 03:20:17 +01:00
Alicia Sykes
50a11a5f50 Merge pull request #243 from Lissy93/sec/fix-com-inj-vul
security: Replace exec with execFile
2025-04-12 12:13:01 +01:00
Alicia Sykes
145711bdc7 ref: Bump version to 2.0.1 2025-04-12 12:12:51 +01:00
Alicia Sykes
0e4958aa10 security: Replace exec with execFile 2025-04-12 12:11:11 +01:00
3 changed files with 42 additions and 37 deletions

42
.github/README.md vendored
View File

@@ -1014,6 +1014,13 @@ Credit to the following users for contributing to Web-Check
<sub><b>Ulises Gascón</b></sub> <sub><b>Ulises Gascón</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/CrazyWolf13">
<img src="https://avatars.githubusercontent.com/u/96661824?v=4" width="80;" alt="CrazyWolf13"/>
<br />
<sub><b>Tobias</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/PhiRequiem"> <a href="https://github.com/PhiRequiem">
<img src="https://avatars.githubusercontent.com/u/1323576?v=4" width="80;" alt="PhiRequiem"/> <img src="https://avatars.githubusercontent.com/u/1323576?v=4" width="80;" alt="PhiRequiem"/>
@@ -1028,6 +1035,8 @@ Credit to the following users for contributing to Web-Check
<sub><b>Nikolaos G. Ntaiko</b></sub> <sub><b>Nikolaos G. Ntaiko</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/Myzel394"> <a href="https://github.com/Myzel394">
<img src="https://avatars.githubusercontent.com/u/50424412?v=4" width="80;" alt="Myzel394"/> <img src="https://avatars.githubusercontent.com/u/50424412?v=4" width="80;" alt="Myzel394"/>
@@ -1035,8 +1044,6 @@ Credit to the following users for contributing to Web-Check
<sub><b>Myzel394</b></sub> <sub><b>Myzel394</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/murrple-1"> <a href="https://github.com/murrple-1">
<img src="https://avatars.githubusercontent.com/u/5559656?v=4" width="80;" alt="murrple-1"/> <img src="https://avatars.githubusercontent.com/u/5559656?v=4" width="80;" alt="murrple-1"/>
@@ -1072,6 +1079,8 @@ Credit to the following users for contributing to Web-Check
<sub><b>Gertje823</b></sub> <sub><b>Gertje823</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/epreston"> <a href="https://github.com/epreston">
<img src="https://avatars.githubusercontent.com/u/347224?v=4" width="80;" alt="epreston"/> <img src="https://avatars.githubusercontent.com/u/347224?v=4" width="80;" alt="epreston"/>
@@ -1079,8 +1088,6 @@ Credit to the following users for contributing to Web-Check
<sub><b>Ed Preston</b></sub> <sub><b>Ed Preston</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/dimitri-kandassamy"> <a href="https://github.com/dimitri-kandassamy">
<img src="https://avatars.githubusercontent.com/u/21193806?v=4" width="80;" alt="dimitri-kandassamy"/> <img src="https://avatars.githubusercontent.com/u/21193806?v=4" width="80;" alt="dimitri-kandassamy"/>
@@ -1110,11 +1117,18 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<tr> <tr>
<td align="center"> <td align="center">
<a href="https://github.com/vincentkoc"> <a href="https://github.com/vincentkoc">
<img src="https://avatars.githubusercontent.com/u/25068?v=4" width="80;" alt="vincentkoc"/> <img src="https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&v=4" width="80;" alt="vincentkoc"/>
<br /> <br />
<sub><b>Vincent Koc</b></sub> <sub><b>Vincent Koc</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/BrianCurliss">
<img src="https://avatars.githubusercontent.com/u/1222949?v=4" width="80;" alt="BrianCurliss"/>
<br />
<sub><b>Brian Curliss</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/AnandChowdhary"> <a href="https://github.com/AnandChowdhary">
<img src="https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&v=4" width="80;" alt="AnandChowdhary"/> <img src="https://avatars.githubusercontent.com/u/2841780?u=747e554b3a7f12eb20b7910e1c87d817844f714f&v=4" width="80;" alt="AnandChowdhary"/>
@@ -1143,6 +1157,8 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Ulises Gascón</b></sub> <sub><b>Ulises Gascón</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/digitalarche"> <a href="https://github.com/digitalarche">
<img src="https://avatars.githubusercontent.com/u/6546135?u=564756d7f44ab2206819eb3148f6d822673f5066&v=4" width="80;" alt="digitalarche"/> <img src="https://avatars.githubusercontent.com/u/6546135?u=564756d7f44ab2206819eb3148f6d822673f5066&v=4" width="80;" alt="digitalarche"/>
@@ -1150,8 +1166,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Digital Archeology</b></sub> <sub><b>Digital Archeology</b></sub>
</a> </a>
</td> </td>
</tr>
<tr>
<td align="center"> <td align="center">
<a href="https://github.com/InDieTasten"> <a href="https://github.com/InDieTasten">
<img src="https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1&v=4" width="80;" alt="InDieTasten"/> <img src="https://avatars.githubusercontent.com/u/7047377?u=8d8f8017628b38bc46dcbf3620e194b01d3fb2d1&v=4" width="80;" alt="InDieTasten"/>
@@ -1173,13 +1187,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<sub><b>Brian McGonagill</b></sub> <sub><b>Brian McGonagill</b></sub>
</a> </a>
</td> </td>
<td align="center">
<a href="https://github.com/arcestia">
<img src="https://avatars.githubusercontent.com/u/7936962?v=4" width="80;" alt="arcestia"/>
<br />
<sub><b>Laurensius Jeffrey</b></sub>
</a>
</td>
<td align="center"> <td align="center">
<a href="https://github.com/vlad-tim"> <a href="https://github.com/vlad-tim">
<img src="https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&v=4" width="80;" alt="vlad-tim"/> <img src="https://avatars.githubusercontent.com/u/11474041?u=eee43705b54d2ec9f51fc4fcce5ad18dd17c87e4&v=4" width="80;" alt="vlad-tim"/>
@@ -1253,13 +1260,6 @@ Huge thanks to these wonderful people, who sponsor me on GitHub, their support h
<br /> <br />
<sub><b>hudsonrock-partnerships</b></sub> <sub><b>hudsonrock-partnerships</b></sub>
</a> </a>
</td>
<td align="center">
<a href="https://github.com/CarterPerez-dev">
<img src="https://avatars.githubusercontent.com/u/188120068?v=4" width="80;" alt="CarterPerez-dev"/>
<br />
<sub><b>Carter Perez</b></sub>
</a>
</td> </td>
</tr> </tr>
<tbody> <tbody>

View File

@@ -1,7 +1,7 @@
import puppeteer from 'puppeteer-core'; import puppeteer from 'puppeteer-core';
import chromium from 'chrome-aws-lambda'; import chromium from 'chrome-aws-lambda';
import middleware from './_common/middleware.js'; import middleware from './_common/middleware.js';
import { exec } from 'child_process'; import { execFile } from 'child_process';
import { promises as fs } from 'fs'; import { promises as fs } from 'fs';
import path from 'path'; import path from 'path';
import pkg from 'uuid'; import pkg from 'uuid';
@@ -20,32 +20,37 @@ const directChromiumScreenshot = async (url) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const chromePath = process.env.CHROME_PATH || '/usr/bin/chromium'; const chromePath = process.env.CHROME_PATH || '/usr/bin/chromium';
const command = `${chromePath} --headless --disable-gpu --no-sandbox --screenshot=${screenshotPath} "${url}"`; const args = [
'--headless',
'--disable-gpu',
'--no-sandbox',
`--screenshot=${screenshotPath}`,
url
];
console.log(`[DIRECT-SCREENSHOT] Executing: ${chromePath} ${args.join(' ')}`);
console.log(`[DIRECT-SCREENSHOT] Executing command: ${command}`); execFile(chromePath, args, async (error, stdout, stderr) => {
exec(command, async (error, stdout, stderr) => {
if (error) { if (error) {
console.error(`[DIRECT-SCREENSHOT] Error executing Chromium: ${error.message}`); console.error(`[DIRECT-SCREENSHOT] Chromium error: ${error.message}`);
return reject(error); return reject(error);
} }
try { try {
// Read screenshot // Read the screenshot file
const screenshotData = await fs.readFile(screenshotPath); const screenshotData = await fs.readFile(screenshotPath);
console.log(`[DIRECT-SCREENSHOT] Read ${screenshotData.length} bytes from screenshot file`); console.log(`[DIRECT-SCREENSHOT] Screenshot read successfully`);
// Convert base64 // Convert to base64
const base64Data = screenshotData.toString('base64'); const base64Data = screenshotData.toString('base64');
// Clean await fs.unlink(screenshotPath).catch(err =>
await fs.unlink(screenshotPath).catch(err =>
console.warn(`[DIRECT-SCREENSHOT] Failed to delete temp file: ${err.message}`) console.warn(`[DIRECT-SCREENSHOT] Failed to delete temp file: ${err.message}`)
); );
resolve(base64Data); resolve(base64Data);
} catch (readError) { } catch (readError) {
console.error(`[DIRECT-SCREENSHOT] Error reading screenshot: ${readError.message}`); console.error(`[DIRECT-SCREENSHOT] Failed reading screenshot: ${readError.message}`);
reject(readError); reject(readError);
} }
}); });

View File

@@ -1,7 +1,7 @@
{ {
"name": "web-check", "name": "web-check",
"type": "module", "type": "module",
"version": "2.0.0", "version": "2.0.1",
"homepage": "https://web-check.xyz", "homepage": "https://web-check.xyz",
"scripts": { "scripts": {
"start": "node server", "start": "node server",