MOVEit 又曝出高危漏洞,又要来一次供应链大事件? | 最新快讯

 日前,MOVEit 文件传输工具中的一个安全漏洞再次引起业内人士的警觉,Progress 软件公司敦促客户尽快修补这个 "高危 "漏洞。

1719470433_667d09611d96c7166a147.png!small

漏洞追踪编号为 CVE-2024-5806,存在于 MOVEit 管理软件的 SFTP 模块中,威胁攻击者可以利用该漏洞轻松绕过身份验证,不仅可以访问存储在 MOVEit Transfer 服务器上的数据,并且能够外渗、删除或更改数据信息。

  Progress 软件公司表示,一旦第三方供应商发布修复补丁程序,就会立刻将向 MOVEit Transfer 客户提供。值得一提的是, CVE-2024-5806 安全漏洞的评分正在逐步升高,最新的更新公告中,安全漏洞的严重性评分已经从 7.4 分提高到了 9.1 分(满分 10 分)。

  Progress 软件公司方面的发言人向 Recorded Future News 透露,CVE-2024-5806 安全漏洞主要影响该公司用于传输文件的两款旗舰产品 MOVEit Transfer 和 MOVEit Gateway  ,并指出,目前公司还没有收到任何关于安全漏洞已被利用的报告,也没有发现安全漏洞对客户的运营有任何直接影响。

  漏洞利用的可能性正在增加

  多个安全组织发现并报告称过去 48 小时内,威胁攻击者对 CVE-2024-5806 安全漏洞的“兴趣”有所增加。网络安全公司 WatchTower 的研究人员已经发布了概念验证代码和有关 CVE-2024-5806 安全漏洞的详细信息,这大大增加了修补漏洞工作的紧迫性。

  英国 Shadowserver 基金会表示,CVE-2024-5806 安全漏洞细节公布后不久,就发现有人试图利用该漏洞,德国政府也表示看到了攻击企图。该基金会的数据显示,有 1772 个 MOVEit 实例暴露在互联网上,但其无法追踪哪些实例已经修补了该安全漏洞。

  此外,Censys 方面指出,它们的研究人员在网上观察到 2700 个 MOVEit Transfer 实例,主要集中在美国,几乎与 2023 年 MOVEit 上一次漏洞被利用时的数量相同。WatchTower 方面则表示,Progress 软件公司数周乃至数月来一直在与客户联系,最大程度上修补这一安全漏洞问题,预计不会有太多客户会受到安全漏洞的影响。

1719471914_667d0f2a0681040a0adfa.png!small?1719471915034

  MOVEit 安全漏洞问题影响深远

  上一次 MOVEit 安全漏洞爆发时,全球成千上万的政府、企业和大型组织报受到影响。其中,知名勒索软件团伙 Clop 利用 MOVEit 安全漏洞开展了大规模网络攻击活动,大肆窃取受害者数据信息,勒索了巨额资金。

  安全公司 Emsisoft 估计,2023 年期间,有超过 6200 万人和 2000 家组织机构受到 MOVEit 安全漏洞的影响。Progress Software 在去年提交的监管文件中表示,由于与 MOVEit 相关的一系列漏洞,该公司正面临 58 起集体诉讼以及联邦、州和国际调查。

  参考文章:

  https://therecord.media/progress-software-elevates-severity-bug

