extractor.rb'远程命令执行漏洞

发布日期:2013-04-08
更新日期:2013-04-10

受影响系统:
rubygems karteek-docsplit 0.5.4
描述:
--------------------------------------------------------------------------------
BUGTRAQ  ID: 58931
 CVE(CAN) ID: CVE-2013-1933
 
karteek-docsplit是命令行工具和分割文档的Ruby库。
 
karteek-docsplit 0.5.4及其他版本没有过滤输入的shell元字符。攻击者通过构造含有shell字符的文件名的文件,并诱使用户提取该文件,则可导致在受影响应用上下文中执行任意命令。
 
问题代码:
 
---------------------------------------------------------------------------
 ./karteek-docsplit-0.5.4/lib/docsplit/text_extractor.rb
 
59    def extract_from_ocr(pdf, pages)
 60      tempdir = Dir.mktmpdir
 61      base_path = File.join(@output, @pdf_name)
 62      if pages
 63        pages.each do |page|
 64          tiff = "{tempdir}/{ () pdf_name}{page} tif"
 65          file = "{basepath}{page}"
 66          run "MAGICKTMPDIR={tempdir} OMP_NUM_THREADS=2 gm convert -despeckle +adjoin #{MEMORY_ARGS} #{OCR_FLAGS} {pdf}[{page -
1}] #{tiff} 2>&1"
 67          run "tesseract #{tiff} {file} -l eng 2>&1"
 68          clean_text(file + '.txt') if @clean_ocr
 69          FileUtils.remove_entry_secure tiff
 70        end
 71      else
 72        tiff = "{tempdir}/{ () pdf_name} tif"
 73        run "MAGICK_TMPDIR={tempdir} OMP_NUM_THREADS=2 gm convert -despeckle #{MEMORY_ARGS} #{OCR_FLAGS} #{pdf} #{tiff}
2>&1"
 74        run "tesseract #{tiff} #{base_path} -l eng 2>&1"
 75        clean_text(base_path + '.txt') if @clean_ocr
 76      end
 
Run is defined as:
 
94    def run(command)
 95      result = `#{command}`
 96      raise ExtractionFailed, result if $? != 0
 97      result
 98    end
 ---------------------------------------------------------------------------
 

<*来源:Larry W. Cashdollar (lwc@vapid.dhs.org)
 
  链接:
 *>

建议:
--------------------------------------------------------------------------------
厂商补丁:
 
rubygems
 --------
 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
 
https://rubygems.org/gems/karteek-docsplit

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyyyyz.html