<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://an.dywa.ng/feed.xml" rel="self" type="application/atom+xml" /><link href="https://an.dywa.ng/" rel="alternate" type="text/html" /><updated>2026-01-31T17:19:14+00:00</updated><id>https://an.dywa.ng/feed.xml</id><title type="html">an.dy wa.ng</title><subtitle>Andy&apos;s personal page
</subtitle><author><name>Andy Wang</name></author><entry><title type="html">Mobile carriers can get your GPS location</title><link href="https://an.dywa.ng/carrier-gnss.html" rel="alternate" type="text/html" title="Mobile carriers can get your GPS location" /><published>2026-01-31T00:00:00+00:00</published><updated>2026-01-31T00:00:00+00:00</updated><id>https://an.dywa.ng/carrier-gnss</id><content type="html" xml:base="https://an.dywa.ng/carrier-gnss.html"><![CDATA[<p>In iOS 26.3, Apple introduced a new privacy feature which limits “precise location” data made available to cellular networks via cell towers. The feature is only available to devices with Apple’s in-house modem introduced in 2025. The announcement<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> says</p>

<blockquote>
  <p>Cellular networks can determine your location based on which cell towers your device connects to.</p>
</blockquote>

<p>This is well-known. I have served on a jury where the prosecution obtained location data from cell towers. Since cell towers are sparse (especially before 5G), the accuracy is in the range of tens to hundreds of metres<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>.</p>

<p><strong>But this is not the whole truth</strong>, because cellular standards have built-in protocols that make your device silently send GNSS (i.e. GPS, GLONASS, Galileo, BeiDou) location to the carrier. This would have the same precision as what you see in your Map apps, in single-digit metres.</p>

<p>In 2G and 3G this is called <a href="https://projects.osmocom.org/projects/security/wiki/RRLP">Radio Resources LCS Protocol (RRLP)</a></p>

<blockquote>
  <p>So the network simply asks “tell me your GPS coordinates if you know them” and the phone will respond<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup>.</p>
</blockquote>

<p>In 4G and 5G this is called <a href="https://tech-academy.amarisoft.com/LTE_LPP.html">LTE Positioning Protocol (LPP)</a></p>

<blockquote>
  <p>RRLP, RRC, and LPP are natively control-plane positioning protocols. This means that they are transported in the inner workings of cellular networks and are practically invisible to end users<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>.</p>
</blockquote>

<p>It’s worth noting that GNSS location is never <em>meant</em> to leave your device. GNSS coordinates are calculated entirely passively, your device doesn’t need to send a single bit of information. Using GNSS is like finding out where you are by reading a road sign: you don’t have to tell anyone else you read a road sign, anyone can read a road sign, and the people who put up road signs don’t know who read which road sign when.</p>

<p>These capabilities are not secrets but somehow they have mostly slid under the radar of the public consciousness. They have been used in the wild for a long time, such as by the DEA in the US in 2006<sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup><sup id="fnref:6" role="doc-noteref"><a href="#fn:6" class="footnote" rel="footnote">6</a></sup>:</p>

<blockquote>
  <p>[T]he DEA agents procured a court order (but not a search warrant) to obtain GPS coordinates from the courier’s phone via a ping, or signal requesting those coordinates, sent by the phone company to the phone.</p>
</blockquote>

<p>And by Shin Bet in Israel, which tracks everyone everywhere all the time<sup id="fnref:7" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">7</a></sup>:</p>

<blockquote>
  <p>The GSS Tool was based on centralized cellular tracking operated by Israel’s General Security Services (GSS). The technology was based on a framework that tracks all the cellular phones running in Israel through the cellular companies’ data centers. According to news sources, it routinely collects information from cellular companies and identifies the location of all phones through cellular antenna triangulation and GPS data<sup id="fnref:7:1" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">7</a></sup>.</p>
</blockquote>

