]> git.saurik.com Git - apt.git/blobdiff - test/integration/test-releasefile-verification
* SECURITY UPDATE: InRelease verification bypass
[apt.git] / test / integration / test-releasefile-verification
index 961c498950dc716fc3b85b6744e13dc82f3c6fab..01fb2e529c194baab3638721ad4acf95be36da3e 100755 (executable)
@@ -19,13 +19,12 @@ prepare() {
        for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
                touch -d 'now - 6 hours' $release
        done
-       rm -rf rootdir/var/cache/apt/archives
-       rm -f rootdir/var/cache/apt/*.bin
+       aptget clean
        cp $1 aptarchive/Packages
        find aptarchive -name 'Release' -delete
        cat aptarchive/Packages | gzip > aptarchive/Packages.gz
        cat aptarchive/Packages | bzip2 > aptarchive/Packages.bz2
-       cat aptarchive/Packages | lzma > aptarchive/Packages.lzma
+       cat aptarchive/Packages | xz --format=lzma > aptarchive/Packages.lzma
        generatereleasefiles "$DATE"
 }
 
@@ -154,7 +153,36 @@ runtest() {
        installaptold
 }
 
+runtest2() {
+       prepare ${PKGFILE}
+       rm -rf rootdir/var/lib/apt/lists
+       signreleasefiles 'Joe Sixpack'
+       msgtest 'Cold archive signed by' 'Joe Sixpack'
+       aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
+
+       # New .deb but now an unsigned archive. For example MITM to circumvent
+       # package verification.
+       prepare ${PKGFILE}-new
+       find aptarchive/ -name InRelease -delete
+       find aptarchive/ -name Release.gpg -delete
+       msgtest 'Warm archive signed by' 'nobody'
+       aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
+       testequal "$(cat ${PKGFILE}-new)
+" aptcache show apt
+       failaptnew
+
+       # Unsigned archive from the beginning must also be detected.
+       rm -rf rootdir/var/lib/apt/lists
+       msgtest 'Cold archive signed by' 'nobody'
+       aptget update 2>&1 | grep -E '^(W|E): ' > /dev/null && msgfail || msgpass
+       testequal "$(cat ${PKGFILE}-new)
+" aptcache show apt
+       failaptnew
+}
+runtest2
+
+
 DELETEFILE="InRelease"
 runtest
-DELETEFILE="Release.gpg"
-runtest
+#DELETEFILE="Release.gpg"
+#runtest