
CVE-2021-30180のエクスプロイトは、Apache Dubbo RPCフレームワークを標的とし、脆弱なバージョンにおいて細工されたRPCリクエストを介してリモートコード実行を可能にします。
Apache Dubbo は、高性能な Java ベースのオープンソース RPC フレームワークです。クイックスタートやドキュメントについては公式サイトをご覧ください。ニュース、FAQ、リリースノートについてはwikiもご確認ください。
現在、Dubbo の改善に役立てるため、ユーザー情報を収集しています。issue#1012: Wanted: who's using dubbo に情報を提供いただけると幸いです。ありがとうございます。

以下のコードスニペットは、Dubbo Samples から引用しています。サンプルプロジェクトをクローンし、dubbo-samples-api サブディレクトリに移動してから進めてください。
# git clone https://github.com/apache/dubbo-samples.git
# cd dubbo-samples/java/dubbo-samples-api
dubbo-samples-api ディレクトリには README ファイルがあります。以下の手順に従って、そのディレクトリ内のサンプルを参照することをお勧めします。
<properties>
<dubbo.version>2.7.8</dubbo.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
</dependencies>
package org.apache.dubbo.samples.api;
public interface GreetingsService {
String sayHi(String name);
}
GitHub 上の api/GreetingsService.java を参照してください。
package org.apache.dubbo.samples.provider;
import org.apache.dubbo.samples.api.GreetingsService;
public class GreetingsServiceImpl implements GreetingsService {
@Override
public String sayHi(String name) {
return "hi, " + name;
}
}
GitHub 上の provider/GreetingsServiceImpl.java を参照してください。
package org.apache.dubbo.samples.provider;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.samples.api.GreetingsService;
import java.util.concurrent.CountDownLatch;
public class Application {
private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");
public static void main(String[] args) throws Exception {
ServiceConfig<GreetingsService> service = new ServiceConfig<>();
service.setApplication(new ApplicationConfig("first-dubbo-provider"));
service.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));
service.setInterface(GreetingsService.class);
service.setRef(new GreetingsServiceImpl());
service.export();
System.out.println("dubbo service started");
new CountDownLatch(1).await();
}
}
GitHub 上の provider/Application.java を参照してください。
# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.provider.Application exec:java
package org.apache.dubbo.samples.client;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.samples.api.GreetingsService;
public class Application {
private static String zookeeperHost = System.getProperty("zookeeper.address", "127.0.0.1");
public static void main(String[] args) {
ReferenceConfig<GreetingsService> reference = new ReferenceConfig<>();
reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));
reference.setRegistry(new RegistryConfig("zookeeper://" + zookeeperHost + ":2181"));
reference.setInterface(GreetingsService.class);
GreetingsService service = reference.get();
String message = service.sayHi("dubbo");
System.out.println(message);
}
}
GitHub 上の consumer/Application.java を参照してください。
# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.client.Application exec:java
コンシューマは画面に hi, dubbo を出力します。
最先端の機能を試したい場合は、以下のコマンドでビルドできます。(master ブランチのビルドには Java 1.8 が必要です)
mvn clean install
メーリングリスト:
バグ報告: Issues
Gitter: Gitter チャンネル
Twitter: @ApacheDubbo
パッチの提出方法とコントリビューションのワークフローについては、CONTRIBUTING を参照してください。
Good first issue または Help wanted タグの付いた Issue を確認してください。問題を報告する際は、テンプレート に従ってください。
セキュリティの脆弱性は、us に非公開で報告してください。
dubboApache Dubbo ソフトウェアは Apache License Version 2.0 の下でライセンスされています。詳細は LICENSE ファイルを参照してください。