Updates to scanner with CVE saving and auto update
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 276 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 14 KiB |
@@ -388,7 +388,11 @@ extension VulnerabilityService {
|
|||||||
// A package from a third-party PPA or custom repository cannot be
|
// A package from a third-party PPA or custom repository cannot be
|
||||||
// certified solely using the Ubuntu distribution advisory.
|
// certified solely using the Ubuntu distribution advisory.
|
||||||
// Require positive repository provenance before issuing a verdict.
|
// Require positive repository provenance before issuing a verdict.
|
||||||
let hasUbuntuOrigin = false // Conservative: repository listing does not prove installed-version origin.
|
let hasUbuntuOrigin = report.packageOrigins.contains { line in
|
||||||
|
// Only an explicit, independently verified installed-version attestation
|
||||||
|
// may unlock vendor conclusions. Repository listings alone never qualify.
|
||||||
|
line == "VERIFIED_INSTALLED_ORIGIN|ubuntu|" + report.ubuntuCodename
|
||||||
|
}
|
||||||
guard hasUbuntuOrigin else {
|
guard hasUbuntuOrigin else {
|
||||||
return assessments.map { original in
|
return assessments.map { original in
|
||||||
var item = original
|
var item = original
|
||||||
|
|||||||
+10
-1
@@ -21,7 +21,16 @@ APP="$DERIVED/Build/Products/Debug/PHPGuard.app"
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
"$ROOT/Scripts/install-app-icon.sh" "$APP"
|
# Xcode generates AppIcon.icns from Assets.xcassets.
|
||||||
|
# Verify that the compiled application contains its icon.
|
||||||
|
ICON="$APP/Contents/Resources/AppIcon.icns"
|
||||||
|
|
||||||
|
if [[ ! -s "$ICON" ]]; then
|
||||||
|
echo "ERROR: Compiled PHPGuard application icon missing: $ICON" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "PHPGuard application icon verified."
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Build complete: $APP"
|
echo "Build complete: $APP"
|
||||||
|
|||||||
+9
-1
@@ -1 +1,9 @@
|
|||||||
xcodebuild -list -project PHPGuard.xcodeproj
|
#!/bin/zsh
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
python3 -m unittest discover -s tests -v
|
||||||
|
if [[ "$(uname -s)" == "Darwin" ]] && command -v xcodebuild >/dev/null 2>&1; then
|
||||||
|
xcodebuild -project PHPGuard.xcodeproj -scheme PHPGuard -configuration Debug -derivedDataPath .build CODE_SIGNING_ALLOWED=NO build
|
||||||
|
else
|
||||||
|
echo "SKIP: Xcode build requires macOS/Xcode"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -20,3 +20,11 @@ The scan collects package inventory and upstream NVD PHP CVE *candidates*. A ver
|
|||||||
5. Run Xcode build, UI checks, signing and notarization on macOS; this archive has not been built in Xcode here.
|
5. Run Xcode build, UI checks, signing and notarization on macOS; this archive has not been built in Xcode here.
|
||||||
|
|
||||||
This package is a security-hardening development snapshot, **not a production release**.
|
This package is a security-hardening development snapshot, **not a production release**.
|
||||||
|
|
||||||
|
## Build verification update
|
||||||
|
|
||||||
|
`Scripts/test.sh` executes the Python scanner safety regressions and (on macOS) an Xcode Debug build. The project does not yet have an XCTest target.
|
||||||
|
|
||||||
|
The hard-coded unreachable Ubuntu branch has been replaced with an explicit attestation check. **The scanner does not emit such attestations**; Ubuntu advisory verdicts therefore remain Unverified until installed-version origin can be independently verified. Do not manufacture this marker from repository listings.
|
||||||
|
|
||||||
|
Unassigned application icon images have been removed from this source archive.
|
||||||
|
|||||||
@@ -20,6 +20,22 @@ class ScannerTests(unittest.TestCase):
|
|||||||
def test_no_package_mutation(self):
|
def test_no_package_mutation(self):
|
||||||
for command in ('apt upgrade','apt install','dnf update','yum update','apk upgrade','zypper update'):
|
for command in ('apt upgrade','apt install','dnf update','yum update','apk upgrade','zypper update'):
|
||||||
self.assertNotIn(command,self.script)
|
self.assertNotIn(command,self.script)
|
||||||
|
def test_provenance_guard_is_not_hardcoded_false(self):
|
||||||
|
code=(ROOT/'PHPGuard/VulnerabilityService.swift').read_text()
|
||||||
|
self.assertNotIn('let hasUbuntuOrigin = false',code)
|
||||||
|
self.assertIn('VERIFIED_INSTALLED_ORIGIN|ubuntu|',code)
|
||||||
|
# Scanner does not issue an attestation from apt-cache policy alone.
|
||||||
|
self.assertNotIn('VERIFIED_INSTALLED_ORIGIN|ubuntu|',self.script)
|
||||||
|
def test_no_false_secure_claims(self):
|
||||||
|
code=(ROOT/'PHPGuard/VulnerabilityService.swift').read_text()
|
||||||
|
self.assertIn('Unverified',code)
|
||||||
|
def test_icon_assets_are_assigned(self):
|
||||||
|
import json
|
||||||
|
directory=ROOT/'PHPGuard/Assets.xcassets/AppIcon.appiconset'
|
||||||
|
metadata=json.loads((directory/'Contents.json').read_text())
|
||||||
|
assigned={i.get('filename') for i in metadata['images']}
|
||||||
|
unassigned={p.name for p in directory.glob('*.png')}-assigned
|
||||||
|
self.assertFalse(unassigned,unassigned)
|
||||||
def test_unknown_vendor_not_verified(self):
|
def test_unknown_vendor_not_verified(self):
|
||||||
store=(ROOT/'PHPGuard/AuditStore.swift').read_text()
|
store=(ROOT/'PHPGuard/AuditStore.swift').read_text()
|
||||||
self.assertIn('No vendor advisory adapter for this distribution',store)
|
self.assertIn('No vendor advisory adapter for this distribution',store)
|
||||||
|
|||||||
Reference in New Issue
Block a user