专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Go语言项目容器化导致的ServerSideMIMESnif

  answerdevanswer是基于go语言编写的一个问答平台(类似于知乎),前几周在审计该项目时,发现该系统的图片上传功能点存在一个有趣的漏洞。
  该系统的图片上传功能点的工作原理大致如下:
  step1。用户上传图片文件,将文件存储在本地文件系统中
  step2。当需要访问图片时,使用gin框架提供的静态资源服务器将用户上传的图片文件作为静态资源返回给用户
  internalrouterstaticrouter。goRegisterStaticRouterregisterstaticapirouterfunc(aStaticRouter)RegisterStaticRouter(rgin。RouterGroup){r。Static(uploads,a。serviceConfig。UploadPath)}
  为了防止用户上传恶意文件,该系统的文件上传功能设置了一个后缀白名单,用户只能上传白名单中后缀的文件
  internalserviceuploaderupload。goFormatExtsmap〔string〕imaging。Format{。jpg:imaging。JPEG,。jpeg:imaging。JPEG,。png:imaging。PNG,。gif:imaging。GIF,。tif:imaging。TIFF,。tiff:imaging。TIFF,。bmp:imaging。BMP,}
  起初,我在本地搭建了该项目,对文件上传功能和静态资源服务的进行了测试:我尝试上传文件内容为,文件后缀为。bmp。tif。tiff的文件,然后通过静态资源服务访问这些文件,我发现返回的响应报文中ContentType分别为imagebmpimagetiffimagetiff,这些MIME都是正常的图片类型,无法使得浏览器将响应报文中的内容作为html来解析,从而造成XSS。
  但是,神奇的是当我使用answer官方提供的docker镜像来搭建answer时:dockerrundp9080:80vanswerdata:datanameansweranswerdevanswer:latest
  再次上传同样的文件,然后访问文件,发现返回的http响应报文的ContentType竟然变为了texthtml!
  step1。上传图片文件
  step2。访问文件
  罪魁祸首mime标准库
  之所以go实现的静态资源服务器会出现这种将bmptiftiff等后缀的图片文件的ContentType设置为texthtml的情况,是因为go语言的mime标准库的实现有问题。
  go语言实现的静态资源服务器在返回文件时,大致会执行以下步骤:
  step1。调用mime。TypeByExtension()函数来根据文件后缀获取对应的ContentType
  step2。如果mime。TypeByExtension()函数返回的ContentType为空字符串,则会进行ServerSideMIMESniff,即根据文件内容来判断对应的ContentType
  而mime。TypeByExtension()函数的实现实际上是依赖于外部的mime。types文件的,其本身所维护的文件后缀与ContentType的映射关系非常有限
  usrlocalgosrcmimetype。goTypeByExtensionreturnstheMIMEtypeassociatedwiththefileextensionext。Theextensionextshouldbeginwithaleadingdot,asin。html。Whenexthasnoassociatedtype,TypeByExtensionreturns。Extensionsarelookedupfirstcasesensitively,thencaseinsensitively。ThebuiltintableissmallbutonunixitisaugmentedbythelocalsystemsMIMEinfodatabaseormime。typesfile(s)ifavailableunderoneormoreofthesenames:usrlocalsharemimeglobs2usrsharemimeglobs2etcmime。typesetcapache2mime。typesetcapachemime。typesOnWindows,MIMEtypesareextractedfromtheregistry。
  在容器化过程中,为了追求最小化攻击面、更小的镜像体积,往往会使用alpine系列镜像,而该系列镜像中并没有以上所列的mime。types文件:usrlocalsharemimeglobs2usrsharemimeglobs2etcmime。typesetcapache2mime。typesetcapachemime。types
  例如:
  UsersrickshangCodeSecurityResearchInTheLabcontenttypelabgolangfuzzermain。gopackagemainimport(fmtmime)funcmain(){exts:〔〕string{。bmp,。gif,。jpeg,。jpg,。png,。svg,ico,。tif,。tiff,。webp}for,ext:rangeexts{contenttype:mime。TypeByExtension(ext)fmt。Printf(ext:scontenttype:v,ext,contenttype)}}
  本地运行:gorunmain。goext:。bmpcontenttype:imagebmpext:。gifcontenttype:imagegifext:。jpegcontenttype:imagejpegext:。jpgcontenttype:imagejpegext:。pngcontenttype:imagepngext:。svgcontenttype:imagesvgxmlext:。icocontenttype:imagexiconext:。tifcontenttype:imagetiffext:。tiffcontenttype:imagetiffext:。webpcontenttype:imagewebp
  使用golang官方镜像:golang:1。19alpine容器化之后运行:dockerrunitrmvUsersrickshangCodeSecurityResearchInTheLabcontenttypelabgolangfuzzermain。go:codemain。gowcodegolang:1。19alpinegorunmain。goext:。bmpcontenttype:ext:。gifcontenttype:imagegifext:。jpegcontenttype:imagejpegext:。jpgcontenttype:imagejpegext:。pngcontenttype:imagepngext:。svgcontenttype:imagesvgxmlext:。icocontenttype:ext:。tifcontenttype:ext:。tiffcontenttype:ext:。webpcontenttype:imagewebp
  话句话说,如果你的静态资源服务器是基于go语言的mime标准库来实现的,那么你的静态资源服务器在使用alpine镜像容器化之后很可能会出现这种将bmptiftiff等后缀的图片文件的ContentTypes识别为texthtml的情况,进而导致存储型XSS漏洞。总结
  该漏洞有趣的点在于,它揭示了安全问题与环境的关系:测试环境下没有安全问题,不代表生产环境下也没有安全问题。
  容器化在追求最小化攻击面的同时也引入了新的攻击面,go语言mime标准库的问题便是典型的例子。依赖外部文件的标准库实现容器化外部文件缺失标准库功能出现安全问题修复方案
  go语言mime标准库维护的内置的mime类型映射关系非常有限:gosrcmimetype。govarbuiltinTypesLowermap〔string〕string{。avif:imageavif,。css:textcss;charsetutf8,。gif:imagegif,。htm:texthtml;charsetutf8,。html:texthtml;charsetutf8,。jpeg:imagejpeg,。jpg:imagejpeg,。js:textjavascript;charsetutf8,。json:applicationjson,。mjs:textjavascript;charsetutf8,。pdf:applicationpdf,。png:imagepng,。svg:imagesvgxml,。wasm:applicationwasm,。webp:imagewebp,。xml:textxml;charsetutf8,}
  方案一:打包镜像时将如下mime。types文件拷贝到容器中:usrlocalsharemimeglobs2usrsharemimeglobs2etcmime。typesetcapache2mime。typesetcapachemime。types
  方案二:在实现图片上传功能时,不要将mime标准库内置表之外的后缀类型添加到白名单中,例如:。bmp。ico。tif。tiff
  方案三:使用nginx作为静态资源服务器进一步的研究其他语言的静态资源服务器容器化后是否存在同样的问题?容器化是否会引入其他新的安全问题?
  fromhttps:tttang。comarchive1880