<p>Notably, the Israeli government started using the data for contact tracing in March 2020<sup id="fnref:7:2" role="doc-noteref"><a href="#fn:7" class="footnote" rel="footnote">7</a></sup><sup id="fnref:8" role="doc-noteref"><a href="#fn:8" class="footnote" rel="footnote">8</a></sup>, only a few weeks after the first Israeli COVID-19 case. An individual would be sent an SMS message informing them of close contact with a COVID patient and required to quarantine. This is good evidence that the location data Israeli carriers are collecting are far more precise than what cell towers alone can achieve.</p>

<p>A major caveat is that I don’t know if RRLP and LPP are the exact techniques, and the only techniques, used by DEA, Shin Bet, and possibly others to collect GNSS data; there could be other protocols or backdoors we’re not privy to.</p>

<p>Another unknown is whether these protocols can be exploited remotely by a foreign carrier. Saudi Arabia has abused SS7 to spy on people in the US<sup id="fnref:9" role="doc-noteref"><a href="#fn:9" class="footnote" rel="footnote">9</a></sup>, but as far as I know this only locates a device to the coverage area of a Mobile Switching Center, which is less precise than cell tower data. Nonetheless, given the abysmal culture, competency, and integrity in the telecom industry, I would not be shocked if it’s possible for a state actor to obtain the precise GNSS coordinates of anyone on earth using a phone number/IMEI.</p>

<p>Apple made a good step in iOS 26.3 to limit at least one vector of mass surveillance, enabled by having full control of the modem silicon and firmware. They must now allow users to disable GNSS location responses to mobile carriers, and notify the user when such attempts are made to their device.</p>

<hr />
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p><a href="https://support.apple.com/en-us/126101">https://support.apple.com/en-us/126101</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:2" role="doc-endnote">
      <p><a href="https://transition.fcc.gov/pshs/911/Apps Wrkshp 2015/911_Help_SMS_WhitePaper0515.pdf">https://transition.fcc.gov/pshs/911/Apps Wrkshp 2015/911_Help_SMS_WhitePaper0515.pdf</a> <a href="#fnref:2" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:3" role="doc-endnote">
      <p><a href="https://laforge.gnumonks.org/blog/20101217-learning_about_gps/">https://laforge.gnumonks.org/blog/20101217-learning_about_gps/</a> <a href="#fnref:3" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:4" role="doc-endnote">
      <p>Comment on United States v. Skinner, 690 F.3d 772 (6th Cir. 2012) <a href="https://harvardlawreview.org/print/vol-126/sixth-circuit-holds-that-pinging-a-targets-cell-phone-to-obtain-gps-data-is-not-a-search-subject-to-warrant-requirement-ae-united-states-v-skinner-690-f-3d-772-6th-cir-2012-rehae/">https://harvardlawreview.org/print/vol-126/sixth-circuit-holds-that-pinging-a-targets-cell-phone-to-obtain-gps-data-is-not-a-search-subject-to-warrant-requirement-ae-united-states-v-skinner-690-f-3d-772-6th-cir-2012-rehae/</a> <a href="#fnref:4" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:5" role="doc-endnote">
      <p><a href="https://www.cato.org/blog/skinning-fourth-amendment-sixth-circuits-awful-gps-tracking-decision">https://www.cato.org/blog/skinning-fourth-amendment-sixth-circuits-awful-gps-tracking-decision</a> <a href="#fnref:5" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:6" role="doc-endnote">
      <p><a href="https://www.ericsson.com/en/blog/2020/12/5g-positioning--what-you-need-to-know">https://www.ericsson.com/en/blog/2020/12/5g-positioning--what-you-need-to-know</a> <a href="#fnref:6" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:7" role="doc-endnote">
      <p>Eran Toch and Oshrat Ayalon. 2023. How Mass surveillance Crowds Out Installations of COVID-19 Contact Tracing Applications. <a href="https://doi.org/10.1145/3579491">https://doi.org/10.1145/3579491</a> <a href="#fnref:7" class="reversefootnote" role="doc-backlink">&#8617;</a> <a href="#fnref:7:1" class="reversefootnote" role="doc-backlink">&#8617;<sup>2</sup></a> <a href="#fnref:7:2" class="reversefootnote" role="doc-backlink">&#8617;<sup>3</sup></a></p>
    </li>
    <li id="fn:8" role="doc-endnote">
      <p><a href="https://www.nytimes.com/2020/03/16/world/middleeast/israel-coronavirus-cellphone-tracking.html">https://www.nytimes.com/2020/03/16/world/middleeast/israel-coronavirus-cellphone-tracking.html</a> <a href="#fnref:8" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:9" role="doc-endnote">
      <p><a href="https://www.theguardian.com/world/2020/mar/29/revealed-saudis-suspected-of-phone-spying-campaign-in-us">https://www.theguardian.com/world/2020/mar/29/revealed-saudis-suspected-of-phone-spying-campaign-in-us</a> <a href="#fnref:9" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Andy Wang</name></author><summary type="html"><![CDATA[In iOS 26.3, Apple introduced a new privacy feature which limits “precise location” data made available to cellular networks via cell towers. The feature is only available to devices with Apple’s in-house modem introduced in 2025. The announcement1 says https://support.apple.com/en-us/126101 &#8617;]]></summary></entry><entry><title type="html">CAA Footgun</title><link href="https://an.dywa.ng/caa-footgun.html" rel="alternate" type="text/html" title="CAA Footgun" /><published>2024-12-22T00:00:00+00:00</published><updated>2024-12-22T00:00:00+00:00</updated><id>https://an.dywa.ng/caa-footgun</id><content type="html" xml:base="https://an.dywa.ng/caa-footgun.html"><![CDATA[<p>CAA is a DNS record type which specifies the Certificate Authorities who are allowed to issue certificates for a domain.</p>

