plexavo 0.2.7__tar.gz → 0.2.8__tar.gz
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.
- {plexavo-0.2.7 → plexavo-0.2.8}/PKG-INFO +1 -1
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/__init__.py +1 -1
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/storage.py +11 -5
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/PKG-INFO +1 -1
- {plexavo-0.2.7 → plexavo-0.2.8}/pyproject.toml +1 -1
- {plexavo-0.2.7 → plexavo-0.2.8}/LICENSE +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/README.md +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/__main__.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/auth.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/aws_profile_setup.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/__init__.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/encryption.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/iam.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/iam_hygiene.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/logging.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/network.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/checks/usage.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/cli.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/findings.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/interactive.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/principals.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/__init__.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/ai_narration.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/fonts/DejaVuSans-Bold.ttf +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/fonts/DejaVuSans-BoldOblique.ttf +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/fonts/DejaVuSans-Oblique.ttf +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/fonts/DejaVuSans.ttf +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/fonts/GEIST-FONT-LICENSE.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/html_report.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/pdf.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/report/templates/report.html.j2 +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo/scoring.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/SOURCES.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/dependency_links.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/entry_points.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/requires.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/plexavo.egg-info/top_level.txt +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/setup.cfg +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_ai_narration_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_auth_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_cli_entrypoint.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_encryption_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_iam_hygiene_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_iam_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_logging_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_network_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_report_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_scoring.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_storage_offline.py +0 -0
- {plexavo-0.2.7 → plexavo-0.2.8}/tests/test_usage_offline.py +0 -0
|
@@ -139,7 +139,10 @@ def check_22_access_logging_disabled(s3, bucket_names: list) -> list[Finding]:
|
|
|
139
139
|
|
|
140
140
|
Medium, not Critical: this is a forensics gap, not an exposure by
|
|
141
141
|
itself — a bucket with logging off isn't more reachable than one with
|
|
142
|
-
it on
|
|
142
|
+
it on. Whether object-level access is actually unreviewable after the
|
|
143
|
+
fact depends on whether it's captured another way (e.g. CloudTrail S3
|
|
144
|
+
data events), which Plexavo does not check — so the finding language
|
|
145
|
+
stays careful not to claim investigation is impossible."""
|
|
143
146
|
findings = []
|
|
144
147
|
for name in bucket_names:
|
|
145
148
|
config = s3.get_bucket_logging(Bucket=name)
|
|
@@ -150,10 +153,13 @@ def check_22_access_logging_disabled(s3, bucket_names: list) -> list[Finding]:
|
|
|
150
153
|
title="S3 Bucket Access Logging Not Enabled",
|
|
151
154
|
severity=Severity.MEDIUM,
|
|
152
155
|
resource_arn=f"arn:aws:s3:::{name}",
|
|
153
|
-
raw_detail=f"Bucket '{name}' has no server access logging configured. "
|
|
154
|
-
f"
|
|
155
|
-
f"
|
|
156
|
-
f"after the fact
|
|
156
|
+
raw_detail=f"Bucket '{name}' has no S3 server access logging configured. "
|
|
157
|
+
f"Server access logging records object-level requests to the "
|
|
158
|
+
f"bucket, which supports reconstructing who accessed or changed "
|
|
159
|
+
f"what after the fact. If this bucket's access is already "
|
|
160
|
+
f"tightly scoped and audited another way (for example CloudTrail "
|
|
161
|
+
f"S3 data events, which Plexavo does not check), this finding may "
|
|
162
|
+
f"be lower priority for that specific setup.",
|
|
157
163
|
account_context=f"bucket={name}",
|
|
158
164
|
))
|
|
159
165
|
return findings
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plexavo"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.8"
|
|
8
8
|
description = "Open-source AWS misconfiguration scanner — runs with your own local AWS credentials, nothing sent to anyone else."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "AGPL-3.0-or-later" }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|