如此惬意悠闲的线路,果断爱了!在这收获的季节是时候来一场说走就走的乡村游啦!国庆假期即将到来去欣赏一番九台的秋日风光吧!这条线路可以让你更好地体验农耕文化感受天作景地作布稻作画的神奇画卷领略秋天的秀美,享受丰收国庆假期,潍坊推出游了个游通关挑战等82项文旅活动9月30日,潍坊市人民政府新闻办公室召开发布会,介绍诗溢潍坊畅享金秋潍坊秋季旅游产品发布情况。记者从发布会上获悉,为进一步挖掘和释放文化消费潜力,结合当前的疫情防控形势,潍坊市文化世界旅游最安全的五个国家,你知道吗?21世纪应该是一个和平的年代,人们的生活方式在不断提高,近年来,旅游业大火,很多人都选择出国旅游,且不谈这个国家的交通,景点,最重要的就是安全问题了,只有人身安全得到保障,旅客才能八仙过海的美丽传说起源于一个血腥的故事八仙过海,是在中国民间流传很广的神话传说。完整故事最早见于杂剧争玉板八仙过海。由八仙应白云仙长之邀渡海赴蓬莱仙岛,回程时铁拐李建议不搭船而各自施展法术的故事演化而来,于是有了八仙过撑不住了?美国放宽对中国钕磁体的进口限制,外媒制裁解封前奏本文原创,禁止抄袭,违者必究众所周知,为了限制中国芯片行业的发展,从2019年开始,美国就限制一些先进的半导体企业自由出货到中国,例如ASML无法向中国自由出口EUV光刻机,连中芯风向变了,中国新能源车比亚迪欧洲发布会三车齐发,开启多国交付风向变了,中国新能源汽车比亚迪欧洲发布会三车齐发,开启欧洲多国交付,包括挪威丹麦瑞典等燃油车今后可能会被新能源取代,这是推动世界发展的一个趋势,数据显示,2021年中国的纯电动汽车中指研究院中国新能源上市公司呈蓬勃发展之势本报记者董曙光北京报道国庆前夕,由中国企业评价协会北京中指信息技术研究院主办的2022中国新能源上市公司研究报告会在京拉开帷幕。中国经营报记者在报告会上获悉,上述会议旨在研讨中国新芯片不好卖,价格大跌,美国芯片巨头希望中国多买芯片近日,存储芯片大厂美光发布了第4财季的报表,数据显示,这一财报,营收下滑20,净利下滑45,创造了最近几年以来最惨数据。为什么会这样?美光表示,有一个原因就是中国市场需求疲软,导致中国女篮挺进决赛!东莞4名女篮国手继续冲中国女篮赢了!9月30日在澳大利亚悉尼进行的2022女篮世界杯半决赛中中国队以6159战胜澳大利亚队挺进世界杯决赛!中国女篮自1994年后首次晋级世界杯(含赛事前身世锦赛)决赛(图中安时评歌声嘹亮!与祖国共唱时代赞歌我和我的祖国,一刻也不能分割,无论我走到哪里,都流出一首赞歌,这首饱含深情的歌曲唱出了14亿中华儿女的共同心声,令人心潮澎湃,激动万千。在喜迎党的二十大的热烈氛围中,新中国迎来成立中国梭子蟹之乡炎亭山海之间玉苍之南,半城玉海半城山的苍南,是从南京到浙江的第一站。因此也有俗语说浙南看一看苍南第一站。这些年大家听到苍南的名字最多的地方或许是电视新闻,这儿大部分时候都是台风登陆点,
中国首个风光火储一体化大型综合能源基地外送项目开建中新社兰州3月16日电(杨娜)中国首个风光火储一体化大型综合能源基地外送项目和首个大型地面厂房抽蓄项目,16日分别在甘肃庆阳市和玉门市开工建设。两项工程投产后,每年可替代燃煤消耗6目前的市场,要么中字头,要么空仓,没有其他选项目前的市场虽然赚钱效应差,但是脉络十分清晰。那就是只有参与中字头才能挣钱,其他板块都是配角或者鸡肋。如果恐高中字头,就空仓。别的票主力(主要是基金)一直在出货去中字头报团。你如果还新田靶向引才带活县域经济湖南日报新湖南客户端3月16日讯(通讯员许昌胜)中科院广州地球化学研究所王继忠博士专家团队在新田家乐竹木有限公司任职技术顾问期间,与企业签订了富硒农业土壤修复关键技术专家系统合作项将退保解释为取,将保额递增形容为利息,太保人寿被指诱导投保卖保险时跟我说相当于储蓄,每个月还有分红利息,可以取出来用,也能用来养老。最近我才知道,所谓分红不是现金而是保额,而且身故之前都不能取,取出来就是退保。日前,江苏的杨女士向鲁网泰山瑞银美联储可能提早结束其紧缩周期张枕河中国证券报中证网中证网讯(记者张枕河)3月17日,瑞银发布报告预计,美联储可能提早结束其紧缩周期。瑞银表示,下周,市场焦点落在美联储政策会议上,美国2月零售销售和3月采购经理读懂国家账本2023年中国经济预期全面转好本报记者杜丽娟北京报道今年,中国经济预期增长目标定为5左右,这是我们综合考虑各方面因素后确定的。3月13日,十四届全国人大一次会议闭幕后,国务院总理李强答中外记者提问时说。早前,对河北乐亭临港经济蓬勃发展这是位于乐亭经济开发区的河钢乐亭钢铁有限公司(3月15日摄,无人机照片)。近年来,河北省乐亭县依托毗邻唐山港京唐港区的区位优势,着力打造乐亭经济开发区,通过完善基础设施承接京津产业保护经济免受地缘政治影响,佐科呼吁政府机关弃用万事达和VISA卡来源环球时报环球时报综合报道据印尼雅加达邮报16日报道,印尼总统佐科敦促该国政府机构放弃依赖万事达卡和VISA卡等外国支付网络,转而使用本土银行发行的信用卡,以保护经济交易免受地缘绝大多数外企看好在华发展前景全国两会是中外企业了解掌握中国宏观经济形势和相关政策的重要窗口。昨天,中国公共关系协会与中国外商投资企业协会联合举办吹风会,为在京中外企业深入解读2023全国两会精神。在华外资企业发现丨雪松和云海相遇牛背梁美如仙境视频加载中视频王曲雪松和云海相遇牛背梁美如仙境图杜鹏文李媛今天(3月17日),一场大雪过后,牛背梁大片雪松与云海相遇,山峦间云雾弥漫,如梦如幻,美不胜收,置身其中,仿佛一副水墨画卷中国的五大战区,个个实力非凡堪比一个国家?哪个实力最为强悍?中国的五大战区,实力堪比欧洲一国!哪个战区最为强悍?说起祖国最令人放心的无疑就是强大的军事实力了,不论是先进的武器装备,还是英姿飒爽的军人,都是我们最好的保障!而由于我国地缘辽阔,
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网