以下是一个基于MoveIt Simple Controller Manager的ROS控制器示例: ```cpp #include <ros/ros.h> #include <moveit_simple_controller_manager/simple_controller_manager.h> #include <moveit/move_group_interface/move_group_interface.h> #include <moveit/robot_model_loader/robot_model_loader.h> #include <moveit/robot_model/robot_model.h> #include <moveit/robot_state/robot_state.h> #include <moveit/trajectory_processing/iterative_time_parameterization.h> class MyRobotController : public moveit_simple_controller_manager::SimpleControllerManager { public: MyRobotController() : moveit_simple_controller_manager::SimpleControllerManager() { // Initialize MoveIt move_group_.reset(new moveit::planning_interface::MoveGroupInterface("arm")); // Load the robot model and get the robot state robot_model_loader_.reset(new robot_model_loader::RobotModelLoader("robot_description")); robot_model_ = robot_model_loader_->getModel(); robot_state_.reset(new robot_state::RobotState(robot_model_)); // Set the joint model group joint_model_group_ = robot_model_->getJointModelGroup("arm"); // Set the trajectory processing trajectory_processing_.reset(new trajectory_processing::IterativeParabolicTimeParameterization()); // Set the desired joint state desired_joint_state_.resize(joint_model_group_->getVariableCount()); desired_joint_state_.setZero(); } virtual bool initialize(const std::string& robot_description, const std::string& controller_name) { // Initialize the controller with the robot description and the controller name if (!SimpleControllerManager::initialize(robot_description, controller_name)) { ROS_ERROR("Failed to initialize the controller"); return false; } // Set the callback function for the controller controller_->setTrajectoryExecutionCallback(boost::bind(&MyRobotController::trajectoryExecutionCallback, this, _1)); // Print a message to indicate successful initialization ROS_INFO("Controller initialized successfully"); return true; } virtual bool canSwitch(const std::vector<std::string>& start_controllers, const std::vector<std::string>& stop_controllers) const { // This controller does not support switching return false; } virtual bool switchControllers(const std::vector<std::string>& start_controllers, const std::vector<std::string>& stop_controllers) { // This controller does not support switching return false; } virtual bool isActive() { // Return true if the controller is active return controller_->isActive(); } virtual void stopping() { // Stop the controller controller_->stop(); } void trajectoryExecutionCallback(const moveit_msgs::RobotTrajectory& trajectory) { // Get the start state of the robot robot_state_->setToDefaultValues(); const robot_state::JointModelGroup* start_joint_model_group = robot_state_->getJointModelGroup("arm"); // Get the start and end time of the trajectory double start_time = ros::Time::now().toSec(); double end_time = start_time + trajectory.joint_trajectory.points.back().time_from_start.toSec(); // Execute the trajectory move_group_->execute(trajectory); // Wait until the end of the trajectory while (ros::Time::now().toSec() < end_time) { ros::Duration(0.01).sleep(); } // Get the current joint state of the robot robot_state_->getCurrentState(*move_group_->getCurrentState()); const robot_state::JointModelGroup* current_joint_model_group = robot_state_->getJointModelGroup("arm"); // Get the current joint values robot_state_->copyJointGroupPositions(current_joint_model_group, desired_joint_state_); // Set the current joint values as the desired joint state controller_->setDesiredJointState(desired_joint_state_); // Print a message to indicate successful trajectory execution ROS_INFO("Trajectory executed successfully"); } private: ros::NodeHandle nh_; moveit::planning_interface::MoveGroupInterfacePtr move_group_; robot_model_loader::RobotModelLoaderPtr robot_model_loader_; robot_model::RobotModelPtr robot_model_; robot_state::RobotStatePtr robot_state_; const robot_model::JointModelGroup* joint_model_group_; std::unique_ptr<trajectory_processing::IterativeParabolicTimeParameterization> trajectory_processing_; Eigen::VectorXd desired_joint_state_; }; int main(int argc, char** argv) { // Initialize ROS ros::init(argc, argv, "my_robot_controller"); // Create the controller MyRobotController controller; // Initialize the controller if (!controller.initialize("robot_description", "my_robot_controller")) { return -1; } // Spin the node ros::spin(); return 0; } ``` 在上述示例中,MyRobotController是一个自定义的ROS控制器,它继承自MoveIt Simple Controller Manager。在构造函数中,我们初始化了MoveIt,加载了机器人模型,并设置了轨迹处理和期望关节状态。在initialize()函数中,我们初始化了控制器,并设置了回调函数。在trajectoryExecutionCallback()函数中,我们执行了轨迹,并在轨迹执行完成后更新了期望关节状态。最后,在main()函数中,我们创建了并初始化了控制器,并开始运行ROS节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

www3300300

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值