<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://pkp.sfu.ca/bugzilla/bugzilla.dtd">

<bugzilla version="4.2.5+"
          urlbase="http://pkp.sfu.ca/bugzilla/"
          
          maintainer="pkp-hosted@sfu.ca"
>

    <bug>
          <bug_id>6696</bug_id>
          
          <creation_ts>2011-06-20 11:19:00 -0700</creation_ts>
          <short_desc>Uploads must not use supplied file extension</short_desc>
          <delta_ts>2012-06-06 15:26:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>OJS</product>
          <component>Editors</component>
          <version>2.3.6</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Smecher">alec</reporter>
          <assigned_to name="PKP Support">pkp-support</assigned_to>
          <cc>ales.kladnik</cc>
    
    <cc>colin.prince</cc>
          <cf_reportedversion>2.3.5</cf_reportedversion>
          

      

      

      

          <long_desc isprivate="0">
            <commentid>24065</commentid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2011-06-20 11:19:38 -0700</bug_when>
            <thetext>File uploads into public should use a file extension validated via whitelist by the file manager (e.g. PublicFileManager::getImageExtension) rather than the file extension supplied by the client (e.g. PublicFileManager::getExtension) or detected by the server (e.g. mime_content_type).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>24066</commentid>
              <attachid>3568</attachid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2011-06-20 11:30:10 -0700</bug_when>
            <thetext>Created attachment 3568
Patch against OJS 2.3.3, 2.3.4, 2.3.5</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>24067</commentid>
              <attachid>3569</attachid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2011-06-20 11:36:44 -0700</bug_when>
            <thetext>Created attachment 3569
