<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[TurkTeam | Türk Siber Güvenlik Topluluğu - Web Geliştirme]]></title>
		<link>https://www.turkteam.org/</link>
		<description><![CDATA[TurkTeam | Türk Siber Güvenlik Topluluğu - https://www.turkteam.org]]></description>
		<pubDate>Sun, 25 Oct 2026 18:48:37 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Node.js EOL Sürüm Tuzağı: Node2Shell Sonrası Desteklenen Sürüme Güvenli Geçiş]]></title>
			<link>https://www.turkteam.org/konu-node-js-eol-surum-tuzagi-node2shell-sonrasi-desteklenen-surume-guvenli-gecis.html</link>
			<pubDate>Fri, 23 Oct 2026 11:32:53 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=3">BilgeKagan</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-node-js-eol-surum-tuzagi-node2shell-sonrasi-desteklenen-surume-guvenli-gecis.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=379" loading="lazy"  alt="[Resim: attachment.php?aid=379]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Node.js'in 21 Ekim 2026 güvenlik sürümleri (Node2Shell, CVE-2026-111497 dahil) yalnızca 22.x, 24.x ve 26.x hatlarına geldi. Node.js'in kendi uyarısı net: <span style="font-weight: bold;" class="mycode_b">güvenlik sürümü çıktığında EOL (ömrü dolmuş) sürümler her zaman etkilenmiş kabul edilir</span>. OX Security de 25.x, 23.x ve 20.x ile öncesinin düzeltme almayacağını vurguluyor. Bu konu, eski bir Node sürümünde kalmış projeyi güvenli ve tekrarlanabilir şekilde taşımanın pratik adımlarını anlatıyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Hangi sürüm hattındayım?<br />
</li>
<li>nvm ile yerel geçiş<br />
</li>
<li>.nvmrc ve engines ile sürümü sabitlemek<br />
</li>
<li>Docker ve CI tarafı<br />
</li>
<li>Geçiş sonrası test kontrol listesi<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Envanter</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>node -v
npm -v
# Projede beklenen surum tanimli mi?
cat .nvmrc 2&gt;/dev/null; grep -A2 '"engines"' package.json
# Sunucuda birden fazla node kurulu mu?
which -a node</code></div></div>Kural: tek sayılı hatlar (23, 25) kısa ömürlüdür; üretimde çift sayılı LTS hatlarını (22, 24, 26) tercih edin. Güncel destek takvimi için Node.js'in "Previous Releases" sayfasına bakın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. nvm ile yerel geçiş</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># nvm kurulu varsayiliyor (github.com/nvm-sh/nvm)
nvm ls-remote --lts | tail -5
nvm install 24.22.1
nvm use 24.22.1
nvm alias default 24.22.1
node -v   # v24.22.1</code></div></div>Native modül kullanan projelerde (bcrypt, sharp, sqlite3) node_modules'u silip yeniden kurun; ABI değiştiği için eski derlenmiş modüller çalışmaz.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>rm -rf node_modules
npm ci</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Sürümü sabitlemek</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>echo "24.22.1" &gt; .nvmrc</code></div></div>package.json içinde:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>"engines": { "node": "&gt;=24.22.1 &lt;25" }</code></div></div>.npmrc içine engine-strict=true eklerseniz yanlış sürümde kurulum hata verir. Böylece ekipte biri eski sürümle çalışınca hemen fark edilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Docker ve CI</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Yanlis: yuzen etiket, ne zaman ne gelecegi belirsiz
FROM node:20
# Dogru: yamali surum + sabit dagitim tabani
FROM node:24.22.1-bookworm-slim</code></div></div>Daha da sıkı kontrol isterseniz imajı digest ile sabitleyin (dün bu konuyu ayrıca işlemiştik). CI'da:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># GitHub Actions ornegi
- uses: actions/setup-node@v4
  with:
    node-version-file: .nvmrc</code></div></div>Konteynerde eski imajı yeniden başlatmak yetmez; yeniden build edip deploy edin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Geçiş sonrası test</span></span><br />
