@dailephd/my-dev-kit-lab 0.3.3 → 0.4.0
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/README.md +46 -269
- package/dist/scripts/security/validate.js +177 -70
- package/dist/src/audits/codeRot/detectors/architectureDriftDetector.js +5 -2
- package/dist/src/audits/codeRot/detectors/securityValidationAssumptionRotDetector.js +5 -2
- package/dist/src/audits/core/collectSourceFacts.js +21 -10
- package/dist/src/mobile/android/audit/androidFinding.js +68 -0
- package/dist/src/mobile/android/audit/checkResultBuilder.js +97 -0
- package/dist/src/mobile/android/audit/deepLinkAudit.js +183 -0
- package/dist/src/mobile/android/audit/exportedComponentAudit.js +183 -0
- package/dist/src/mobile/android/audit/intentFilterAudit.js +128 -0
- package/dist/src/mobile/android/audit/permissionAudit.js +142 -0
- package/dist/src/mobile/android/detect/androidTargetDetection.js +18 -0
- package/dist/src/mobile/android/detect/buildFileEvidence.js +36 -0
- package/dist/src/mobile/android/detect/classify.js +150 -0
- package/dist/src/mobile/android/detect/detectAndroidProject.js +252 -0
- package/dist/src/mobile/android/detect/settingsModules.js +60 -0
- package/dist/src/mobile/android/detect/sourceEvidence.js +92 -0
- package/dist/src/mobile/android/detect/traversal.js +79 -0
- package/dist/src/mobile/android/detect/versionCatalogEvidence.js +37 -0
- package/dist/src/mobile/android/detection.js +28 -0
- package/dist/src/mobile/android/gradle/gradleMetadataCheckResult.js +120 -0
- package/dist/src/mobile/android/gradle/moduleMetadataExtractor.js +137 -0
- package/dist/src/mobile/android/gradle/pluginVersionExtractor.js +40 -0
- package/dist/src/mobile/android/gradle/readAndroidGradleMetadata.js +210 -0
- package/dist/src/mobile/android/gradle/releaseMetadataSummary.js +64 -0
- package/dist/src/mobile/android/gradle/settingsMetadata.js +20 -0
- package/dist/src/mobile/android/gradle/types.js +1 -0
- package/dist/src/mobile/android/gradle/validate/executor.js +9 -0
- package/dist/src/mobile/android/gradle/validate/operationCheckResult.js +99 -0
- package/dist/src/mobile/android/gradle/validate/operations.js +68 -0
- package/dist/src/mobile/android/gradle/validate/planner.js +49 -0
- package/dist/src/mobile/android/gradle/validate/runOptionalGradleValidation.js +113 -0
- package/dist/src/mobile/android/gradle/validate/targetMutation.js +45 -0
- package/dist/src/mobile/android/gradle/validate/taskListParser.js +24 -0
- package/dist/src/mobile/android/gradle/versionCatalogMetadata.js +94 -0
- package/dist/src/mobile/android/gradle/wrapperMetadata.js +32 -0
- package/dist/src/mobile/android/manifest/parseAndroidManifest.js +341 -0
- package/dist/src/mobile/android/manifest/types.js +29 -0
- package/dist/src/mobile/android/manifest/xml/parseXml.js +313 -0
- package/dist/src/mobile/android/profile.js +29 -0
- package/dist/src/mobile/android/report/model.js +104 -0
- package/dist/src/mobile/android/report/renderAndroidReport.js +223 -0
- package/dist/src/mobile/android/report/writeAndroidReportFiles.js +23 -0
- package/dist/src/mobile/android/targetMetadata.js +27 -0
- package/dist/src/mobile/android/validate/androidVerdict.js +248 -0
- package/dist/src/mobile/android/validate/detectionAndImmutabilityCheckResults.js +177 -0
- package/dist/src/mobile/android/validate/playReadinessChecklist.js +145 -0
- package/dist/src/mobile/android/validate/validateAndroidTarget.js +172 -0
- package/dist/src/mobile/android/validation/checkResult.js +51 -0
- package/dist/src/mobile/android/validation/result.js +25 -0
- package/dist/src/mobile/index.js +42 -0
- package/dist/src/mobile/types.js +27 -0
- package/dist/src/securityValidation/attackScenarios/attackProfile.js +2 -0
- package/dist/src/securityValidation/attackScenarios/profiles/androidProfile.js +20 -0
- package/dist/src/securityValidation/validate/cliOptions.js +46 -2
- package/package.json +2 -1
- package/tests/fixtures/android/compose-app/app/build.gradle.kts +21 -0
- package/tests/fixtures/android/compose-app/app/src/main/AndroidManifest.xml +22 -0
- package/tests/fixtures/android/compose-app/app/src/main/java/com/example/composeapp/MainActivity.kt +11 -0
- package/tests/fixtures/android/compose-app/build.gradle.kts +4 -0
- package/tests/fixtures/android/compose-app/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/compose-app/settings.gradle.kts +2 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/catalog-only-plugin/build.gradle.kts +3 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/catalog-only-plugin/gradle/libs.versions.toml +5 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/comment-safety.gradle.kts +21 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/dynamic-values.gradle.kts +17 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/groovy-literal.gradle +23 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/wrapper-malformed.properties +4 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/wrapper-missing-url.properties +3 -0
- package/tests/fixtures/android/gradle-metadata-fixtures/wrapper-with-checksum.properties +5 -0
- package/tests/fixtures/android/java-app/app/build.gradle +16 -0
- package/tests/fixtures/android/java-app/app/src/main/AndroidManifest.xml +19 -0
- package/tests/fixtures/android/java-app/app/src/main/java/com/example/javaapp/MainActivity.java +4 -0
- package/tests/fixtures/android/java-app/build.gradle +3 -0
- package/tests/fixtures/android/java-app/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/java-app/settings.gradle +2 -0
- package/tests/fixtures/android/library/build.gradle.kts +3 -0
- package/tests/fixtures/android/library/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/library/mylibrary/build.gradle.kts +13 -0
- package/tests/fixtures/android/library/mylibrary/src/main/AndroidManifest.xml +2 -0
- package/tests/fixtures/android/library/settings.gradle.kts +2 -0
- package/tests/fixtures/android/manifest-audit-fixtures/incomplete-intent-filter.xml +14 -0
- package/tests/fixtures/android/manifest-audit-fixtures/malformed-exported.xml +10 -0
- package/tests/fixtures/android/manifest-audit-fixtures/malformed.xml +5 -0
- package/tests/fixtures/android/manifest-audit-fixtures/missing-application.xml +7 -0
- package/tests/fixtures/android/manifest-audit-fixtures/missing-component-name.xml +11 -0
- package/tests/fixtures/android/manifest-audit-fixtures/permission-coverage.xml +29 -0
- package/tests/fixtures/android/manifest-audit-fixtures/risky-components.xml +62 -0
- package/tests/fixtures/android/manifest-audit-fixtures/risky-deep-links.xml +45 -0
- package/tests/fixtures/android/manifest-audit-fixtures/unresolved-placeholder.xml +14 -0
- package/tests/fixtures/android/manifest-audit-fixtures/unusual-namespace-prefix.xml +11 -0
- package/tests/fixtures/android/multi-module/app/build.gradle.kts +22 -0
- package/tests/fixtures/android/multi-module/app/src/androidTest/java/com/example/multimodule/app/ExampleInstrumentedTest.kt +3 -0
- package/tests/fixtures/android/multi-module/app/src/main/AndroidManifest.xml +11 -0
- package/tests/fixtures/android/multi-module/app/src/test/java/com/example/multimodule/app/ExampleUnitTest.kt +3 -0
- package/tests/fixtures/android/multi-module/build.gradle.kts +5 -0
- package/tests/fixtures/android/multi-module/core/build.gradle.kts +14 -0
- package/tests/fixtures/android/multi-module/core/src/main/AndroidManifest.xml +2 -0
- package/tests/fixtures/android/multi-module/feature-login/build.gradle.kts +18 -0
- package/tests/fixtures/android/multi-module/feature-login/src/main/AndroidManifest.xml +2 -0
- package/tests/fixtures/android/multi-module/gradle/libs.versions.toml +8 -0
- package/tests/fixtures/android/multi-module/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/multi-module/settings.gradle.kts +4 -0
- package/tests/fixtures/android/non-android-gradle/build.gradle.kts +3 -0
- package/tests/fixtures/android/non-android-gradle/core/build.gradle.kts +3 -0
- package/tests/fixtures/android/non-android-gradle/core/src/main/java/com/example/core/Core.java +4 -0
- package/tests/fixtures/android/non-android-gradle/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/non-android-gradle/settings.gradle.kts +2 -0
- package/tests/fixtures/android/partial/app/build.gradle.kts +7 -0
- package/tests/fixtures/android/partial/settings.gradle.kts +2 -0
- package/tests/fixtures/android/xml-view-app/app/build.gradle.kts +17 -0
- package/tests/fixtures/android/xml-view-app/app/src/main/AndroidManifest.xml +31 -0
- package/tests/fixtures/android/xml-view-app/app/src/main/kotlin/com/example/xmlviewapp/MainActivity.kt +7 -0
- package/tests/fixtures/android/xml-view-app/app/src/main/res/layout/activity_main.xml +4 -0
- package/tests/fixtures/android/xml-view-app/build.gradle.kts +4 -0
- package/tests/fixtures/android/xml-view-app/gradle/wrapper/gradle-wrapper.properties +4 -0
- package/tests/fixtures/android/xml-view-app/settings.gradle.kts +2 -0
- package/tests/fixtures/audits/mixed-language/mixed-docs-claims/README.md +16 -0
- package/tests/fixtures/audits/mixed-language/mixed-docs-claims/build.gradle.kts +4 -0
- package/tests/fixtures/audits/mixed-language/mixed-docs-claims/src/main/java/com/example/Widget.java +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-docs-claims/src/main/kotlin/com/example/Gadget.kt +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/README.md +10 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/build/Main.class +1 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/dist/index.js +1 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/generated/schema.ts +1 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/src/index.ts +3 -0
- package/tests/fixtures/audits/mixed-language/mixed-generated-vendor/vendor/lib.py +2 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/README.md +10 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/build.gradle.kts +8 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/settings.gradle.kts +1 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/src/main/java/com/example/FooService.java +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/src/main/kotlin/com/example/BarService.kt +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/src/test/java/com/example/FooServiceTest.java +8 -0
- package/tests/fixtures/audits/mixed-language/mixed-java-kotlin/src/test/kotlin/com/example/BarServiceTest.kt +8 -0
- package/tests/fixtures/audits/mixed-language/mixed-python-ts/README.md +8 -0
- package/tests/fixtures/audits/mixed-language/mixed-python-ts/src/app.py +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-python-ts/src/index.ts +3 -0
- package/tests/fixtures/audits/mixed-language/mixed-python-ts/tests/test_app.py +5 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-js/README.md +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-js/src/helper.js +5 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-js/src/index.ts +3 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-js/tests/index.sample.ts +5 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/README.md +10 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/build.gradle.kts +4 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/pytests/test_app.py +5 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/src/app.py +2 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/src/helper.js +5 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/src/index.ts +3 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/src/main/java/com/example/Multiplier.java +7 -0
- package/tests/fixtures/audits/mixed-language/mixed-ts-python-jvm/src/main/kotlin/com/example/Divider.kt +7 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
3
|
+
<application android:label="Multi Module App">
|
|
4
|
+
<activity android:name=".MainActivity" android:exported="true">
|
|
5
|
+
<intent-filter>
|
|
6
|
+
<action android:name="android.intent.action.MAIN" />
|
|
7
|
+
<category android:name="android.intent.category.LAUNCHER" />
|
|
8
|
+
</intent-filter>
|
|
9
|
+
</activity>
|
|
10
|
+
</application>
|
|
11
|
+
</manifest>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
plugins {
|
|
2
|
+
id("com.android.library")
|
|
3
|
+
id("org.jetbrains.kotlin.android")
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
android {
|
|
7
|
+
namespace = "com.example.multimodule.featurelogin"
|
|
8
|
+
compileSdk = 34
|
|
9
|
+
|
|
10
|
+
defaultConfig {
|
|
11
|
+
minSdk = 24
|
|
12
|
+
targetSdk = 34
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
dependencies {
|
|
17
|
+
implementation(project(":core"))
|
|
18
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
[versions]
|
|
2
|
+
agp = "8.2.0"
|
|
3
|
+
kotlin = "1.9.22"
|
|
4
|
+
|
|
5
|
+
[plugins]
|
|
6
|
+
android-application = { id = "com.android.application", version.ref = "agp" }
|
|
7
|
+
android-library = { id = "com.android.library", version.ref = "agp" }
|
|
8
|
+
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
plugins {
|
|
2
|
+
id("com.android.application")
|
|
3
|
+
id("org.jetbrains.kotlin.android")
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
android {
|
|
7
|
+
namespace = "com.example.xmlviewapp"
|
|
8
|
+
compileSdk = 34
|
|
9
|
+
|
|
10
|
+
defaultConfig {
|
|
11
|
+
applicationId = "com.example.xmlviewapp"
|
|
12
|
+
minSdk = 21
|
|
13
|
+
targetSdk = 34
|
|
14
|
+
versionCode = 1
|
|
15
|
+
versionName = "1.0"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
3
|
+
|
|
4
|
+
<application
|
|
5
|
+
android:label="XML View App"
|
|
6
|
+
android:icon="@mipmap/ic_launcher"
|
|
7
|
+
android:allowBackup="false">
|
|
8
|
+
|
|
9
|
+
<activity
|
|
10
|
+
android:name=".MainActivity"
|
|
11
|
+
android:exported="true">
|
|
12
|
+
<intent-filter>
|
|
13
|
+
<action android:name="android.intent.action.MAIN" />
|
|
14
|
+
<category android:name="android.intent.category.LAUNCHER" />
|
|
15
|
+
</intent-filter>
|
|
16
|
+
</activity>
|
|
17
|
+
|
|
18
|
+
<activity
|
|
19
|
+
android:name=".DeepLinkActivity"
|
|
20
|
+
android:exported="true">
|
|
21
|
+
<intent-filter android:autoVerify="true">
|
|
22
|
+
<action android:name="android.intent.action.VIEW" />
|
|
23
|
+
<category android:name="android.intent.category.DEFAULT" />
|
|
24
|
+
<category android:name="android.intent.category.BROWSABLE" />
|
|
25
|
+
<data android:scheme="https" android:host="example.com" android:pathPrefix="/share" />
|
|
26
|
+
</intent-filter>
|
|
27
|
+
</activity>
|
|
28
|
+
|
|
29
|
+
</application>
|
|
30
|
+
|
|
31
|
+
</manifest>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# mixed-docs-claims fixture
|
|
2
|
+
|
|
3
|
+
Current: this fixture ships `com.example.Widget` (Java) and `com.example.Gadget`
|
|
4
|
+
(Kotlin), matching the classes actually present under `src/main/java` and
|
|
5
|
+
`src/main/kotlin` -- these are current, accurate claims about this fixture's
|
|
6
|
+
own source.
|
|
7
|
+
|
|
8
|
+
Planned (not yet implemented): Android-specific validation of this project's
|
|
9
|
+
JVM sources is planned for a later `v0.4.x` release track.
|
|
10
|
+
|
|
11
|
+
Out of scope: this fixture's `build.gradle.kts` is never executed by Gradle,
|
|
12
|
+
and `pom.xml`-style Maven execution is not performed against this project --
|
|
13
|
+
static classification only.
|
|
14
|
+
|
|
15
|
+
Future (not yet implemented): a combined `quality`, `project`, or `all`
|
|
16
|
+
audit type covering this fixture does not exist yet.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# mixed-generated-vendor fixture
|
|
2
|
+
|
|
3
|
+
Current: a single real source file (`src/index.ts`) alongside
|
|
4
|
+
`generated/schema.ts`, `dist/index.js`, `build/Main.class`, and
|
|
5
|
+
`vendor/lib.py` -- files that live under path segments the existing
|
|
6
|
+
`projectInventory.ts` policy already classifies as generated/build-output/
|
|
7
|
+
vendor. Used to prove those files do not pollute source-facts collection
|
|
8
|
+
(role stays generated/build-output/vendor, not source/test) and are excluded
|
|
9
|
+
from `SourceFactsSnapshot.files` the same way `sourceFacts.test.ts`'s
|
|
10
|
+
existing vendor/generated test already proves for a single language.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
binary-placeholder
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = { identity: (v) => v };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type GeneratedSchema = { id: string };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# mixed-java-kotlin fixture
|
|
2
|
+
|
|
3
|
+
Current: a conventional Gradle Kotlin DSL JVM project layout with one Java
|
|
4
|
+
class (`src/main/java/com/example/FooService.java`), one Kotlin class
|
|
5
|
+
(`src/main/kotlin/com/example/BarService.kt`), and matching test classes
|
|
6
|
+
under `src/test/java` and `src/test/kotlin`. `build.gradle.kts` and
|
|
7
|
+
`settings.gradle.kts` are present to prove Gradle Kotlin DSL build scripts
|
|
8
|
+
are classified as config, not Kotlin source. Used to prove Java and Kotlin
|
|
9
|
+
source facts coexist in one JVM-style project without disrupting each
|
|
10
|
+
other's declarations or role classification.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rootProject.name = "mixed-java-kotlin-fixture"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# mixed-python-ts fixture
|
|
2
|
+
|
|
3
|
+
Current: a Python module (`src/app.py`) and a TypeScript module
|
|
4
|
+
(`src/index.ts`) that both declare an equivalent `add` function/declaration,
|
|
5
|
+
plus one Python test file. Used to prove Python and TypeScript source facts
|
|
6
|
+
coexist without schema or ordering drift, and that a duplicate-name
|
|
7
|
+
declaration across languages is not merged into a single cross-language
|
|
8
|
+
candidate.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# mixed-ts-js fixture
|
|
2
|
+
|
|
3
|
+
Current: a minimal TypeScript entrypoint (`src/index.ts`) calling a plain
|
|
4
|
+
JavaScript helper (`src/helper.js`), with one test file. Used by
|
|
5
|
+
`tests/audits/mixedLanguageSourceFacts.test.ts` to prove TypeScript and
|
|
6
|
+
JavaScript files coexist in a single source-facts collection without schema
|
|
7
|
+
or ordering drift.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# mixed-ts-python-jvm fixture
|
|
2
|
+
|
|
3
|
+
Current: TypeScript, JavaScript, Python, Java, and Kotlin source files
|
|
4
|
+
coexisting in one target, plus a `build.gradle.kts` JVM metadata file. Used
|
|
5
|
+
to prove all currently-supported language families (v0.3.3 baseline) can be
|
|
6
|
+
collected together without crashing, without cross-language schema drift,
|
|
7
|
+
and without one analyzer's output disturbing another's.
|
|
8
|
+
|
|
9
|
+
Planned (not implemented): Android-specific source-set validation and
|
|
10
|
+
manual pentest coverage are out of scope for this fixture and for v0.3.4.
|