apache / apache/cloudstack

ACL with multiple CIDRs does not honor rule id

オープン
#12,668 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
component:virtual-router status:needs-reproducing
主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 19時間
マージ済み PR(30日)
32

説明

### problem

If you have a CIDR list like:

rule 1: [ "1.2.3.4/32", "2.3.4.5/32"] tcp allow port 22
rule 65535: [ "0.0.0.0/0"] deny port any

What you end up with when inspecting the VR is:

```
-A ACL_OUTBOUND_eth12 -d 1.2.3.4/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A ACL_OUTBOUND_eth12 -j DROP
-A ACL_OUTBOUND_eth12 -d 2.3.4.5/32 -p tcp -m tcp --dport 22 -j ACCEPT
```

This is clearly not the desired behavior.

### versions

Cloudstack 4.22.0

### The steps to reproduce the bug

See description

### What to do about it?

Don't use more than one CIDR per rule

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

レポートにある2つのACLルールを使って問題を再現し、その後、仮想ルーター内で生成されたACL_OUTBOUND_eth12チェーンを調査します。1つのルール内の複数のCIDRがどのような順序で並ぶかを追跡し、そのルールのDROPが残りのCIDRマッチより前に来ないことを確認します。完了条件は、allowルール内のすべてのCIDRが次のルールより前に評価されることです。

索引モデルが issue の本文から書いたものです。

評価

領域
authorization, networking, security
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。