<p>At my job, we had a CAA record that looked like this</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>example.com CAA 0 issue "letsencrypt.org"
</code></pre></div></div>
<p>This allows Let’s Encrypt to issue <code class="language-plaintext highlighter-rouge">example.com</code> certs and <code class="language-plaintext highlighter-rouge">*.example.com</code> wildcard certs. <em>The <code class="language-plaintext highlighter-rouge">0</code> is a flag used for CA-specific features, we can ignore it.</em></p>

<p>A bit later, we needed another CA to issue both single-domain and wildcard certificates on our domain. Without realising the <code class="language-plaintext highlighter-rouge">issue</code> directive allows for both, someone appended both <code class="language-plaintext highlighter-rouge">issue</code> and <code class="language-plaintext highlighter-rouge">issuewild</code> directives:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>example.com CAA 0 issue     "letsencrypt.org"
            CAA 0 issue     "amazon.com"
            CAA 0 issuewild "amazon.com"
</code></pre></div></div>

<p>A bit redundant, but it looks like it should still work.</p>

<p>…until our existing Let’s Encrypt wildcard certificates suddenly stopped renewing.</p>

<p>Turns out that the <code class="language-plaintext highlighter-rouge">issue</code> directive allows for wildcard issuance <strong>only in the absence</strong> of any <code class="language-plaintext highlighter-rouge">issuewild</code> directive<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>. As soon as an <code class="language-plaintext highlighter-rouge">issuewild</code> directive is added, CAs with only <code class="language-plaintext highlighter-rouge">issue</code> are forbidden from issuing wildcards.</p>

<p>This is a bad design. An additive modification should not remove capabilities of unrelated, existing entries.</p>

<p>On the other hand, suppose you want only one CA to issue only single-domain certificates for your domain, then you must do something like</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>issue     "letsencrypt.org"
issuewild ";"
</code></pre></div></div>

<hr />

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p><a href="https://datatracker.ietf.org/doc/html/rfc8659#section-4.3-3">https://datatracker.ietf.org/doc/html/rfc8659#section-4.3-3</a> <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Andy Wang</name></author><summary type="html"><![CDATA[CAA is a DNS record type which specifies the Certificate Authorities who are allowed to issue certificates for a domain.]]></summary></entry></feed>