You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Warn on plaintext transport scheme in project URLs (DFT-01)
Add `_warn_if_plaintext()` to `dfetch/manifest/project.py` that emits a
WARNING-level log message when a project URL uses `http://`, `git://`, or
`svn://`. The check fires in `ProjectEntry.__init__` (direct `url:` field)
and in `ProjectEntry.set_remote()` (remote-resolved URLs), covering both
manifest authoring paths.
This partially closes the open gap in threat DFT-01 ("Unencrypted transport
interception") by surfacing the risk at configuration-validation time rather
than silently fetching over plaintext. Users are directed to HTTPS,
svn+https://, or SSH.
https://claude.ai/code/session_01NAFVNoL8K8itC3KRuC4wxV
- The CI test workflow (``test.yml``) generates an in-toto test result attestation (predicate type ``https://in-toto.io/attestation/test-result/v0.1``) for every release and main-branch commit. The attestation proves the full CI test suite ran against the exact source archive and every check passed, before any binary was produced from that source. Consumers can verify it using ``gh attestation verify dfetch-source.tar.gz`` with ``--predicate-type https://in-toto.io/attestation/test-result/v0.1`` and ``--cert-identity`` pinned to ``test.yml`` at the release tag ref. This provides an additional layer of assurance beyond build provenance: not only was the artifact produced from the official commit, but the test suite demonstrably passed on that exact source before any binary was built. ``.github/workflows/test.yml``
Copy file name to clipboardExpand all lines: doc/explanation/threat_model_usage.rst
+22-24Lines changed: 22 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -749,12 +749,12 @@ Dataflows
749
749
* - DF-01: Invoke dfetch command
750
750
- Developer
751
751
- A-22: dfetch Process
752
-
-
752
+
-
753
753
754
754
* - DF-02: Read manifest
755
755
- A-12: dfetch Manifest
756
756
- A-22: dfetch Process
757
-
-
757
+
-
758
758
759
759
* - DF-03a: Fetch VCS content - HTTPS/SSH
760
760
- A-22: dfetch Process
@@ -799,102 +799,102 @@ Dataflows
799
799
* - DF-07: Write vendored files
800
800
- A-22: dfetch Process
801
801
- A-13: Fetched Source Code
802
-
-
802
+
-
803
803
804
804
* - DF-08: Write dependency metadata
805
805
- A-22: dfetch Process
806
806
- A-18: Dependency Metadata
807
-
-
807
+
-
808
808
809
809
* - DF-09: Write SBOM
810
810
- A-22: dfetch Process
811
811
- A-15: SBOM Output (CycloneDX)
812
-
-
812
+
-
813
813
814
814
* - DF-16: Read dependency metadata
815
815
- A-18: Dependency Metadata
816
816
- A-22: dfetch Process
817
-
-
817
+
-
818
818
819
819
* - DF-10: Read patch for application
820
820
- A-19: Patch Files
821
821
- A-25: Patch Application (patch-ng)
822
-
-
822
+
-
823
823
824
824
* - DF-10b: Write patched files to vendor directory
825
825
- A-25: Patch Application (patch-ng)
826
826
- A-13: Fetched Source Code
827
-
-
827
+
-
828
828
829
829
* - DF-15: Vendored source to build
830
830
- A-13: Fetched Source Code
831
831
- A-11: Consumer Build System
832
-
-
832
+
-
833
833
834
834
* - DF-11: Dispatch archive bytes to extraction
835
835
- A-22: dfetch Process
836
836
- A-24: Archive Extraction (tarfile / zipfile)
837
-
-
837
+
-
838
838
839
839
* - DF-12: Write extracted archive to temp dir
840
840
- A-24: Archive Extraction (tarfile / zipfile)
841
841
- A-20: Local VCS Cache (temp)
842
-
-
842
+
-
843
843
844
844
* - DF-13: Dispatch SVN export subprocess
845
845
- A-22: dfetch Process
846
846
- A-26: SVN Export (svn export)
847
-
-
847
+
-
848
848
849
849
* - DF-14: Write SVN export to temp dir
850
850
- A-26: SVN Export (svn export)
851
851
- A-20: Local VCS Cache (temp)
852
-
-
852
+
-
853
853
854
854
* - DF-23: Dispatch git clone subprocess
855
855
- A-22: dfetch Process
856
856
- A-27: Git Clone (git init / fetch / checkout)
857
-
-
857
+
-
858
858
859
859
* - DF-24: Write git checkout to temp dir
860
860
- A-27: Git Clone (git init / fetch / checkout)
861
861
- A-20: Local VCS Cache (temp)
862
-
-
862
+
-
863
863
864
864
* - DF-17: Write audit / check reports
865
865
- A-22: dfetch Process
866
866
- A-21: Audit / Check Reports
867
-
-
867
+
-
868
868
869
869
* - DF-22: Read validated content from local VCS cache
870
870
- A-20: Local VCS Cache (temp)
871
871
- A-22: dfetch Process
872
-
-
872
+
-
873
873
874
874
* - DF-18: Read integrity hash for archive verification
875
875
- A-12: dfetch Manifest
876
876
- A-22: dfetch Process
877
-
-
877
+
-
878
878
879
879
* - DF-18b: Write computed hash to manifest (dfetch freeze)
880
880
- A-22: dfetch Process
881
881
- A-12: dfetch Manifest
882
-
-
882
+
-
883
883
884
884
* - DF-20: Author / maintain dfetch.yaml
885
885
- Developer
886
886
- A-12: dfetch Manifest
887
-
-
887
+
-
888
888
889
889
* - DF-19: VCS server publishes source attestation (not consumed by dfetch)
890
890
- A-09: Remote VCS Server
891
891
- A-23: Upstream Source Attestation (VSA)
892
-
-
892
+
-
893
893
894
894
* - DF-21: Create / maintain patch files
895
895
- Developer
896
896
- A-19: Patch Files
897
-
-
897
+
-
898
898
899
899
900
900
Threats
@@ -1712,5 +1712,3 @@ Controls
1712
1712
- Hash algorithm allowlist (SHA-256/384/512 only)
1713
1713
- DFT-30
1714
1714
- ``integrity_hash.py`` accepts only ``sha256:``, ``sha384:``, and ``sha512:`` prefixes; any other algorithm prefix is rejected at parse time. MD5 and SHA-1 are not accepted. This directly mitigates DFT-30 (SLSA M2: exploit cryptographic hash collisions) by ensuring that integrity hashes, when present, use algorithms with no known practical collision attacks. ``dfetch/vcs/integrity_hash.py``
0 commit comments