🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@electron/osx-sign

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@electron/osx-sign - npm Package Compare versions

Comparing version
2.1.0
to
2.2.0
+7
dist/pkg-utils/bom.d.ts
/**
* Process lsbom output to modify permissions and ownership
* - Changes 755 to 775
* - Changes 644 to 664
* - Sets owner/group to root:admin (0/80 on macOS)
*/
export declare function setPermissionOnBom(bom: string): string;
import { debugLog } from '../util.js';
/**
* Process lsbom output to modify permissions and ownership
* - Changes 755 to 775
* - Changes 644 to 664
* - Sets owner/group to root:admin (0/80 on macOS)
*/
export function setPermissionOnBom(bom) {
return bom
.split('\n')
.map((line, index) => {
if (!line.trim())
return line;
// More flexible regex that captures spacing
const regex = /^([^\t]+)(\t+)(\d+)(\s+)(\d+)\/(\d+)(.*)$/;
const match = line.match(regex);
if (!match) {
debugLog('Unable to match Bom line:', line);
throw new Error('Failed to parse Bom line, see debug logs for more information');
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [_, path, space1, mode, space2, oldUid, oldGid, rest] = match;
// Modify permissions
let newMode;
if (index === 0) {
newMode = '40775';
}
else if (mode.endsWith('755')) {
newMode = mode.slice(0, -3) + '775';
}
else if (mode.endsWith('644')) {
newMode = mode.slice(0, -3) + '664';
}
else {
newMode = mode;
}
if (newMode !== mode) {
debugLog('BOM Permission Rewrite', path, mode, newMode);
}
if (oldUid !== '0' || oldGid !== '0') {
throw new Error('Invalid uid/gid, something went wrong');
}
// Set to root:admin
const uid = '0';
const gid = '80'; // admin group on macOS
return `${path}${space1}${newMode}${space2}${uid}/${gid}${rest}`;
})
.join('\n');
}
//# sourceMappingURL=bom.js.map
{"version":3,"file":"bom.js","sourceRoot":"","sources":["../../src/pkg-utils/bom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAE9B,4CAA4C;QAC5C,MAAM,KAAK,GAAG,2CAA2C,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QAED,6DAA6D;QAC7D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAEpE,qBAAqB;QACrB,IAAI,OAAe,CAAC;QACpB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,GAAG,OAAO,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,QAAQ,CAAC,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,oBAAoB;QACpB,MAAM,GAAG,GAAG,GAAG,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,uBAAuB;QAEzC,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;IACnE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
/**
* Entry in a CPIO ODC archive
*/
interface CpioEntry {
offset: number;
magic: string;
dev: string;
ino: string;
mode: string;
uid: string;
gid: string;
nlink: string;
rdev: string;
mtime: string;
namesize: number;
filesize: number;
filename: string;
dataOffset: number;
data: Buffer;
}
/**
* Parse and modify permissions in a cpio (SVR4/ASCII) archive
* This handles the 'odc' format (old portable ASCII format)
*/
export declare class CpioModifier {
private entries;
private static readonly MAGIC_NUMBER;
private static readonly HEADER_SIZE;
private static readonly TRAILER_NAME;
/**
* Parse cpio archive from buffer
*/
parseCpio(buffer: Buffer): CpioEntry[];
/**
* Parse mode string to human-readable format
*/
private parseMode;
/**
* Modify permissions for all files to match modified Bom
* - Changes 755 to 775
* - Changes 644 to 664
* - Sets owner/group to root:admin (0/80 on macOS)
*/
modifyPermissions(): void;
/**
* Rebuild cpio archive with modified permissions
*/
rebuildCpio(): Buffer;
/**
* Get the list of entries for inspection
*/
getEntries(): CpioEntry[];
}
export declare function modifyPayloadPermissions(payloadFile: string): Promise<void>;
export {};
import * as fs from 'fs';
import * as zlib from 'zlib';
import { debugLog } from '../util.js';
/**
* File type enumeration for cpio entries
*/
var FileType;
(function (FileType) {
FileType[FileType["Socket"] = 12] = "Socket";
FileType[FileType["Symlink"] = 10] = "Symlink";
FileType[FileType["Regular"] = 8] = "Regular";
FileType[FileType["Block"] = 6] = "Block";
FileType[FileType["Directory"] = 4] = "Directory";
FileType[FileType["Character"] = 2] = "Character";
FileType[FileType["FIFO"] = 1] = "FIFO";
})(FileType || (FileType = {}));
/**
* Parse and modify permissions in a cpio (SVR4/ASCII) archive
* This handles the 'odc' format (old portable ASCII format)
*/
export class CpioModifier {
entries = [];
static MAGIC_NUMBER = '070707';
static HEADER_SIZE = 76;
static TRAILER_NAME = 'TRAILER!!!';
/**
* Parse cpio archive from buffer
*/
parseCpio(buffer) {
let offset = 0;
this.entries = [];
while (offset < buffer.length) {
// Check for trailer
if (buffer.length - offset < CpioModifier.HEADER_SIZE)
break;
// cpio odc format has 76-byte ASCII header
const header = buffer.slice(offset, offset + CpioModifier.HEADER_SIZE).toString('ascii');
// Check magic number (070707 for odc format)
const magic = header.substr(0, 6);
if (magic !== CpioModifier.MAGIC_NUMBER) {
debugLog('Warning: Invalid magic number at offset in CPIO archive', offset);
break;
}
// Parse header fields (all in octal ASCII)
const entry = {
offset: offset,
magic: magic,
dev: header.substr(6, 6),
ino: header.substr(12, 6),
mode: header.substr(18, 6),
uid: header.substr(24, 6),
gid: header.substr(30, 6),
nlink: header.substr(36, 6),
rdev: header.substr(42, 6),
mtime: header.substr(48, 11),
namesize: parseInt(header.substr(59, 6), 8),
filesize: parseInt(header.substr(65, 11), 8),
filename: '',
dataOffset: 0,
data: Buffer.alloc(0),
};
offset += CpioModifier.HEADER_SIZE;
// Read filename
entry.filename = buffer.slice(offset, offset + entry.namesize - 1).toString('ascii');
offset += entry.namesize;
// Check for trailer entry
if (entry.filename === CpioModifier.TRAILER_NAME) {
this.entries.push(entry);
break;
}
// Store file data offset and length
entry.dataOffset = offset;
entry.data = buffer.slice(offset, offset + entry.filesize);
offset += entry.filesize;
this.entries.push(entry);
debugLog(`CPIO Found: ${entry.filename} (mode: ${entry.mode} = ${this.parseMode(entry.mode)}, uid = ${entry.uid}, gid = ${entry.gid})`);
}
return this.entries;
}
/**
* Parse mode string to human-readable format
*/
parseMode(modeStr) {
const mode = parseInt(modeStr, 8);
const perms = (mode & 0o777).toString(8).padStart(3, '0');
const type = (mode & 0o170000) >> 12;
const typeMap = {
[FileType.Socket]: 'socket',
[FileType.Symlink]: 'symlink',
[FileType.Regular]: 'file',
[FileType.Block]: 'block',
[FileType.Directory]: 'dir',
[FileType.Character]: 'char',
[FileType.FIFO]: 'fifo',
};
const typeStr = typeMap[type] || 'unknown';
return `${typeStr}:${perms}`;
}
/**
* Modify permissions for all files to match modified Bom
* - Changes 755 to 775
* - Changes 644 to 664
* - Sets owner/group to root:admin (0/80 on macOS)
*/
modifyPermissions() {
for (const entry of this.entries) {
const mode = parseInt(entry.mode, 8);
const originalType = mode & 0o170000; // Preserve file type bits
const type = originalType >> 12;
const perms = mode & 0o777;
let newMode = mode;
if (type === FileType.Regular || type === FileType.Directory || type === FileType.Symlink) {
if (perms === 0o755) {
newMode = originalType | 0o775;
}
else if (perms === 0o644) {
newMode = originalType | 0o664;
}
if (entry.uid === '000000' && entry.gid === '000000') {
// Set gid to 80 === admin
// Leave uid at 0 === root
entry.gid = (80).toString(8).padStart(6, '0');
}
debugLog('CPIO rewriting permissions for', entry.filename, `from oldMode=${this.parseMode(mode.toString(8))}, newMode=${this.parseMode(newMode.toString(8))}`);
}
// Convert back to 6-digit octal string
entry.mode = newMode.toString(8).padStart(6, '0');
}
}
/**
* Rebuild cpio archive with modified permissions
*/
rebuildCpio() {
const chunks = [];
for (const entry of this.entries) {
// Rebuild header
const header = Buffer.from(entry.magic +
entry.dev +
entry.ino +
entry.mode + // This now contains our modified permissions
entry.uid +
entry.gid +
entry.nlink +
entry.rdev +
entry.mtime +
entry.namesize.toString(8).padStart(6, '0') +
entry.filesize.toString(8).padStart(11, '0'), 'ascii');
chunks.push(header);
// Add filename (with null terminator)
const filenameBuffer = Buffer.alloc(entry.namesize);
filenameBuffer.write(entry.filename, 0, 'ascii');
chunks.push(filenameBuffer);
// Add file data if not trailer
if (entry.filename !== CpioModifier.TRAILER_NAME && entry.filesize > 0) {
chunks.push(entry.data);
}
}
return Buffer.concat(chunks);
}
/**
* Get the list of entries for inspection
*/
getEntries() {
return this.entries;
}
}
export async function modifyPayloadPermissions(payloadFile) {
debugLog('Reading Payload for permissions modification...');
const gzippedData = await fs.promises.readFile(payloadFile);
debugLog('Ungzipping payload in memory...');
const cpioData = zlib.gunzipSync(gzippedData);
debugLog(` -- Uncompressed size: ${cpioData.length} bytes`);
debugLog('Parsing cpio archive...');
const modifier = new CpioModifier();
modifier.parseCpio(cpioData);
modifier.modifyPermissions();
debugLog('Rebuilding cpio archive...');
const newCpioData = modifier.rebuildCpio();
debugLog('Gzipping modified archive...');
const newGzippedData = zlib.gzipSync(newCpioData, { level: 9 });
debugLog(`Writing Pyload back to disk...`);
fs.writeFileSync(payloadFile, newGzippedData);
}
//# sourceMappingURL=cpio.js.map
{"version":3,"file":"cpio.js","sourceRoot":"","sources":["../../src/pkg-utils/cpio.ts"],"names":[],"mappings":"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"}
+29
-3

@@ -14,2 +14,25 @@ #!/usr/bin/env node

},
identity: {
type: 'string',
},
identityValidation: {
type: 'boolean',
default: false,
},
keychain: {
type: 'string',
},
platform: {
type: 'string',
},
pkg: {
type: 'string',
},
scripts: {
type: 'string',
},
openPermissionsForSquirrelMac: {
type: 'boolean',
default: false,
},
},

@@ -21,3 +44,5 @@ allowPositionals: true,

if (!app || values.help || positionals.length > 0) {
const { help, ...opts } = values;
if (!app || help || positionals.length > 0) {
const usage = fs

@@ -31,6 +56,7 @@ .readFileSync(path.join(import.meta.dirname, 'electron-osx-flat-usage.txt'))

try {
await flat({ app });
// @ts-ignore
await flat({ app, ...opts });
// This is the default value inferred in the `flat` function.
console.log(
`Application flattened, saved to: ${path.join(path.dirname(app), path.basename(app, '.app') + '.pkg')}`,
`Application flattened, saved to: ${path.join(path.dirname(app), opts.pkg || (path.basename(app, '.app') + '.pkg'))}`,
);

@@ -37,0 +63,0 @@ process.exit(0);

+68
-18

@@ -0,4 +1,7 @@

import fs from 'node:fs';
import path from 'node:path';
import { debugLog, debugWarn, execFileAsync, validateOptsApp, validateOptsPlatform, } from './util.js';
import { findIdentities } from './util-identities.js';
import { modifyPayloadPermissions } from './pkg-utils/cpio.js';
import { setPermissionOnBom } from './pkg-utils/bom.js';
/**

@@ -57,22 +60,69 @@ * This function returns a promise validating all options passed in opts.

else {
const componentPkgPath = path.join(path.dirname(opts.app), path.basename(opts.app, '.app') + '-component.pkg');
const pkgbuildArgs = [
'--install-location',
opts.install,
'--component',
opts.app,
componentPkgPath,
];
if (opts.scripts) {
pkgbuildArgs.unshift('--scripts', opts.scripts);
const targetDir = path.dirname(opts.app);
const componentPkgPath = path.join(targetDir, path.basename(opts.app, '.app') + '-component.pkg');
const componentExtractedPath = path.join(targetDir, path.basename(opts.app, '.app') + '-component-extracted');
try {
const pkgbuildArgs = [
'--install-location',
opts.install,
'--component',
opts.app,
componentPkgPath,
];
if (opts.scripts) {
pkgbuildArgs.unshift('--scripts', opts.scripts);
}
debugLog('Building component package... ' + opts.app);
await execFileAsync('pkgbuild', pkgbuildArgs);
if (opts.openPermissionsForSquirrelMac) {
debugLog('Rewriting permissions in component package');
// Change file permissions to be squirrel compatible
await fs.promises.mkdir(componentExtractedPath, {
recursive: true,
});
await execFileAsync('/usr/bin/xar', ['-xf', path.relative(componentExtractedPath, componentPkgPath)], {
cwd: componentExtractedPath,
});
const bomContents = await execFileAsync('/usr/bin/lsbom', ['Bom'], {
cwd: componentExtractedPath,
});
await fs.promises.copyFile(path.resolve(componentExtractedPath, 'Bom'), path.resolve(targetDir, 'OldBom'));
const mutatedBomPath = path.resolve(targetDir, 'ModifiedBom');
debugLog('Writing mutated BOM --> ', mutatedBomPath);
await fs.promises.writeFile(mutatedBomPath, setPermissionOnBom(bomContents));
// Overwrite the existing Bom then clean up our temporary file
await execFileAsync('/usr/bin/mkbom', ['-i', mutatedBomPath, path.resolve(componentExtractedPath, 'Bom')], {
cwd: targetDir,
});
await fs.promises.copyFile(path.resolve(componentExtractedPath, 'Bom'), path.resolve(targetDir, 'NewBom'));
// await fs.promises.rm(mutatedBomPath);
await fs.promises.rm(componentPkgPath);
await modifyPayloadPermissions(path.resolve(componentExtractedPath, 'Payload'));
debugLog('Rebuilding component package after permission modifications');
await execFileAsync('/usr/bin/xar', [
'--compression',
'none',
'-cf',
path.relative(componentExtractedPath, componentPkgPath),
...(await fs.promises.readdir(componentExtractedPath)),
], {
cwd: componentExtractedPath,
});
}
const args = ['--package', componentPkgPath, opts.install, '--sign', identity.name, opts.pkg];
if (opts.keychain) {
args.unshift('--keychain', opts.keychain);
}
debugLog('Flattening OS X Installer package... ' + opts.app);
await execFileAsync('productbuild', args);
}
debugLog('Building component package... ' + opts.app);
await execFileAsync('pkgbuild', pkgbuildArgs);
const args = ['--package', componentPkgPath, opts.install, '--sign', identity.name, opts.pkg];
if (opts.keychain) {
args.unshift('--keychain', opts.keychain);
finally {
await fs.promises.rm(componentPkgPath, {
force: true,
});
await fs.promises.rm(componentExtractedPath, {
force: true,
recursive: true,
});
}
debugLog('Flattening OS X Installer package... ' + opts.app);
await execFileAsync('productbuild', args);
await execFileAsync('rm', [componentPkgPath]);
}

@@ -79,0 +129,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"flat.js","sourceRoot":"","sources":["../src/flat.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"flat.js","sourceRoot":"","sources":["../src/flat.ts"],"names":[],"mappings":"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"}

@@ -230,2 +230,17 @@ /**

scripts?: string;
/**
* Permissions of your "MyApp.app" will be overwritten inside the pkg to be
* owned by root:admin and 775 instead of 755.
*
* This is done so that Squirrel Mac updates work better when this PKG is installed
* on end user machines. Specifically 775 allows _any_ admin to update MyApp.app
* instead of it being limtied to the user who installed the app in /Applications.
*
* This is probably what you want to enable if you're shipping a PKG to enterprise
* companies. It is disabled by default purely for backwards compatibility and will be
* changed in a future major version.
*
* @defaultValue `false`
*/
openPermissionsForSquirrelMac?: boolean;
};

@@ -232,0 +247,0 @@ type OnlyValidatedFlatOptions = {

{
"name": "@electron/osx-sign",
"version": "2.1.0",
"version": "2.2.0",
"description": "Codesign Electron macOS apps",

@@ -77,3 +77,4 @@ "type": "module",

]
}
},
"packageManager": "yarn@1.22.22"
}