Subject: buster-pu: package flightcrew/0.7.2+dfsg-13+deb10u1
Package: release.debian.org
User: release.debian....@packages.debian.org
Usertags: pu
Tags: buster
Severity: normal

Hello,

I would like to update the flightcrew package in Buster release.

The goal is to fix the CVE-2019-13241.

Please find attached the debdiff.

Best Regards,
François


-- System Information:
Debian Release: 10.1
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-debug'), (500,
'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-6-amd64 (SMP w/16 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8),
LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
From 1ee41f78678f520402823b1524e02cba5c5d0d88 Mon Sep 17 00:00:00 2001
From: Francois Mazen <franc...@mzf.fr>
Date: Tue, 10 Sep 2019 09:27:47 +0200
Subject: [PATCH] Fix CVE-2019-13241

---
 debian/changelog                         |  6 ++++++
 debian/patches/fix-CVE-2019-13241.diff   | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 debian/patches/series                    |  1 +
 debian/source/include-binaries           |  1 +
 debian/tests/CVE-2019-13241              | 28 ++++++++++++++++++++++++++++
 debian/tests/CVE-2019-13241_zip-slip.zip | Bin 0 -> 545 bytes
 debian/tests/control                     |  2 ++
 7 files changed, 96 insertions(+)
 create mode 100644 debian/patches/fix-CVE-2019-13241.diff
 create mode 100644 debian/source/include-binaries
 create mode 100644 debian/tests/CVE-2019-13241
 create mode 100644 debian/tests/CVE-2019-13241_zip-slip.zip
 create mode 100644 debian/tests/control

diff --git a/debian/changelog b/debian/changelog
index b6a222f..dd9a681 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+flightcrew (0.7.2+dfsg-13+deb10u1) buster; urgency=high
+
+  * Fix CVE-2019-13241 for buster.
+
+ -- Francois Mazen <franc...@mzf.fr>  Sun, 08 Sep 2019 21:55:23 +0200
+
 flightcrew (0.7.2+dfsg-13) unstable; urgency=medium
 
   [ Ondřej Nový ]
diff --git a/debian/patches/fix-CVE-2019-13241.diff b/debian/patches/fix-CVE-2019-13241.diff
new file mode 100644
index 0000000..5357d6a
--- /dev/null
+++ b/debian/patches/fix-CVE-2019-13241.diff
@@ -0,0 +1,58 @@
+Description: fix CVE-2019-13241
+Author: Francois Mazen <franc...@mzf.fr>
+
+
+--- a/src/zipios/src/zipextraction.cpp
++++ b/src/zipios/src/zipextraction.cpp
+@@ -63,6 +63,43 @@
+         fs::create_directory( filepath );
+ }
+ 
++void CheckPathTraversalVulnerability(const fs::path& root_folder,  const fs::path& file_path)
++{
++
++    fs::path canonical_path = fs::weakly_canonical(file_path);
++    fs::path canonical_root_path = fs::weakly_canonical(root_folder);
++
++    fs::path::iterator root_iterator = canonical_root_path.begin();
++    fs::path::iterator path_iterator = canonical_path.begin();
++    bool isDifferenceFound = false;
++    while(!isDifferenceFound &&
++          root_iterator != canonical_root_path.end() &&
++          path_iterator != canonical_path.end())
++    {
++        if((*root_iterator) != (*path_iterator))
++        {
++            isDifferenceFound = true;
++        }
++        else
++        {
++            ++root_iterator;
++            ++path_iterator;
++        }
++    }
++
++    if(!isDifferenceFound &&
++       root_iterator != canonical_root_path.end() &&
++       path_iterator == canonical_path.end())
++    {
++        // We reached the end of the path without iterating the whole root.
++        isDifferenceFound = true;
++    }
++
++    if(isDifferenceFound)
++    {
++        throw InvalidStateException( "Corrupt epub detected with local file path: " + file_path.string()) ;
++    }
++}
+ 
+ void ExtractZipToFolder( const fs::path &path_to_zip, const fs::path &path_to_folder )
+ {
+@@ -75,6 +112,7 @@
+ 
+         fs::path new_file_path = path_to_folder / (*it)->getName();
+ 
++        CheckPathTraversalVulnerability(path_to_folder, new_file_path);
+         CreateFilepath( new_file_path );
+         WriteEntryToFile( *stream, new_file_path );
+     }
diff --git a/debian/patches/series b/debian/patches/series
index dd411b2..f8c0cdb 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@ disable_filesystem3_overload
 modify_cmake_for_debian
 reproducible-build
 use_random_unique_tmp_path
+fix-CVE-2019-13241.diff
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 0000000..5b216eb
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1 @@
+debian/tests/CVE-2019-13241_zip-slip.zip
diff --git a/debian/tests/CVE-2019-13241 b/debian/tests/CVE-2019-13241
new file mode 100644
index 0000000..baac7e0
--- /dev/null
+++ b/debian/tests/CVE-2019-13241
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Check the CVE-2019-13241 vulnerability.
+# See https://security-tracker.debian.org/tracker/CVE-2019-13241
+# Author: Francois Mazen <franc...@mzf.fr>
+
+EVIL_FILE=/tmp/evil.txt
+
+if [ -f "$EVIL_FILE" ]; then
+    echo "$EVIL_FILE exists, removing it."
+    rm -f $EVIL_FILE
+else 
+    echo "$EVIL_FILE does not exist"
+fi
+
+echo "Opening the evil zip file."
+flightcrew-cli --input-file CVE-2019-13241_zip-slip.zip 2>&1
+
+if [ -f "$EVIL_FILE" ]; then
+    echo "$EVIL_FILE exists! The program is vulnerable."
+    exit 1
+else 
+    echo "$EVIL_FILE does not exist, no vulnerability."
+    exit 0
+fi
+
+
+
diff --git a/debian/tests/CVE-2019-13241_zip-slip.zip b/debian/tests/CVE-2019-13241_zip-slip.zip
new file mode 100644
index 0000000000000000000000000000000000000000..38b3f499de0163e62ca15ce18350a9d9a477a51b
GIT binary patch
literal 545
zc$^FHW@h1H0D=Au{XYEp{-1?`Y!K#PkYPyA&ri`SsVE5z;bdU8U359h4v0%DxEUB(
zzA-W|u!sQFm1JZVD*#cV0!Xz&eqJh90MJkou%T0dh9)>xTY`8X+ycaUdin!`N^%SI
zQ_C`QKpuiSI!^&41a&ndlN>Xyz>olo13k^Kq!GkI1Pv=BXwZTMWSR&w?ofb%C5@qj
WBuoOlS=m4?Vgf>tN4Y_sWdH#5lWQ0N

literal 0
Hc$@<O00001

diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..d4371d1
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,2 @@
+Tests: CVE-2019-13241
+Depends: flightcrew
--
libgit2 0.27.7

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to