There are issues using the NE555 related to threshold and trigger pin currents up to 1μA or so, so capacitor current would have to be significantly larger than 1μA. This makes the NE555 inappropriate for measuring capacitances under 10nF. A CMOS version of the 555, like the 7555, would fare much better.
Using an Arduino (or some kind of microcontroller, MCU) directly removes any need for a timer IC.
A capacitor \$C\$ charging through a resistor \$R\$ will take \$R\times C\$ seconds to reach 63% of its final voltage. This is easy to see in a simulation:

simulate this circuit – Schematic created using CircuitLab

V1 applies +5V across R1 and C1 at 2ms. At 3ms, exactly \$\Delta t = R_1C_1 = 1ms\$ afterwards, capacitor voltage \$V_Y\$ reaches \$63\% \times 5V = +3.16V\$. If you can use an MCU to apply those 5V, and time how long it takes for the capacitor to reach 3.16V, then you have the basis for a system to measure capacitance.
Before you get too excited, accurately measuring under 1nF is going to be difficult to impossible using such a simple system, because parasitic capacitances can easily be many tens of picofarads. Even the wiring to the capacitor under test will heavily influence the measurement. Simply having your hand near the capacitor and its wires while measuring is enough to ruin accuracy.
You'll need a way for the MCU to select resistor R1, and a means of discharging the capacitor quickly. Here's what I suggest:

simulate this circuit
I wouldn't recommend using MOSFETs to switch the resistances, because each could have up to 1μA of leakage current, which would become problematic at very low currents, similar to the problem of input currents on the 555. BJTs have lower collector leakage current, but also have \$V_{CE}\$ not-quite-zero when saturated. It's a trade-off - I think leakage current is a bigger problem for small capacitances.
The capcitor under test is Cx.
The MCU will first discharge the capacitor by bringing OUT4 high, and waiting a second or so. It's a bit hit-and-miss how long it would take to discharge the capacitor, you could use another comparator, and another input to detect when capacitor voltage falls under 0.1V or so.
Then select which transistor Q1, Q2 or Q3 to switch on, by bringing OUT1, OUT2 or OUT3 low. Time how long it takes for CMP1 output to go high (perhaps use an interrupt to halt a timer-counter).
This gives you time constant \$\tau=R_XC_X\$, from which you can calculate \$C_X\$. I estimate that you'll not get better than 5% accuracy using this technique, but I would wager that it's more accurate than using the 555 timer IC.