<ol type="1" class="mycode_list"><li>Birim ve entegrasyon testleri yeni sürümde geçiyor mu?<br />
</li>
<li>npm audit ve npm outdated çıktısı temiz mi?<br />
</li>
<li>Brotli kullanan yollar (Content-Encoding: br kabul eden body parser, fetch ile çekilen yanıtlar) yeni runtime'da test edildi mi?<br />
</li>
<li>Üretimde node -v gerçekten yeni sürümü gösteriyor mu? (PM2 veya systemd eski binary'yi tutuyor olabilir.)<br />
</li>
</ol>
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>pm2 restart all --update-env &amp;&amp; pm2 describe app | grep "node.js version"</code></div></div><br />
En eski Node sürümünü hangi projede gördünüz ve geçişte en çok ne sorun çıkardı?<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases" target="_blank" rel="noopener" class="mycode_url">https://nodejs.org/en/blog/vulnerability...y-releases</a><br />
</li>
<li><a href="https://nodejs.org/en/about/previous-releases" target="_blank" rel="noopener" class="mycode_url">https://nodejs.org/en/about/previous-releases</a><br />
</li>
<li><a href="https://github.com/nvm-sh/nvm" target="_blank" rel="noopener" class="mycode_url">https://github.com/nvm-sh/nvm</a><br />
</li>
<li><a href="https://www.ox.security/blog/node-js-brotli-decoder-out-of-bounds-write-rce-cve-2026-111497/" target="_blank" rel="noopener" class="mycode_url">https://www.ox.security/blog/node-js-bro...26-111497/</a><br />
</li>
</ul>
<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=379" target="_blank" title="">13-b03-node-eol-nvm.png</a> (Dosya Boyutu: 117.25 KB / İndirme Sayısı: 6)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=379" loading="lazy"  alt="[Resim: attachment.php?aid=379]" class="mycode_img" /></div>
<br />
Selamlar,<br />
<br />
Node.js'in 21 Ekim 2026 güvenlik sürümleri (Node2Shell, CVE-2026-111497 dahil) yalnızca 22.x, 24.x ve 26.x hatlarına geldi. Node.js'in kendi uyarısı net: <span style="font-weight: bold;" class="mycode_b">güvenlik sürümü çıktığında EOL (ömrü dolmuş) sürümler her zaman etkilenmiş kabul edilir</span>. OX Security de 25.x, 23.x ve 20.x ile öncesinin düzeltme almayacağını vurguluyor. Bu konu, eski bir Node sürümünde kalmış projeyi güvenli ve tekrarlanabilir şekilde taşımanın pratik adımlarını anlatıyor.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Konuda anlatılacaklar</span></span><br />
<ol type="1" class="mycode_list"><li>Hangi sürüm hattındayım?<br />
</li>
<li>nvm ile yerel geçiş<br />
</li>
<li>.nvmrc ve engines ile sürümü sabitlemek<br />
</li>
<li>Docker ve CI tarafı<br />
</li>
<li>Geçiş sonrası test kontrol listesi<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">1. Envanter</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>node -v
npm -v
# Projede beklenen surum tanimli mi?
cat .nvmrc 2&gt;/dev/null; grep -A2 '"engines"' package.json
# Sunucuda birden fazla node kurulu mu?
which -a node</code></div></div>Kural: tek sayılı hatlar (23, 25) kısa ömürlüdür; üretimde çift sayılı LTS hatlarını (22, 24, 26) tercih edin. Güncel destek takvimi için Node.js'in "Previous Releases" sayfasına bakın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">2. nvm ile yerel geçiş</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># nvm kurulu varsayiliyor (github.com/nvm-sh/nvm)
nvm ls-remote --lts | tail -5
nvm install 24.22.1
nvm use 24.22.1
nvm alias default 24.22.1
node -v   # v24.22.1</code></div></div>Native modül kullanan projelerde (bcrypt, sharp, sqlite3) node_modules'u silip yeniden kurun; ABI değiştiği için eski derlenmiş modüller çalışmaz.<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>rm -rf node_modules
npm ci</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">3. Sürümü sabitlemek</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>echo "24.22.1" &gt; .nvmrc</code></div></div>package.json içinde:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>"engines": { "node": "&gt;=24.22.1 &lt;25" }</code></div></div>.npmrc içine engine-strict=true eklerseniz yanlış sürümde kurulum hata verir. Böylece ekipte biri eski sürümle çalışınca hemen fark edilir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">4. Docker ve CI</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Yanlis: yuzen etiket, ne zaman ne gelecegi belirsiz
FROM node:20
# Dogru: yamali surum + sabit dagitim tabani
FROM node:24.22.1-bookworm-slim</code></div></div>Daha da sıkı kontrol isterseniz imajı digest ile sabitleyin (dün bu konuyu ayrıca işlemiştik). CI'da:<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># GitHub Actions ornegi
- uses: actions/setup-node@v4
  with:
    node-version-file: .nvmrc</code></div></div>Konteynerde eski imajı yeniden başlatmak yetmez; yeniden build edip deploy edin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">5. Geçiş sonrası test</span></span><br />
<ol type="1" class="mycode_list"><li>Birim ve entegrasyon testleri yeni sürümde geçiyor mu?<br />
</li>
<li>npm audit ve npm outdated çıktısı temiz mi?<br />
</li>
<li>Brotli kullanan yollar (Content-Encoding: br kabul eden body parser, fetch ile çekilen yanıtlar) yeni runtime'da test edildi mi?<br />
</li>
<li>Üretimde node -v gerçekten yeni sürümü gösteriyor mu? (PM2 veya systemd eski binary'yi tutuyor olabilir.)<br />
</li>
</ol>
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code>pm2 restart all --update-env &amp;&amp; pm2 describe app | grep "node.js version"</code></div></div><br />
En eski Node sürümünü hangi projede gördünüz ve geçişte en çok ne sorun çıkardı?<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Bu yazı bilgilendirme ve savunma amaçlıdır. Anlatılan kontrolleri yalnızca kendi sistemlerinizde veya yazılı izinle yapın. İzinsiz erişim, tarama ve sömürü girişimleri TCK 243-245 kapsamında suçtur. TurkTeam white-hat bir topluluktur; çalıntı veri, hesap, combo/log paylaşımı ve hack hizmeti talepleri forum kurallarına aykırıdır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases" target="_blank" rel="noopener" class="mycode_url">https://nodejs.org/en/blog/vulnerability...y-releases</a><br />
</li>
<li><a href="https://nodejs.org/en/about/previous-releases" target="_blank" rel="noopener" class="mycode_url">https://nodejs.org/en/about/previous-releases</a><br />
</li>
<li><a href="https://github.com/nvm-sh/nvm" target="_blank" rel="noopener" class="mycode_url">https://github.com/nvm-sh/nvm</a><br />
</li>
<li><a href="https://www.ox.security/blog/node-js-brotli-decoder-out-of-bounds-write-rce-cve-2026-111497/" target="_blank" rel="noopener" class="mycode_url">https://www.ox.security/blog/node-js-bro...26-111497/</a><br />
</li>
</ul>
<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=379" target="_blank" title="">13-b03-node-eol-nvm.png</a> (Dosya Boyutu: 117.25 KB / İndirme Sayısı: 6)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[npm ci ve Sabit Release'ler: JS Tedarik Zincirinde Tekrarlanabilir Kurulum]]></title>
			<link>https://www.turkteam.org/konu-npm-ci-ve-sabit-release-ler-js-tedarik-zincirinde-tekrarlanabilir-kurulum.html</link>
			<pubDate>Wed, 21 Oct 2026 11:32:37 +0300</pubDate>
			<dc:creator><![CDATA[<a href="https://www.turkteam.org/member.php?action=profile&uid=4">KulTigin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.turkteam.org/konu-npm-ci-ve-sabit-release-ler-js-tedarik-zincirinde-tekrarlanabilir-kurulum.html</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=335" loading="lazy"  alt="[Resim: attachment.php?aid=335]" class="mycode_img" /></div>
<br />
Selam,<br />
<br />
Ekim 2026'da OVHcloud CLI release'lerinin zehirlenmesi, "CI yeşil ama artifact değişti" sınıfını tekrar gündeme getirdi. JavaScript tarafında günlük savunma: npm ci, kilit dosyası ve mümkünse immutable releases. Bu yazı pratik alışkanlık listesi.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">npm install vs npm ci</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">npm install</span>: lock'u güncelleyebilir, sürpriz minor/patch alabilir<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">npm ci</span>: temiz kurulum; package-lock.json / npm-shrinkwrap.json ile birebir; CI için tasarlandı<br />
</li>
</ul>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># CI job iskeleti
npm ci --ignore-scripts   # mümkünse; postinstall riskini azaltır
npm test
# scripts lazımsa: önce audit, sonra bilerek çalıştır</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">GitHub immutable releases</span></span><br />
GitHub dokümantasyonundaki Immutable releases, yayımlanmış release asset'lerinin sonradan değiştirilmesini engellemeye yardımcı olur. OVHcloud olayında immutability kapalı olduğu için privileged hesap mevcut release'leri değiştirebildi. Org ayarlarınızda bunu açın; imzalama (Sigstore) ekleyin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ek kontroller</span></span><ul class="mycode_list"><li>package-lock'u commit'leyin; --no-package-lock kullanmayın<br />
</li>
<li>.npmrc'de audit=true; kritik yollarda --dry-run<br />
</li>
<li>Özel registry / Verdaccio ile internal mirror<br />
</li>
<li>Dependabot/Renovate + insan incelemesi<br />
</li>
<li>postinstall çalıştıran paketleri gözden geçirin<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Başkalarının paketlerine zararlı kod enjekte etmek suçtur. Bu yazı savunma içindir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://docs.npmjs.com/cli/v11/commands/npm-ci" target="_blank" rel="noopener" class="mycode_url">https://docs.npmjs.com/cli/v11/commands/npm-ci</a><br />
</li>
<li><a href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases" target="_blank" rel="noopener" class="mycode_url">https://docs.github.com/en/code-security...e-releases</a><br />
</li>
<li><a href="https://www.bleepingcomputer.com/news/security/ovhcloud-cli-releases-backdoored-on-github-to-steal-developer-secrets/" target="_blank" rel="noopener" class="mycode_url">https://www.bleepingcomputer.com/news/se...r-secrets/</a><br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Monorepo notu</span></span><br />
Workspaces kullanıyorsanız kökte npm ci davranışını dokümante edin. Private paketler için kimlik bilgisini CI secret'tan verin; laptop'taki .npmrc'yi paylaşmayın. SBOM (cyclonedx) üretmeyi release job'una ekleyin.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulamada sık gördüğüm hatalar</span></span><br />
Birçok ekip yamayı "planlandı" diye işaretleyip internete açık yüzeyde günlerce bekletiyor. İkinci sık hata: yalnızca CVE numarasına bakıp zincir etkisini görmemek. Üçüncü hata: yama sonrası log ve dosya bütünlüğüne bakmamak; oysa yama öncesi sömürü olmuş olabilir. Bu üç noktayı kendi kontrol listenize eklemenizi öneririm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ekip içi iletişim şablonu</span></span><br />
Yönetime veya müşteriye yazarken teknik jargonu azaltın: hangi varlık etkilendi, internete açık mı, yama var mı, geçici azaltma ne, doğrulama nasıl yapılacak. Tek paragrafta risk + eylem + sahiplik yazmak, uzun CVE özetinden daha hızlı karar aldırır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab not defteri</span></span><br />
Bu konuyu kendi defterime şu başlıklarla işliyorum: tarih, kaynak URL, etkilenen ürün/sürüm, internete açık mı, yama komutu, geri alma planı, IOC listesi, kime haber verildi. Siz de benzer basit bir şablon tutarsanız bir ay sonra "ne yapmıştık?" sorusu cevapsız kalmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İzleme ve doğrulama</span></span><br />
Değişiklikten sonra en az bir negatif ve bir pozitif kontrol tanımlayın. Negatif: alarm boş yere düşmemeli. Pozitif: bilinen kötü örneği veya beklenen log satırını yakalamalı. İkisini de kaydedin; aksi halde "sanırım düzeldi" ile yetinirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Özetle: kaynağı okuyun, kendi envanterinize bağlayın, yama veya azaltmayı uygulayın, sonra doğrulayın. TurkTeam'de yorumlarda kendi ortamınızdan (ürün adı ve sürüm yeter, hassas IP yazmayın) kısa deneyim paylaşırsanız herkes faydalanır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Adım adım kontrol listesi (kopyala-yapıştır)</span></span><br />
<ol type="1" class="mycode_list"><li>Kaynak duyuruyu ve varsa üretici güvenlik sayfasını arşivleyin (PDF/HTML).<br />
</li>
<li>Envanterde etkilenen ürün var mı diye CMDB / agent raporu / netscan ile bakın.<br />
</li>
<li>İnternete açık mı, yoksa yalnızca iç ağda mı? Buna göre SLA seçin.<br />
</li>
<li>Yama veya yapılandırma azaltmasını stagingde deneyin.<br />
</li>
<li>Üretim penceresinde uygulayın; değişiklik kaydı açın.<br />
</li>
<li>Servis sağlık kontrolü + log doğrulaması yapın.<br />
</li>
<li>Gerekliyse IOC avı veya compromise assessment planlayın.<br />
</li>
<li>Kapanış notunu yazın: sürüm, tarih, kim onayladı.<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Sadece okumak yeter mi?</span> Hayır. Okuduktan sonra envanter satırına bağlanmayan bilgi operasyonel değildir.<br />
<span style="font-weight: bold;" class="mycode_b">PoC çalıştırmalı mıyım?</span> Yalnızca izole lab ve yazılı izinle. İnternette rastgele deneme hem etik dışı hem yasadışı olabilir.<br />
<span style="font-weight: bold;" class="mycode_b">WAF / EDR tek başına kurtarır mı?</span> Katmanlı savunma işe yarar ama yamanın yerini tutmaz; özellikle kimlik doğrulamasız RCE sınıflarında.<br />
<span style="font-weight: bold;" class="mycode_b">Ne zaman yönetime çıkmalıyım?</span> İnternete açık kritik yüzey, aktif sömürü istihbaratı veya veri sızıntısı şüphesi varsa gecikmeden.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek komut defteri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tarih damgası ve ortam notu
date -Is
hostnamectl 2&gt;/dev/null | head -5 || true
# Ağ dinleme özeti (lab)
ss -lntp | head -30
# Son reboot / güncelleme ipucu (systemd)
who -b 2&gt;/dev/null || true</code></div></div>Bu komutlar tanı koymaz; değişiklik öncesi/sonrası basline almak için kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlgili TurkTeam bölümleri</span></span><br />
Bu yazıyı okuduktan sonra aynı kategorideki komşu konulara ve Soru-Cevap bölümüne kendi lab çıktınızı (hassas veri olmadan) taşıyabilirsiniz. Kısa ekran görüntüsü veya komut çıktısı, uzun teoriden daha çok işe yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapanış ve yasal çerçeve</span></span><br />
TurkTeam white-hat bir topluluktur. Anlatılan teknikler eğitim, savunma ve izinli test içindir. Başkalarının sistemlerinde izinsiz tarama, sömürü, veri çalma veya "hack hizmeti" sunmak forum kurallarına ve TCK 243, 244, 245 maddelerine aykırıdır. Kendi laboratuvarınızı izolasyonla kurun; üretim verisi kullanmayın. Kaynaklardaki bağlantıları birincil referans kabul edin; bu yazı özet ve yol göstericidir, üretici duyurusunun yerini tutmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kişisel deneyim notu</span></span><br />
Ben benzer konuları işlerken önce resmi duyuruyu iki kez okuyup sonra labda en küçük yeniden üretilebilir adımı arıyorum. Yeniden üretemiyorsam bile envanter ve yama doğrulamasını aynı gün bitirmeye çalışıyorum. Siz de "bugün tek iş" diye bir satır seçin: ya yamayı uygulayın ya da etkilenen varlık olmadığını kanıtlayın. İkisi de geçerli kapanıştır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Okuma listesi</span></span><ul class="mycode_list"><li>Üretici / araştırmacı birincil yazısı (kaynakçada)<br />
</li>
<li>CISA KEV veya CERT duyurusu varsa o<br />
</li>
<li>Kendi iç runbook'unuzun ilgili maddesi<br />
</li>
</ul>
Üçünden fazlasını aynı anda açmak yerine birini bitirip not alın; aksi halde tab kaybı başlar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kısa senaryo</span></span><br />
Diyelim ki bu konuyu pazartesi sabah toplantısında anlatacaksınız: bir slaytta risk, bir slaytta etkilenen varlık sorusu, bir slaytta bugün yapılacak tek eylem. Üç slayttan fazlası dikkat dağıtır. Toplantı bitince eylem sahibinin adını ticket'a yazın.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=335" target="_blank" title="">18-k03-npmci.png</a> (Dosya Boyutu: 110.99 KB / İndirme Sayısı: 13)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><img src="https://www.turkteam.org/attachment.php?aid=335" loading="lazy"  alt="[Resim: attachment.php?aid=335]" class="mycode_img" /></div>
<br />
Selam,<br />
<br />
Ekim 2026'da OVHcloud CLI release'lerinin zehirlenmesi, "CI yeşil ama artifact değişti" sınıfını tekrar gündeme getirdi. JavaScript tarafında günlük savunma: npm ci, kilit dosyası ve mümkünse immutable releases. Bu yazı pratik alışkanlık listesi.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">npm install vs npm ci</span></span><ul class="mycode_list"><li><span style="font-weight: bold;" class="mycode_b">npm install</span>: lock'u güncelleyebilir, sürpriz minor/patch alabilir<br />
</li>
<li><span style="font-weight: bold;" class="mycode_b">npm ci</span>: temiz kurulum; package-lock.json / npm-shrinkwrap.json ile birebir; CI için tasarlandı<br />
</li>
</ul>
<br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># CI job iskeleti
npm ci --ignore-scripts   # mümkünse; postinstall riskini azaltır
npm test
# scripts lazımsa: önce audit, sonra bilerek çalıştır</code></div></div><br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">GitHub immutable releases</span></span><br />
GitHub dokümantasyonundaki Immutable releases, yayımlanmış release asset'lerinin sonradan değiştirilmesini engellemeye yardımcı olur. OVHcloud olayında immutability kapalı olduğu için privileged hesap mevcut release'leri değiştirebildi. Org ayarlarınızda bunu açın; imzalama (Sigstore) ekleyin.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ek kontroller</span></span><ul class="mycode_list"><li>package-lock'u commit'leyin; --no-package-lock kullanmayın<br />
</li>
<li>.npmrc'de audit=true; kritik yollarda --dry-run<br />
</li>
<li>Özel registry / Verdaccio ile internal mirror<br />
</li>
<li>Dependabot/Renovate + insan incelemesi<br />
</li>
<li>postinstall çalıştıran paketleri gözden geçirin<br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Yasal uyarı</span></span><br />
Başkalarının paketlerine zararlı kod enjekte etmek suçtur. Bu yazı savunma içindir.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kaynaklar</span></span><ul class="mycode_list"><li><a href="https://docs.npmjs.com/cli/v11/commands/npm-ci" target="_blank" rel="noopener" class="mycode_url">https://docs.npmjs.com/cli/v11/commands/npm-ci</a><br />
</li>
<li><a href="https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases" target="_blank" rel="noopener" class="mycode_url">https://docs.github.com/en/code-security...e-releases</a><br />
</li>
<li><a href="https://www.bleepingcomputer.com/news/security/ovhcloud-cli-releases-backdoored-on-github-to-steal-developer-secrets/" target="_blank" rel="noopener" class="mycode_url">https://www.bleepingcomputer.com/news/se...r-secrets/</a><br />
</li>
</ul>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Monorepo notu</span></span><br />
Workspaces kullanıyorsanız kökte npm ci davranışını dokümante edin. Private paketler için kimlik bilgisini CI secret'tan verin; laptop'taki .npmrc'yi paylaşmayın. SBOM (cyclonedx) üretmeyi release job'una ekleyin.<br />
<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Uygulamada sık gördüğüm hatalar</span></span><br />
Birçok ekip yamayı "planlandı" diye işaretleyip internete açık yüzeyde günlerce bekletiyor. İkinci sık hata: yalnızca CVE numarasına bakıp zincir etkisini görmemek. Üçüncü hata: yama sonrası log ve dosya bütünlüğüne bakmamak; oysa yama öncesi sömürü olmuş olabilir. Bu üç noktayı kendi kontrol listenize eklemenizi öneririm.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Ekip içi iletişim şablonu</span></span><br />
Yönetime veya müşteriye yazarken teknik jargonu azaltın: hangi varlık etkilendi, internete açık mı, yama var mı, geçici azaltma ne, doğrulama nasıl yapılacak. Tek paragrafta risk + eylem + sahiplik yazmak, uzun CVE özetinden daha hızlı karar aldırır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Lab not defteri</span></span><br />
Bu konuyu kendi defterime şu başlıklarla işliyorum: tarih, kaynak URL, etkilenen ürün/sürüm, internete açık mı, yama komutu, geri alma planı, IOC listesi, kime haber verildi. Siz de benzer basit bir şablon tutarsanız bir ay sonra "ne yapmıştık?" sorusu cevapsız kalmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İzleme ve doğrulama</span></span><br />
Değişiklikten sonra en az bir negatif ve bir pozitif kontrol tanımlayın. Negatif: alarm boş yere düşmemeli. Pozitif: bilinen kötü örneği veya beklenen log satırını yakalamalı. İkisini de kaydedin; aksi halde "sanırım düzeldi" ile yetinirsiniz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sonuç</span></span><br />
Özetle: kaynağı okuyun, kendi envanterinize bağlayın, yama veya azaltmayı uygulayın, sonra doğrulayın. TurkTeam'de yorumlarda kendi ortamınızdan (ürün adı ve sürüm yeter, hassas IP yazmayın) kısa deneyim paylaşırsanız herkes faydalanır.<br />
<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Adım adım kontrol listesi (kopyala-yapıştır)</span></span><br />
<ol type="1" class="mycode_list"><li>Kaynak duyuruyu ve varsa üretici güvenlik sayfasını arşivleyin (PDF/HTML).<br />
</li>
<li>Envanterde etkilenen ürün var mı diye CMDB / agent raporu / netscan ile bakın.<br />
</li>
<li>İnternete açık mı, yoksa yalnızca iç ağda mı? Buna göre SLA seçin.<br />
</li>
<li>Yama veya yapılandırma azaltmasını stagingde deneyin.<br />
</li>
<li>Üretim penceresinde uygulayın; değişiklik kaydı açın.<br />
</li>
<li>Servis sağlık kontrolü + log doğrulaması yapın.<br />
</li>
<li>Gerekliyse IOC avı veya compromise assessment planlayın.<br />
</li>
<li>Kapanış notunu yazın: sürüm, tarih, kim onayladı.<br />
</li>
</ol>
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Sık sorulanlar</span></span><br />
<span style="font-weight: bold;" class="mycode_b">Sadece okumak yeter mi?</span> Hayır. Okuduktan sonra envanter satırına bağlanmayan bilgi operasyonel değildir.<br />
<span style="font-weight: bold;" class="mycode_b">PoC çalıştırmalı mıyım?</span> Yalnızca izole lab ve yazılı izinle. İnternette rastgele deneme hem etik dışı hem yasadışı olabilir.<br />
<span style="font-weight: bold;" class="mycode_b">WAF / EDR tek başına kurtarır mı?</span> Katmanlı savunma işe yarar ama yamanın yerini tutmaz; özellikle kimlik doğrulamasız RCE sınıflarında.<br />
<span style="font-weight: bold;" class="mycode_b">Ne zaman yönetime çıkmalıyım?</span> İnternete açık kritik yüzey, aktif sömürü istihbaratı veya veri sızıntısı şüphesi varsa gecikmeden.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Örnek komut defteri</span></span><br />
<div class="codeblock"><div class="title">Kod:</div><div class="body" dir="ltr"><code># Tarih damgası ve ortam notu
date -Is
hostnamectl 2&gt;/dev/null | head -5 || true
# Ağ dinleme özeti (lab)
ss -lntp | head -30
# Son reboot / güncelleme ipucu (systemd)
who -b 2&gt;/dev/null || true</code></div></div>Bu komutlar tanı koymaz; değişiklik öncesi/sonrası basline almak için kullanın.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">İlgili TurkTeam bölümleri</span></span><br />
Bu yazıyı okuduktan sonra aynı kategorideki komşu konulara ve Soru-Cevap bölümüne kendi lab çıktınızı (hassas veri olmadan) taşıyabilirsiniz. Kısa ekran görüntüsü veya komut çıktısı, uzun teoriden daha çok işe yarar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kapanış ve yasal çerçeve</span></span><br />
TurkTeam white-hat bir topluluktur. Anlatılan teknikler eğitim, savunma ve izinli test içindir. Başkalarının sistemlerinde izinsiz tarama, sömürü, veri çalma veya "hack hizmeti" sunmak forum kurallarına ve TCK 243, 244, 245 maddelerine aykırıdır. Kendi laboratuvarınızı izolasyonla kurun; üretim verisi kullanmayın. Kaynaklardaki bağlantıları birincil referans kabul edin; bu yazı özet ve yol göstericidir, üretici duyurusunun yerini tutmaz.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kişisel deneyim notu</span></span><br />
Ben benzer konuları işlerken önce resmi duyuruyu iki kez okuyup sonra labda en küçük yeniden üretilebilir adımı arıyorum. Yeniden üretemiyorsam bile envanter ve yama doğrulamasını aynı gün bitirmeye çalışıyorum. Siz de "bugün tek iş" diye bir satır seçin: ya yamayı uygulayın ya da etkilenen varlık olmadığını kanıtlayın. İkisi de geçerli kapanıştır.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Okuma listesi</span></span><ul class="mycode_list"><li>Üretici / araştırmacı birincil yazısı (kaynakçada)<br />
</li>
<li>CISA KEV veya CERT duyurusu varsa o<br />
</li>
<li>Kendi iç runbook'unuzun ilgili maddesi<br />
</li>
</ul>
Üçünden fazlasını aynı anda açmak yerine birini bitirip not alın; aksi halde tab kaybı başlar.<br />
<br />
<span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Kısa senaryo</span></span><br />
Diyelim ki bu konuyu pazartesi sabah toplantısında anlatacaksınız: bir slaytta risk, bir slaytta etkilenen varlık sorusu, bir slaytta bugün yapılacak tek eylem. Üç slayttan fazlası dikkat dağıtır. Toplantı bitince eylem sahibinin adını ticket'a yazın.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://cdn.turkteam.org/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=335" target="_blank" title="">18-k03-npmci.png</a> (Dosya Boyutu: 110.99 KB / İndirme Sayısı: 13)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
	</channel>
</rss>