Patch against OJS 2.2.1, 2.2.2, 2.2.3, 2.2.4, 2.3.0, 2.3.1, 2.3.2</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>24068</commentid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2011-06-20 11:40:46 -0700</bug_when>
            <thetext>NOTE: The patch for bug #6689 must be applied before these patches will apply cleanly.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>24081</commentid>
            <who name="Ales Kladnik">ales.kladnik</who>
            <bug_when>2011-06-21 03:33:46 -0700</bug_when>
            <thetext>(In reply to comment #0)
&gt; File uploads into public should use a file extension validated via whitelist by
&gt; the file manager (e.g. PublicFileManager::getImageExtension) rather than the
&gt; file extension supplied by the client (e.g. PublicFileManager::getExtension) or
&gt; detected by the server (e.g. mime_content_type).

I applied this patch after #6689, but the behaviour is now a bit strange. When uploading a cover image file for an issue, I could still upload a file named &quot;setup.exe&quot;, however now it gets renamed to &quot;cover_issue_120_en_US.flv&quot;. I tried also extensions php, js, tlp, pdf, and they were not accepted. Then I tried several other .exe files and all were accepted and renamed to .flv after upload.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <commentid>24083</commentid>
            <who name="Alec Smecher">alec</who>
            <bug_when>2011-06-21 08:41:42 -0700</bug_when>
            <thetext>Ales, the file type check works by getting the file&apos;s MIME type, then mapping that to a file extension according to this list:

image/gif: .gif
image/jpeg, image/pjpeg: .jpg
image/png, image/x-png: .png
image/vnd.microsoft.icon, image/x-icon, image/ico: .ico
application/x-shockwave-flash: .swf
video/x-flv, application/x-flash-video, flv-application/octet-stream, application/octet-stream: .flv
audio/mpeg: .mp3
audio/x-aiff: .aiff
audio/x-wav: .wav
video/mpeg: .mpg
video/quicktime: .mov
video/mp4: .mp4
text/javascript: .js

Anything not in this list is not allowed. It&apos;s used for many parts of the system to allow multimedia content (e.g. images in articles).

What you&apos;re probably seeing is an .exe detected as application/octet-stream, which maps to .flv for flash video. (This entry is for compatibility with systems that don&apos;t have a specific MIME entry for .flv files.) As long as the file extension is NOT trusted i.e. as .exe or .php, the web server shouldn&apos;t invoke the executable.

I suppose as a tune-up we could limit certain areas to only plain old image files, i.e. PDF, PNG, and GIF, as per the error messages...</thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3568</attachid>
            <date>2011-06-20 11:30:00 -0700</date>
            <delta_ts>2011-06-20 11:30:10 -0700</delta_ts>
            <desc>Patch against OJS 2.3.3, 2.3.4, 2.3.5</desc>
            <filename>6696-ojs2.3.3.diff</filename>
            <type>text/plain</type>
            <size>2177</size>
            <attacher>alec</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2NsYXNzZXMvaXNzdWUvZm9ybS9Jc3N1ZUZvcm0uaW5jLnBocCBiL2NsYXNz
ZXMvaXNzdWUvZm9ybS9Jc3N1ZUZvcm0uaW5jLnBocAppbmRleCAyYzc5ODViLi4wMTk5MjBmIDEw
MDY0NAotLS0gYS9jbGFzc2VzL2lzc3VlL2Zvcm0vSXNzdWVGb3JtLmluYy5waHAKKysrIGIvY2xh
c3Nlcy9pc3N1ZS9mb3JtL0lzc3VlRm9ybS5pbmMucGhwCkBAIC0zNTMsNyArMzUzLDggQEAgY2xh
c3MgSXNzdWVGb3JtIGV4dGVuZHMgRm9ybSB7CiAJCWlmICgkcHVibGljRmlsZU1hbmFnZXItPnVw
bG9hZGVkRmlsZUV4aXN0cygnY292ZXJQYWdlJykpIHsKIAkJCSRqb3VybmFsID0gUmVxdWVzdDo6
Z2V0Sm91cm5hbCgpOwogCQkJJG9yaWdpbmFsRmlsZU5hbWUgPSAkcHVibGljRmlsZU1hbmFnZXIt
PmdldFVwbG9hZGVkRmlsZU5hbWUoJ2NvdmVyUGFnZScpOwotCQkJJG5ld0ZpbGVOYW1lID0gJ2Nv
dmVyX2lzc3VlXycgLiAkaXNzdWVJZCAuICdfJyAuICR0aGlzLT5nZXRGb3JtTG9jYWxlKCkgLiAn
LicgLiAkcHVibGljRmlsZU1hbmFnZXItPmdldEV4dGVuc2lvbigkb3JpZ2luYWxGaWxlTmFtZSk7
CisJCQkkdHlwZSA9ICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0VXBsb2FkZWRGaWxlVHlwZSgnY292
ZXJQYWdlJyk7CisJCQkkbmV3RmlsZU5hbWUgPSAnY292ZXJfaXNzdWVfJyAuICRpc3N1ZUlkIC4g
J18nIC4gJHRoaXMtPmdldEZvcm1Mb2NhbGUoKSAuICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0SW1h
Z2VFeHRlbnNpb24oJHR5cGUpOwogCQkJJHB1YmxpY0ZpbGVNYW5hZ2VyLT51cGxvYWRKb3VybmFs
RmlsZSgkam91cm5hbC0+Z2V0SWQoKSwgJ2NvdmVyUGFnZScsICRuZXdGaWxlTmFtZSk7CiAJCQkk
aXNzdWUtPnNldE9yaWdpbmFsRmlsZU5hbWUoJHB1YmxpY0ZpbGVNYW5hZ2VyLT50cnVuY2F0ZUZp
bGVOYW1lKCRvcmlnaW5hbEZpbGVOYW1lLCAxMjcpLCAkdGhpcy0+Z2V0Rm9ybUxvY2FsZSgpKTsK
IAkJCSRpc3N1ZS0+c2V0RmlsZU5hbWUoJG5ld0ZpbGVOYW1lLCAkdGhpcy0+Z2V0Rm9ybUxvY2Fs
ZSgpKTsKZGlmZiAtLWdpdCBhL2NsYXNzZXMvc3VibWlzc2lvbi9mb3JtL01ldGFkYXRhRm9ybS5p
bmMucGhwIGIvY2xhc3Nlcy9zdWJtaXNzaW9uL2Zvcm0vTWV0YWRhdGFGb3JtLmluYy5waHAKaW5k
ZXggYTM4ZTNlZC4uNjM0NDllNCAxMDA2NDQKLS0tIGEvY2xhc3Nlcy9zdWJtaXNzaW9uL2Zvcm0v
TWV0YWRhdGFGb3JtLmluYy5waHAKKysrIGIvY2xhc3Nlcy9zdWJtaXNzaW9uL2Zvcm0vTWV0YWRh
dGFGb3JtLmluYy5waHAKQEAgLTMwNiw3ICszMDYsOCBAQCBjbGFzcyBNZXRhZGF0YUZvcm0gZXh0
ZW5kcyBGb3JtIHsKIAkJaWYgKCRwdWJsaWNGaWxlTWFuYWdlci0+dXBsb2FkZWRGaWxlRXhpc3Rz
KENPVkVSX1BBR0VfSU1BR0VfTkFNRSkpIHsKIAkJCSRqb3VybmFsID0gUmVxdWVzdDo6Z2V0Sm91
cm5hbCgpOwogCQkJJG9yaWdpbmFsRmlsZU5hbWUgPSAkcHVibGljRmlsZU1hbmFnZXItPmdldFVw
bG9hZGVkRmlsZU5hbWUoQ09WRVJfUEFHRV9JTUFHRV9OQU1FKTsKLQkJCSRuZXdGaWxlTmFtZSA9
ICdjb3Zlcl9hcnRpY2xlXycgLiAkdGhpcy0+YXJ0aWNsZS0+Z2V0SWQoKSAuICdfJyAuICR0aGlz
LT5nZXRGb3JtTG9jYWxlKCkgLiAnLicgLiAkcHVibGljRmlsZU1hbmFnZXItPmdldEV4dGVuc2lv
bigkb3JpZ2luYWxGaWxlTmFtZSk7CisJCQkkdHlwZSA9ICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0
VXBsb2FkZWRGaWxlVHlwZShDT1ZFUl9QQUdFX0lNQUdFX05BTUUpOworCQkJJG5ld0ZpbGVOYW1l
ID0gJ2NvdmVyX2FydGljbGVfJyAuICR0aGlzLT5hcnRpY2xlLT5nZXRJZCgpIC4gJ18nIC4gJHRo
aXMtPmdldEZvcm1Mb2NhbGUoKSAuICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0SW1hZ2VFeHRlbnNp
b24oJHR5cGUpOwogCQkJJHB1YmxpY0ZpbGVNYW5hZ2VyLT51cGxvYWRKb3VybmFsRmlsZSgkam91
cm5hbC0+Z2V0SWQoKSwgQ09WRVJfUEFHRV9JTUFHRV9OQU1FLCAkbmV3RmlsZU5hbWUpOwogCQkJ
JGFydGljbGUtPnNldE9yaWdpbmFsRmlsZU5hbWUoJHB1YmxpY0ZpbGVNYW5hZ2VyLT50cnVuY2F0
ZUZpbGVOYW1lKCRvcmlnaW5hbEZpbGVOYW1lLCAxMjcpLCAkdGhpcy0+Z2V0Rm9ybUxvY2FsZSgp
KTsKIAkJCSRhcnRpY2xlLT5zZXRGaWxlTmFtZSgkbmV3RmlsZU5hbWUsICR0aGlzLT5nZXRGb3Jt
TG9jYWxlKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3569</attachid>
            <date>2011-06-20 11:36:00 -0700</date>
            <delta_ts>2011-06-20 11:40:06 -0700</delta_ts>
            <desc>Patch against OJS 2.2.1, 2.2.2, 2.2.3, 2.2.4, 2.3.0, 2.3.1, 2.3.2</desc>
            <filename>6696-ojs2.3.0.diff</filename>
            <type>text/plain</type>
            <size>2304</size>
            <attacher>alec</attacher>
            
              <data encoding="base64">ZGlmZiAtdSAtciBvanMtMi4zLjAtbW9kL2NsYXNzZXMvaXNzdWUvZm9ybS9Jc3N1ZUZvcm0uaW5j
LnBocCBvanMtMi4zLjAvY2xhc3Nlcy9pc3N1ZS9mb3JtL0lzc3VlRm9ybS5pbmMucGhwCi0tLSBv
anMtMi4zLjAtbW9kL2NsYXNzZXMvaXNzdWUvZm9ybS9Jc3N1ZUZvcm0uaW5jLnBocAkyMDA5LTA1
LTI3IDEyOjI3OjA2LjAwMDAwMDAwMCAtMDcwMAorKysgb2pzLTIuMy4wL2NsYXNzZXMvaXNzdWUv
Zm9ybS9Jc3N1ZUZvcm0uaW5jLnBocAkyMDExLTA2LTIwIDExOjMyOjI2LjAwMDAwMDAwMCAtMDcw
MApAQCAtMzUzLDcgKzM1Myw4IEBACiAJCWlmICgkcHVibGljRmlsZU1hbmFnZXItPnVwbG9hZGVk
RmlsZUV4aXN0cygnY292ZXJQYWdlJykpIHsKIAkJCSRqb3VybmFsID0gUmVxdWVzdDo6Z2V0Sm91
cm5hbCgpOwogCQkJJG9yaWdpbmFsRmlsZU5hbWUgPSAkcHVibGljRmlsZU1hbmFnZXItPmdldFVw
bG9hZGVkRmlsZU5hbWUoJ2NvdmVyUGFnZScpOwotCQkJJG5ld0ZpbGVOYW1lID0gJ2NvdmVyX2lz
c3VlXycgLiAkaXNzdWVJZCAuICdfJyAuICR0aGlzLT5nZXRGb3JtTG9jYWxlKCkgLiAnLicgLiAk
cHVibGljRmlsZU1hbmFnZXItPmdldEV4dGVuc2lvbigkb3JpZ2luYWxGaWxlTmFtZSk7CisJCQkk
dHlwZSA9ICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0VXBsb2FkZWRGaWxlVHlwZSgnY292ZXJQYWdl
Jyk7CisJCQkkbmV3RmlsZU5hbWUgPSAnY292ZXJfaXNzdWVfJyAuICRpc3N1ZUlkIC4gJ18nIC4g
JHRoaXMtPmdldEZvcm1Mb2NhbGUoKSAuICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0SW1hZ2VFeHRl
bnNpb24oJHR5cGUpOwogCQkJJHB1YmxpY0ZpbGVNYW5hZ2VyLT51cGxvYWRKb3VybmFsRmlsZSgk
am91cm5hbC0+Z2V0Sm91cm5hbElkKCksICdjb3ZlclBhZ2UnLCAkbmV3RmlsZU5hbWUpOwogCQkJ
JGlzc3VlLT5zZXRPcmlnaW5hbEZpbGVOYW1lKCRwdWJsaWNGaWxlTWFuYWdlci0+dHJ1bmNhdGVG
aWxlTmFtZSgkb3JpZ2luYWxGaWxlTmFtZSwgMTI3KSwgJHRoaXMtPmdldEZvcm1Mb2NhbGUoKSk7
CiAJCQkkaXNzdWUtPnNldEZpbGVOYW1lKCRuZXdGaWxlTmFtZSwgJHRoaXMtPmdldEZvcm1Mb2Nh
bGUoKSk7CmRpZmYgLXUgLXIgb2pzLTIuMy4wLW1vZC9jbGFzc2VzL3N1Ym1pc3Npb24vZm9ybS9N
ZXRhZGF0YUZvcm0uaW5jLnBocCBvanMtMi4zLjAvY2xhc3Nlcy9zdWJtaXNzaW9uL2Zvcm0vTWV0
YWRhdGFGb3JtLmluYy5waHAKLS0tIG9qcy0yLjMuMC1tb2QvY2xhc3Nlcy9zdWJtaXNzaW9uL2Zv
cm0vTWV0YWRhdGFGb3JtLmluYy5waHAJMjAxMS0wNi0yMCAxMToyNToyMi4wMDAwMDAwMDAgLTA3
MDAKKysrIG9qcy0yLjMuMC9jbGFzc2VzL3N1Ym1pc3Npb24vZm9ybS9NZXRhZGF0YUZvcm0uaW5j
LnBocAkyMDExLTA2LTIwIDExOjMxOjUzLjAwMDAwMDAwMCAtMDcwMApAQCAtMjgzLDcgKzI4Myw4
IEBACiAJCWlmICgkcHVibGljRmlsZU1hbmFnZXItPnVwbG9hZGVkRmlsZUV4aXN0cyhDT1ZFUl9Q
QUdFX0lNQUdFX05BTUUpKSB7CiAJCQkkam91cm5hbCA9IFJlcXVlc3Q6OmdldEpvdXJuYWwoKTsK
IAkJCSRvcmlnaW5hbEZpbGVOYW1lID0gJHB1YmxpY0ZpbGVNYW5hZ2VyLT5nZXRVcGxvYWRlZEZp
bGVOYW1lKENPVkVSX1BBR0VfSU1BR0VfTkFNRSk7Ci0JCQkkbmV3RmlsZU5hbWUgPSAnY292ZXJf
YXJ0aWNsZV8nIC4gJHRoaXMtPmFydGljbGUtPmdldEFydGljbGVJZCgpIC4gJ18nIC4gJHRoaXMt
PmdldEZvcm1Mb2NhbGUoKSAuICcuJyAuICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0RXh0ZW5zaW9u
KCRvcmlnaW5hbEZpbGVOYW1lKTsKKwkJCSR0eXBlID0gJHB1YmxpY0ZpbGVNYW5hZ2VyLT5nZXRV
cGxvYWRlZEZpbGVUeXBlKENPVkVSX1BBR0VfSU1BR0VfTkFNRSk7CisJCQkkbmV3RmlsZU5hbWUg
PSAnY292ZXJfYXJ0aWNsZV8nIC4gJHRoaXMtPmFydGljbGUtPmdldEFydGljbGVJZCgpIC4gJ18n
IC4gJHRoaXMtPmdldEZvcm1Mb2NhbGUoKSAuICRwdWJsaWNGaWxlTWFuYWdlci0+Z2V0SW1hZ2VF
eHRlbnNpb24oJHR5cGUpOwogCQkJJHB1YmxpY0ZpbGVNYW5hZ2VyLT51cGxvYWRKb3VybmFsRmls
ZSgkam91cm5hbC0+Z2V0Sm91cm5hbElkKCksIENPVkVSX1BBR0VfSU1BR0VfTkFNRSwgJG5ld0Zp
bGVOYW1lKTsKIAkJCSRhcnRpY2xlLT5zZXRPcmlnaW5hbEZpbGVOYW1lKCRwdWJsaWNGaWxlTWFu
YWdlci0+dHJ1bmNhdGVGaWxlTmFtZSgkb3JpZ2luYWxGaWxlTmFtZSwgMTI3KSwgJHRoaXMtPmdl
dEZvcm1Mb2NhbGUoKSk7CiAJCQkkYXJ0aWNsZS0+c2V0RmlsZU5hbWUoJG5ld0ZpbGVOYW1lLCAk
dGhpcy0+Z2V0Rm9ybUxvY2FsZSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>